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_integracoes import SettingsIntegracoes settings_integracoes_bp = Blueprint('settings_integracoes', __name__, url_prefix='/settings_integracoes') # Criar configuração de integrações @settings_integracoes_bp.route('/', methods=['POST']) @jwt_required() @swag_from('../docs/settings_integracoes/create.yml') def create_settings_integracoes(): data = request.get_json() integrar_folha_pagamento = data.get('integrar_folha_pagamento', False) exportar_dados = data.get('exportar_dados', False) exportacao_csv = data.get('exportacao_csv', False) exportacao_pdf = data.get('exportacao_pdf', False) integrar_calendario = data.get('integrar_calendario', False) service_instance_id = data.get('service_instance_id') settings = SettingsIntegracoes( integrar_folha_pagamento=integrar_folha_pagamento, exportar_dados=exportar_dados, exportacao_csv=exportacao_csv, exportacao_pdf=exportacao_pdf, integrar_calendario=integrar_calendario, service_instance_id=service_instance_id ) db.session.add(settings) db.session.commit() return jsonify({'message': 'Configuração de integrações criada com sucesso', 'settings_id': settings.id}), 201 # Atualizar configuração @settings_integracoes_bp.route('/', methods=['PUT']) @jwt_required() @swag_from('../docs/settings_integracoes/update.yml') def update_settings_integracoes(settings_id): data = request.get_json() settings = SettingsIntegracoes.query.get_or_404(settings_id) if 'integrar_folha_pagamento' in data: settings.integrar_folha_pagamento = data['integrar_folha_pagamento'] if 'exportar_dados' in data: settings.exportar_dados = data['exportar_dados'] if 'exportacao_csv' in data: settings.exportacao_csv = data['exportacao_csv'] if 'exportacao_pdf' in data: settings.exportacao_pdf = data['exportacao_pdf'] if 'integrar_calendario' in data: settings.integrar_calendario = data['integrar_calendario'] 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 integrações atualizada com sucesso'}), 200 # Listar configurações @settings_integracoes_bp.route('/', methods=['GET']) @jwt_required() @swag_from('../docs/settings_integracoes/list.yml') def list_settings_integracoes(): service_instance_id = request.args.get('service_instance_id') if service_instance_id: settings_list = SettingsIntegracoes.query.filter_by(service_instance_id=service_instance_id).all() else: settings_list = SettingsIntegracoes.query.all() return jsonify({ 'settings_integracoes_list': [ { 'id': s.id, 'integrar_folha_pagamento': s.integrar_folha_pagamento, 'exportar_dados': s.exportar_dados, 'exportacao_csv': s.exportacao_csv, 'exportacao_pdf': s.exportacao_pdf, 'integrar_calendario': s.integrar_calendario, 'service_instance_id': s.service_instance_id } for s in settings_list ] }), 200 # Obter por ID @settings_integracoes_bp.route('/', methods=['GET']) @jwt_required() @swag_from('../docs/settings_integracoes/get.yml') def get_settings_integracoes_by_id(id): s = SettingsIntegracoes.query.get_or_404(id) return jsonify({ 'id': s.id, 'integrar_folha_pagamento': s.integrar_folha_pagamento, 'exportar_dados': s.exportar_dados, 'exportacao_csv': s.exportacao_csv, 'exportacao_pdf': s.exportacao_pdf, 'integrar_calendario': s.integrar_calendario, 'service_instance_id': s.service_instance_id }), 200 # Deletar configuração @settings_integracoes_bp.route('/', methods=['DELETE']) @jwt_required() @swag_from('../docs/settings_integracoes/delete.yml') def delete_settings_integracoes(id): s = SettingsIntegracoes.query.get_or_404(id) db.session.delete(s) db.session.commit() return jsonify({'message': 'Configuração deletada com sucesso.'}), 200