141 lines
6.3 KiB
Python
141 lines
6.3 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_gerais import SettingsGerais
|
|
|
|
settings_gerais_bp = Blueprint('settings_gerais', __name__, url_prefix='/settings_gerais')
|
|
|
|
# Criar configurações gerais
|
|
@settings_gerais_bp.route('/', methods=['POST'])
|
|
@jwt_required()
|
|
@swag_from('../docs/settings_gerais/create.yml')
|
|
def create_settings_gerais():
|
|
data = request.get_json()
|
|
tolerancia_entrada = data.get('tolerancia_entrada')
|
|
tolerancia_saida = data.get('tolerancia_saida')
|
|
limite_diario_he = data.get('limite_diario_he')
|
|
limite_mensal_he = data.get('limite_mensal_he')
|
|
limite_banco_horas_positivo = data.get('limite_banco_horas_positivo')
|
|
limite_banco_horas_negativo = data.get('limite_banco_horas_negativo')
|
|
validacao_reconhecimento_facial = data.get('validacao_reconhecimento_facial', False)
|
|
registro_remoto = data.get('registro_remoto', False)
|
|
ajuste_colaborador = data.get('ajuste_colaborador', False)
|
|
dias_aprovacao_automatica = data.get('dias_aprovacao_automatica')
|
|
service_instance_id = data.get('service_instance_id')
|
|
|
|
settings = SettingsGerais(
|
|
tolerancia_entrada=tolerancia_entrada,
|
|
tolerancia_saida=tolerancia_saida,
|
|
limite_diario_he=limite_diario_he,
|
|
limite_mensal_he=limite_mensal_he,
|
|
limite_banco_horas_positivo=limite_banco_horas_positivo,
|
|
limite_banco_horas_negativo=limite_banco_horas_negativo,
|
|
validacao_reconhecimento_facial=validacao_reconhecimento_facial,
|
|
registro_remoto=registro_remoto,
|
|
ajuste_colaborador=ajuste_colaborador,
|
|
dias_aprovacao_automatica=dias_aprovacao_automatica,
|
|
service_instance_id=service_instance_id
|
|
)
|
|
|
|
db.session.add(settings)
|
|
db.session.commit()
|
|
|
|
return jsonify({'message': 'Configuração criada com sucesso', 'settings_id': settings.id}), 201
|
|
|
|
# Atualizar configurações gerais
|
|
@settings_gerais_bp.route('/<int:settings_id>', methods=['PUT'])
|
|
@jwt_required()
|
|
@swag_from('../docs/settings_gerais/update.yml')
|
|
def update_settings_gerais(settings_id):
|
|
data = request.get_json()
|
|
settings = SettingsGerais.query.get_or_404(settings_id)
|
|
|
|
if 'tolerancia_entrada' in data:
|
|
settings.tolerancia_entrada = data['tolerancia_entrada']
|
|
if 'tolerancia_saida' in data:
|
|
settings.tolerancia_saida = data['tolerancia_saida']
|
|
if 'limite_diario_he' in data:
|
|
settings.limite_diario_he = data['limite_diario_he']
|
|
if 'limite_mensal_he' in data:
|
|
settings.limite_mensal_he = data['limite_mensal_he']
|
|
if 'limite_banco_horas_positivo' in data:
|
|
settings.limite_banco_horas_positivo = data['limite_banco_horas_positivo']
|
|
if 'limite_banco_horas_negativo' in data:
|
|
settings.limite_banco_horas_negativo = data['limite_banco_horas_negativo']
|
|
if 'validacao_reconhecimento_facial' in data:
|
|
settings.validacao_reconhecimento_facial = data['validacao_reconhecimento_facial']
|
|
if 'registro_remoto' in data:
|
|
settings.registro_remoto = data['registro_remoto']
|
|
if 'ajuste_colaborador' in data:
|
|
settings.ajuste_colaborador = data['ajuste_colaborador']
|
|
if 'dias_aprovacao_automatica' in data:
|
|
settings.dias_aprovacao_automatica = data['dias_aprovacao_automatica']
|
|
if 'service_instance_id' in data:
|
|
# Verifica se a nova instância de serviço existe
|
|
from models import ServiceInstance # Evita import circular se necessário
|
|
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 atualizada com sucesso'}), 200
|
|
|
|
# Listar configurações gerais
|
|
@settings_gerais_bp.route('/', methods=['GET'])
|
|
@jwt_required()
|
|
@swag_from('../docs/settings_gerais/list.yml')
|
|
def list_settings_gerais():
|
|
service_instance_id = request.args.get('service_instance_id')
|
|
|
|
if service_instance_id:
|
|
settings_list = SettingsGerais.query.filter_by(service_instance_id=service_instance_id).all()
|
|
else:
|
|
settings_list = SettingsGerais.query.all()
|
|
|
|
return jsonify({
|
|
'settings_gerais_list': [{
|
|
'id': settings.id,
|
|
'tolerancia_entrada': settings.tolerancia_entrada,
|
|
'tolerancia_saida': settings.tolerancia_saida,
|
|
'limite_diario_he': settings.limite_diario_he,
|
|
'limite_mensal_he': settings.limite_mensal_he,
|
|
'limite_banco_horas_positivo': settings.limite_banco_horas_positivo,
|
|
'limite_banco_horas_negativo': settings.limite_banco_horas_negativo,
|
|
'validacao_reconhecimento_facial': settings.validacao_reconhecimento_facial,
|
|
'registro_remoto': settings.registro_remoto,
|
|
'ajuste_colaborador': settings.ajuste_colaborador,
|
|
'dias_aprovacao_automatica': settings.dias_aprovacao_automatica,
|
|
'service_instance_id': settings.service_instance_id
|
|
} for settings in settings_list]
|
|
}), 200
|
|
|
|
|
|
@settings_gerais_bp.route('/<int:id>', methods=['GET'])
|
|
@jwt_required()
|
|
@swag_from('../docs/settings_gerais/get.yml')
|
|
def get_settings_by_id(id):
|
|
s = SettingsGerais.query.get_or_404(id)
|
|
return jsonify({
|
|
'id': s.id,
|
|
'tolerancia_entrada': s.tolerancia_entrada,
|
|
'tolerancia_saida': s.tolerancia_saida,
|
|
'limite_diario_he': s.limite_diario_he,
|
|
'limite_mensal_he': s.limite_mensal_he,
|
|
'limite_banco_horas_positivo': s.limite_banco_horas_positivo,
|
|
'limite_banco_horas_negativo': s.limite_banco_horas_negativo,
|
|
'validacao_reconhecimento_facial': s.validacao_reconhecimento_facial,
|
|
'registro_remoto': s.registro_remoto,
|
|
'ajuste_colaborador': s.ajuste_colaborador,
|
|
'dias_aprovacao_automatica': s.dias_aprovacao_automatica,
|
|
'service_instance_id': s.service_instance_id
|
|
}), 200
|
|
|
|
@settings_gerais_bp.route('/<int:id>', methods=['DELETE'])
|
|
@jwt_required()
|
|
@swag_from('../docs/settings_gerais/delete.yml')
|
|
def delete_settings(id):
|
|
s = SettingsGerais.query.get_or_404(id)
|
|
db.session.delete(s)
|
|
db.session.commit()
|
|
return jsonify({'message': 'Configuração deletada com sucesso.'}), 200
|