from flask import Blueprint, request, jsonify from flask_jwt_extended import jwt_required from flasgger.utils import swag_from from models.company import Company from models.user import db from models.service_instance import ServiceInstance company_bp = Blueprint('company', __name__, url_prefix='/company') @company_bp.route('/', methods=['POST']) @jwt_required() @swag_from('../docs/company/create.yml') def create_company(): #dados basicos data = request.get_json() name = data.get('name') fantasy_name = data.get('fantasy_name') type = data.get('type') cnpj = data.get('cnpj') #contato email = data.get('email') email_sec = data.get('email_sec') phone = data.get('phone') phone_sec = data.get('phone_sec') #endereço estado = data.get('estado') cidade = data.get('cidade') bairro = data.get('bairro') numero = data.get('numero') rua = data.get('rua') complemento = data.get('complemento') cep = data.get('cep') #relacao service_instance_id = data.get('service_instance_id') parent_id = data.get('parent_id') # Criando company = Company( name=name, fantasy_name = fantasy_name, type= type, cnpj=cnpj, email=email, email_sec = email_sec, phone = phone, phone_sec = phone_sec, cep=cep, rua=rua, numero = numero, bairro=bairro, complemento=complemento, estado=estado, cidade=cidade, service_instance_id=service_instance_id, parent_id=parent_id ) # Adiciona e comita no banco de dados db.session.add(company) db.session.commit() return jsonify({'message': 'empresa criada com sucesso', 'company_id': company.id}), 201 @company_bp.route('/', methods=['PUT']) @swag_from('../docs/company/update.yml') def update_company(company_id): """Atualiza um turno existente.""" data = request.get_json() print(data) # Localiza o turno ou retorna 404 company = Company.query.get_or_404(company_id) # Atualiza os campos fornecidos no body if 'name' in data: company.name = data['name'] if 'fantasy_name' in data: company.fantasyname = data['fantasy_name'] if 'cnpj' in data: company.cnpj = data['cnpj'] if 'type' in data: company.type = data['type'] if 'email' in data: company.email=data['email'] if 'email_sec' in data: company.email_sec=data['email_sec'] if 'phone' in data: company.phone=data['phone'] if 'phone_sec' in data: company.phone_sec=data['phone_sec'] if 'estado' in data: company.estado=data['estado'] if 'cidade' in data: company.cidade=data['cidade'] if 'cep' in data: company.cep=data['cep'] if 'rua' in data: company.rua=data['rua'] if 'numero' in data: company.numero=data['numero'] if 'complemento' in data: company.complemento=data['complemento'] if 'parent_id' in data: company.parent_id=data['parent_id'] if 'service_instance_id' in data: ServiceInstance.query.get_or_404(data['service_instance_id']) # Valida a existência company.service_instance_id = data['service_instance_id'] db.session.commit() return jsonify({'message': 'holiday updated successfully'}), 200 #Listar @company_bp.route('/', methods=['GET']) @swag_from('../docs/company/list.yml') def list_company(): """Lista todos as empresas, opcionalmente filtrando por parent_id.""" #service_instance_id = request.args.get('service_instance_id') parent_id = request.args.get('parent_id') if parent_id: # Filtrar por service_instance_id company = Company.query.filter_by(parent_id=parent_id).all() else: # Retornar todos os turnos companys = Company.query.all() company_list = [{ 'id': company.id, 'name': company.name, "fantasy_name": company.fantasy_name, "cnpj": company.cnpj, "type": company.type, 'email': company.email, "email_sec": company.email_sec, "phone": company.phone, "phone_sec":company.phone_sec, "cep": company.cep, "rua": company.rua, "numero": company.numero, "bairro": company.bairro, "complemento": company.complemento, "estado": company.estado, "cidade": company.cidade, 'service_instance_id': company.service_instance_id, "parent_id":company.parent_id } for company in companys] return jsonify(company_list), 200 #Get @company_bp.route('/', methods=['GET']) @swag_from('../docs/company/get.yml') def get_company_id(company_id): company = Company.query.get(company_id) if not company: return jsonify({'error': 'Escala não encontrada'}), 404 return jsonify({ 'id': company.id, 'name': company.name, "fantasy_name": company.fantasy_name, "cnpj": company.cnpj, "type": company.type, 'email': company.email, "email_sec": company.email_sec, "phone": company.phone, "phone_sec":company.phone_sec, "cep": company.cep, "rua": company.rua, "numero": company.numero, "bairro": company.bairro, "complemento": company.complemento, "estado": company.estado, "cidade": company.cidade, 'service_instance_id': company.service_instance_id, "parent_id":company.parent_id }),200 #deletar @company_bp.route('/', methods=['DELETE']) @swag_from('../docs/company/delete.yml') def delete_company(company_id): """Deleta um turno pelo ID.""" company = Company.query.get_or_404(company_id) db.session.delete(company) db.session.commit() return jsonify({'message': 'Shift deleted successfully'}), 200