201 lines
6.0 KiB
Python
201 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.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('/<int:company_id>', 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('/<int:company_id>', 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('/<int:company_id>', 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
|