114 lines
4.5 KiB
Python
114 lines
4.5 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_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('/<int:settings_id>', 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('/<int:id>', 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('/<int:id>', 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
|