123 lines
4.1 KiB
Python
123 lines
4.1 KiB
Python
from flask import Blueprint, request, jsonify
|
|
from flask_jwt_extended import jwt_required
|
|
from flasgger.utils import swag_from
|
|
from models.holiday import Holiday
|
|
from models.user import db
|
|
from models.service_instance import ServiceInstance
|
|
|
|
holiday_bp = Blueprint('holiday', __name__, url_prefix='/holiday')
|
|
|
|
# Criar feriado
|
|
@holiday_bp.route('/', methods=['POST'])
|
|
@jwt_required()
|
|
@swag_from('../docs/holiday/create.yml')
|
|
def create_holiday():
|
|
data = request.get_json()
|
|
name = data.get('name')
|
|
type = data.get('type')
|
|
date = data.get('date')
|
|
estado = data.get('estado')
|
|
municipio = data.get('municipio')
|
|
parent_id = data.get('parent_id')
|
|
adicional_he = data.get('adicional_he')
|
|
recorrente = data.get('recorrente', True) # Default True se não enviado
|
|
service_instance_id = data.get('service_instance_id')
|
|
|
|
holiday = Holiday(
|
|
name=name,
|
|
type=type,
|
|
date=date,
|
|
estado=estado,
|
|
municipio=municipio,
|
|
parent_id=parent_id,
|
|
service_instance_id=service_instance_id,
|
|
recorrente=recorrente,
|
|
adicional_he=adicional_he,
|
|
)
|
|
|
|
db.session.add(holiday)
|
|
db.session.commit()
|
|
|
|
return jsonify({'message': 'Feriado criado com sucesso', 'holiday_id': holiday.id}), 201
|
|
|
|
# Atualizar feriado
|
|
@holiday_bp.route('/<int:holiday_id>', methods=['PUT'])
|
|
@jwt_required()
|
|
@swag_from('../docs/holiday/update.yml')
|
|
def update_holiday(holiday_id):
|
|
data = request.get_json()
|
|
holiday = Holiday.query.get_or_404(holiday_id)
|
|
|
|
if 'name' in data:
|
|
holiday.name = data['name']
|
|
if 'date' in data:
|
|
holiday.date = data['date']
|
|
if 'type' in data:
|
|
holiday.type = data['type']
|
|
if 'estado' in data:
|
|
holiday.estado = data['estado']
|
|
if 'municipio' in data:
|
|
holiday.municipio = data['municipio']
|
|
if 'service_instance_id' in data:
|
|
# Validação para garantir que a instância de serviço existe
|
|
ServiceInstance.query.get_or_404(data['service_instance_id'])
|
|
holiday.service_instance_id = data['service_instance_id']
|
|
|
|
db.session.commit()
|
|
return jsonify({'message': 'Feriado atualizado com sucesso'}), 200
|
|
|
|
# Listar feriados
|
|
@holiday_bp.route('/', methods=['GET'])
|
|
@jwt_required()
|
|
@swag_from('../docs/holiday/list.yml')
|
|
def list_holiday():
|
|
service_instance_id = request.args.get('service_instance_id')
|
|
|
|
if service_instance_id:
|
|
holidays = Holiday.query.filter_by(service_instance_id=service_instance_id).all()
|
|
else:
|
|
holidays = Holiday.query.all()
|
|
return jsonify({
|
|
'holiday_list': [{
|
|
'id': holiday.id,
|
|
'name': holiday.name,
|
|
'estado': holiday.estado,
|
|
'municipio': holiday.municipio,
|
|
'type': holiday.type,
|
|
'date': holiday.date.strftime("%Y-%m-%d") if holiday.date else None,
|
|
'parent_id': holiday.parent_id,
|
|
'service_instance_id': holiday.service_instance_id,
|
|
'recorrente': holiday.recorrente,
|
|
'adicional_he': holiday.adicional_he
|
|
} for holiday in holidays]
|
|
}), 200
|
|
|
|
# Buscar feriado por ID
|
|
@holiday_bp.route('/<int:holiday_id>', methods=['GET'])
|
|
@jwt_required()
|
|
@swag_from('../docs/holiday/get.yml')
|
|
def get_holiday_id(holiday_id):
|
|
holiday = Holiday.query.get_or_404(holiday_id)
|
|
|
|
return jsonify({
|
|
'id': holiday.id,
|
|
'name': holiday.name,
|
|
'estado': holiday.estado,
|
|
'municipio': holiday.municipio,
|
|
'type': holiday.type,
|
|
'date': holiday.date.strftime("%Y-%m-%d") if holiday.date else None,
|
|
'parent_id': holiday.parent_id,
|
|
'service_instance_id': holiday.service_instance_id
|
|
}), 200
|
|
|
|
# Deletar feriado
|
|
@holiday_bp.route('/<int:holiday_id>', methods=['DELETE'])
|
|
@jwt_required()
|
|
@swag_from('../docs/holiday/delete.yml')
|
|
def delete_holiday(holiday_id):
|
|
holiday = Holiday.query.get_or_404(holiday_id)
|
|
|
|
db.session.delete(holiday)
|
|
db.session.commit()
|
|
return jsonify({'message': 'Feriado deletado com sucesso'}), 200
|