132 lines
6.0 KiB
Python
132 lines
6.0 KiB
Python
from flask import Blueprint, request, jsonify
|
|
from flask_jwt_extended import jwt_required
|
|
from flasgger.utils import swag_from
|
|
from models.user import db
|
|
from models.settings_notificacoes import SettingsNotificacoes
|
|
|
|
settings_notificacoes_bp = Blueprint('settings_notificacoes', __name__, url_prefix='/settings_notificacoes')
|
|
|
|
# Criar configuração de notificações
|
|
@settings_notificacoes_bp.route('/', methods=['POST'])
|
|
@jwt_required()
|
|
@swag_from('../docs/settings_notificacoes/create.yml')
|
|
def create_settings_notificacoes():
|
|
data = request.get_json()
|
|
|
|
notificar_esquecimento_ponto = data.get('notificar_esquecimento_ponto', False)
|
|
notificar_horas_extras = data.get('notificar_horas_extras', False)
|
|
notificar_solicitacao_pendentes = data.get('notificar_solicitacao_pendentes', False)
|
|
notificar_banco_horas = data.get('notificar_banco_horas', False)
|
|
notificar_gestor = data.get('notificar_gestor', False)
|
|
relatorios_email = data.get('relatorios_email', False)
|
|
relatorios_diario_gestor = data.get('relatorios_diario_gestor', False)
|
|
relatorios_semanal_colaboradores = data.get('relatorios_semanal_colaboradores', False)
|
|
service_instance_id = data.get('service_instance_id')
|
|
|
|
settings = SettingsNotificacoes(
|
|
notificar_esquecimento_ponto=notificar_esquecimento_ponto,
|
|
notificar_horas_extras=notificar_horas_extras,
|
|
notificar_solicitacao_pendentes=notificar_solicitacao_pendentes,
|
|
notificar_banco_horas=notificar_banco_horas,
|
|
notificar_gestor=notificar_gestor,
|
|
relatorios_email=relatorios_email,
|
|
relatorios_diario_gestor=relatorios_diario_gestor,
|
|
relatorios_semanal_colaboradores=relatorios_semanal_colaboradores,
|
|
service_instance_id=service_instance_id
|
|
)
|
|
|
|
db.session.add(settings)
|
|
db.session.commit()
|
|
|
|
return jsonify({'message': 'Configuração de notificações criada com sucesso', 'settings_id': settings.id}), 201
|
|
|
|
# Atualizar configuração
|
|
@settings_notificacoes_bp.route('/<int:settings_id>', methods=['PUT'])
|
|
@jwt_required()
|
|
@swag_from('../docs/settings_notificacoes/update.yml')
|
|
def update_settings_notificacoes(settings_id):
|
|
data = request.get_json()
|
|
settings = SettingsNotificacoes.query.get_or_404(settings_id)
|
|
|
|
if 'notificar_esquecimento_ponto' in data:
|
|
settings.notificar_esquecimento_ponto = data['notificar_esquecimento_ponto']
|
|
if 'notificar_horas_extras' in data:
|
|
settings.notificar_horas_extras = data['notificar_horas_extras']
|
|
if 'notificar_solicitacao_pendentes' in data:
|
|
settings.notificar_solicitacao_pendentes = data['notificar_solicitacao_pendentes']
|
|
if 'notificar_banco_horas' in data:
|
|
settings.notificar_banco_horas = data['notificar_banco_horas']
|
|
if 'notificar_gestor' in data:
|
|
settings.notificar_gestor = data['notificar_gestor']
|
|
if 'relatorios_email' in data:
|
|
settings.relatorios_email = data['relatorios_email']
|
|
if 'relatorios_diario_gestor' in data:
|
|
settings.relatorios_diario_gestor = data['relatorios_diario_gestor']
|
|
if 'relatorios_semanal_colaboradores' in data:
|
|
settings.relatorios_semanal_colaboradores = data['relatorios_semanal_colaboradores']
|
|
if 'service_instance_id' in data:
|
|
from models import ServiceInstance
|
|
ServiceInstance.query.get_or_404(data['service_instance_id'])
|
|
settings.service_instance_id = data['service_instance_id']
|
|
|
|
db.session.commit()
|
|
return jsonify({'message': 'Configuração de notificações atualizada com sucesso'}), 200
|
|
|
|
# Listar configurações
|
|
@settings_notificacoes_bp.route('/', methods=['GET'])
|
|
@jwt_required()
|
|
@swag_from('../docs/settings_notificacoes/list.yml')
|
|
def list_settings_notificacoes():
|
|
service_instance_id = request.args.get('service_instance_id')
|
|
|
|
if service_instance_id:
|
|
settings_list = SettingsNotificacoes.query.filter_by(service_instance_id=service_instance_id).all()
|
|
else:
|
|
settings_list = SettingsNotificacoes.query.all()
|
|
|
|
return jsonify({
|
|
'settings_notificacoes_list': [
|
|
{
|
|
'id': s.id,
|
|
'notificar_esquecimento_ponto': s.notificar_esquecimento_ponto,
|
|
'notificar_horas_extras': s.notificar_horas_extras,
|
|
'notificar_solicitacao_pendentes': s.notificar_solicitacao_pendentes,
|
|
'notificar_banco_horas': s.notificar_banco_horas,
|
|
'notificar_gestor': s.notificar_gestor,
|
|
'relatorios_email': s.relatorios_email,
|
|
'relatorios_diario_gestor': s.relatorios_diario_gestor,
|
|
'relatorios_semanal_colaboradores': s.relatorios_semanal_colaboradores,
|
|
'service_instance_id': s.service_instance_id
|
|
} for s in settings_list
|
|
]
|
|
}), 200
|
|
|
|
# Obter por ID
|
|
@settings_notificacoes_bp.route('/<int:id>', methods=['GET'])
|
|
@jwt_required()
|
|
@swag_from('../docs/settings_notificacoes/get.yml')
|
|
def get_settings_notificacoes_by_id(id):
|
|
s = SettingsNotificacoes.query.get_or_404(id)
|
|
return jsonify({
|
|
'id': s.id,
|
|
'notificar_esquecimento_ponto': s.notificar_esquecimento_ponto,
|
|
'notificar_horas_extras': s.notificar_horas_extras,
|
|
'notificar_solicitacao_pendentes': s.notificar_solicitacao_pendentes,
|
|
'notificar_banco_horas': s.notificar_banco_horas,
|
|
'notificar_gestor': s.notificar_gestor,
|
|
'relatorios_email': s.relatorios_email,
|
|
'relatorios_diario_gestor': s.relatorios_diario_gestor,
|
|
'relatorios_semanal_colaboradores': s.relatorios_semanal_colaboradores,
|
|
'service_instance_id': s.service_instance_id
|
|
}), 200
|
|
|
|
# Deletar configuração
|
|
@settings_notificacoes_bp.route('/<int:id>', methods=['DELETE'])
|
|
@jwt_required()
|
|
@swag_from('../docs/settings_notificacoes/delete.yml')
|
|
def delete_settings_notificacoes(id):
|
|
s = SettingsNotificacoes.query.get_or_404(id)
|
|
db.session.delete(s)
|
|
db.session.commit()
|
|
return jsonify({'message': 'Configuração deletada com sucesso.'}), 200
|