vrsao api_farmacia funcional

This commit is contained in:
ka-lucas 2025-04-23 16:18:24 -03:00
parent b22ca586e5
commit 0f9e159b87
7 changed files with 54 additions and 23 deletions

4
app.py
View File

@ -24,6 +24,8 @@ from routes.service_instance import service_instance_bp
from routes.reports import employee_bp from routes.reports import employee_bp
from routes.shift import shift_bp from routes.shift import shift_bp
from routes.time_schedules import time_schedule_bp from routes.time_schedules import time_schedule_bp
from routes.holiday import holiday_bp
from routes.company import company_bp
from routes.record import record_bp from routes.record import record_bp
import logging import logging
from dotenv import load_dotenv from dotenv import load_dotenv
@ -128,6 +130,8 @@ def create_app():
app.register_blueprint(shift_bp) app.register_blueprint(shift_bp)
app.register_blueprint(time_schedule_bp) app.register_blueprint(time_schedule_bp)
app.register_blueprint(record_bp) app.register_blueprint(record_bp)
app.register_blueprint(holiday_bp)
app.register_blueprint(company_bp)
# Testa a conexão com o banco de dados # Testa a conexão com o banco de dados
with app.app_context(): with app.app_context():

View File

@ -28,6 +28,7 @@ class Company(db.Model):
#relacionamento #relacionamento
service_instance_id = db.Column(db.Integer, db.ForeignKey('service_instance.id'), nullable=False) service_instance_id = db.Column(db.Integer, db.ForeignKey('service_instance.id'), nullable=False)
parent_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=True)
#historico #historico
created_at = db.Column(db.DateTime, default=db.func.current_timestamp()) created_at = db.Column(db.DateTime, default=db.func.current_timestamp())

View File

@ -11,6 +11,10 @@ class User(db.Model):
password = db.Column(db.String(256), nullable=False) password = db.Column(db.String(256), nullable=False)
profile_image = db.Column(db.String(255), nullable=True) profile_image = db.Column(db.String(255), nullable=True)
birth_date = db.Column(db.Date, nullable=True) birth_date = db.Column(db.Date, nullable=True)
status = db.Column(db.String(120), nullable=False, default="ativo")
created_at = db.Column(db.DateTime, default=db.func.current_timestamp()) created_at = db.Column(db.DateTime, default=db.func.current_timestamp())
updated_at = db.Column(db.DateTime, default=db.func.current_timestamp(), onupdate=db.func.current_timestamp()) updated_at = db.Column(db.DateTime, default=db.func.current_timestamp(), onupdate=db.func.current_timestamp())

View File

@ -5,6 +5,7 @@ from models.company import Company
from models.user import db from models.user import db
from models.service_instance import ServiceInstance from models.service_instance import ServiceInstance
company_bp = Blueprint('company', __name__, url_prefix='/company') company_bp = Blueprint('company', __name__, url_prefix='/company')
@company_bp.route('/', methods=['POST']) @company_bp.route('/', methods=['POST'])
@ -31,12 +32,11 @@ def create_company():
complemento = data.get('complemento') complemento = data.get('complemento')
cep = data.get('cep') cep = data.get('cep')
#relacao #relacao
service_instance_id = data.get('service_instance_id') service_instance_id = data.get('service_instance_id')
parent_id = data.get('parent_id')
# Cria um novo ServiceRole # Criando
company = Company( company = Company(
name=name, name=name,
fantasy_name = fantasy_name, fantasy_name = fantasy_name,
@ -56,7 +56,8 @@ def create_company():
estado=estado, estado=estado,
cidade=cidade, cidade=cidade,
service_instance_id=service_instance_id service_instance_id=service_instance_id,
parent_id=parent_id
) )
@ -64,7 +65,7 @@ def create_company():
db.session.add(company) db.session.add(company)
db.session.commit() db.session.commit()
return jsonify({'message': 'empresa criada com sucesso', 'feriado_id': company.id}), 201 return jsonify({'message': 'empresa criada com sucesso', 'company_id': company.id}), 201
@company_bp.route('/<int:company_id>', methods=['PUT']) @company_bp.route('/<int:company_id>', methods=['PUT'])
@swag_from('../docs/company/update.yml') @swag_from('../docs/company/update.yml')
@ -121,12 +122,13 @@ def update_company(company_id):
@company_bp.route('/', methods=['GET']) @company_bp.route('/', methods=['GET'])
@swag_from('../docs/company/list.yml') @swag_from('../docs/company/list.yml')
def list_company(): def list_company():
"""Lista todos os turnos, opcionalmente filtrando por instância de serviço.""" """Lista todos as empresas, opcionalmente filtrando por parent_id."""
service_instance_id = request.args.get('service_instance_id') #service_instance_id = request.args.get('service_instance_id')
parent_id = request.args.get('parent_id')
if service_instance_id: if parent_id:
# Filtrar por service_instance_id # Filtrar por service_instance_id
company = Company.query.filter_by(service_instance_id=service_instance_id).all() company = Company.query.filter_by(parent_id=parent_id).all()
else: else:
# Retornar todos os turnos # Retornar todos os turnos
companys = Company.query.all() companys = Company.query.all()
@ -150,7 +152,8 @@ def list_company():
"complemento": company.complemento, "complemento": company.complemento,
"estado": company.estado, "estado": company.estado,
"cidade": company.cidade, "cidade": company.cidade,
'service_instance_id': company.service_instance_id 'service_instance_id': company.service_instance_id,
"parent_id":company.parent_id
} for company in companys] } for company in companys]
return jsonify(company_list), 200 return jsonify(company_list), 200
@ -182,7 +185,8 @@ def get_company_id(company_id):
"complemento": company.complemento, "complemento": company.complemento,
"estado": company.estado, "estado": company.estado,
"cidade": company.cidade, "cidade": company.cidade,
'service_instance_id': company.service_instance_id 'service_instance_id': company.service_instance_id,
"parent_id":company.parent_id
}),200 }),200
#deletar #deletar

View File

@ -81,13 +81,14 @@ def list_holiday():
else: else:
# Retornar todos os turnos # Retornar todos os turnos
holidays = Holiday.query.all() holidays = Holiday.query.all()
print(holidays)
return jsonify({ return jsonify({
'holiday_list' : [{ 'holiday_list' : [{
'id': holiday.id, 'id': holiday.id,
'name': holiday.name, 'name': holiday.name,
'estado': holiday.estado, 'estado': holiday.estado,
"date": holiday.date.strftime("%H:%M"), "date": holiday.date.strftime("%Y-%m-%d"),
"municipio": holiday.municipio, "municipio": holiday.municipio,
'parent_id' : holiday.parent_id, 'parent_id' : holiday.parent_id,
'service_instance_id': holiday.service_instance_id 'service_instance_id': holiday.service_instance_id
@ -96,7 +97,7 @@ def list_holiday():
#Get #Get
@holiday_bp.route('/<int:holiday_id>', methods=['GET']) @holiday_bp.route('/<int:holiday_id>', methods=['GET'])
@swag_from('../docs/holiday/get.yml') @swag_from('../docs/holiday/get.yml')
def get_shift_id(holiday_id): def get_holiday_id(holiday_id):
holiday = Holiday.query.get(holiday_id) holiday = Holiday.query.get(holiday_id)
if not holiday: if not holiday:
return jsonify({'error': 'Escala não encontrada'}), 404 return jsonify({'error': 'Escala não encontrada'}), 404
@ -106,7 +107,8 @@ def get_shift_id(holiday_id):
'name': holiday.name, 'name': holiday.name,
'estado': holiday.estado, 'estado': holiday.estado,
'municipio': holiday.municipio, 'municipio': holiday.municipio,
"date": holiday.date.strftime("%H:%M"), 'type':holiday.type,
"date": holiday.date.strftime("%Y-%m-%d"),
'parent_id' : holiday.parent_id, 'parent_id' : holiday.parent_id,
'service_instance_id': holiday.service_instance_id}),200 'service_instance_id': holiday.service_instance_id}),200

View File

@ -26,6 +26,7 @@ def create_user():
birth_date = data.get('birth_date') birth_date = data.get('birth_date')
parent_id = data.get('parent_id') parent_id = data.get('parent_id')
service_instance_id = data.get('service_instance_id') service_instance_id = data.get('service_instance_id')
status = data.get('status')
# Verifica se o usuário já existe # Verifica se o usuário já existe
@ -41,7 +42,8 @@ def create_user():
profile_image=profile_image, profile_image=profile_image,
birth_date=birth_date, birth_date=birth_date,
parent_id=parent_id, parent_id=parent_id,
service_instance_id=service_instance_id service_instance_id=service_instance_id,
status=status
) )
user.set_password(password) user.set_password(password)
@ -70,6 +72,7 @@ def create_subordinate(logged_user_id):
profile_image = data.get('profile_image') profile_image = data.get('profile_image')
birth_date = data.get('birth_date') birth_date = data.get('birth_date')
service_instance_id = data.get('service_instance_id') service_instance_id = data.get('service_instance_id')
status = data.get('status')
existing_user = User.query.filter_by(username=username).first() existing_user = User.query.filter_by(username=username).first()
if existing_user: if existing_user:
@ -82,7 +85,8 @@ def create_subordinate(logged_user_id):
profile_image=profile_image, profile_image=profile_image,
birth_date=birth_date, birth_date=birth_date,
parent_id=parent_id, parent_id=parent_id,
service_instance_id=service_instance_id service_instance_id=service_instance_id,
status=status
) )
subordinate.set_password(password) subordinate.set_password(password)
@ -111,7 +115,8 @@ def list_hierarchy(user_id):
'email': child.email, 'email': child.email,
'birth_date':child.birth_date, 'birth_date':child.birth_date,
'phone':child.phone, 'phone':child.phone,
'service_instance_id':child.service_instance_id 'service_instance_id':child.service_instance_id,
'status':child.status
}) })
# Verifica recursivamente os filhos (subordinados dos subordinados) # Verifica recursivamente os filhos (subordinados dos subordinados)
flat_list.extend(flatten_hierarchy(child)) flat_list.extend(flatten_hierarchy(child))
@ -142,7 +147,8 @@ def list_hierarchy_by_id():
'birth_date':user.birth_date, 'birth_date':user.birth_date,
'phone':user.phone, 'phone':user.phone,
'subordinates': [build_hierarchy(sub) for sub in user.children], 'subordinates': [build_hierarchy(sub) for sub in user.children],
'service_instance_id':user.service_instance_id 'service_instance_id':user.service_instance_id,
'status':user.status
} }
@ -185,6 +191,9 @@ def update_user(user_id):
if 'password' in data: if 'password' in data:
user.set_password(data['password']) user.set_password(data['password'])
if 'status' in data:
user.status = data['status']
db.session.commit() db.session.commit()
return jsonify({'message': 'Usuário atualizado com sucesso'}), 200 return jsonify({'message': 'Usuário atualizado com sucesso'}), 200
@ -260,6 +269,7 @@ def get_user(user_id):
'birth_date':user.birth_date, 'birth_date':user.birth_date,
'phone':user.phone, 'phone':user.phone,
'service_role_id':user.service_role_id, 'service_role_id':user.service_role_id,
'status':user.status,
'licenses': [ 'licenses': [
{ {
'license_key': license.license_key, 'license_key': license.license_key,
@ -301,8 +311,11 @@ def get_user(user_id):
def delete_user(user_id): def delete_user(user_id):
user = User.query.get_or_404(user_id) user = User.query.get_or_404(user_id)
# Antes de excluir, você pode adicionar validações adicionais se necessário # Verifica se já está inativo
if user.status.lower() == "inativo":
return jsonify({'message': 'Usuário já está inativo'}), 400
db.session.delete(user) # Atualiza o status para inativo
user.status = "inativo"
db.session.commit() db.session.commit()
return jsonify({'message': 'Usuário excluído com sucesso'}), 200 return jsonify({'message': 'Usuário excluído com sucesso'}), 200

View File

@ -20,7 +20,8 @@ def seed_company():
"complemento": "Bloco A", "complemento": "Bloco A",
"estado": "SP", "estado": "SP",
"cidade": "São Paulo", "cidade": "São Paulo",
'service_instance_id': 1 'service_instance_id': 1,
"parent_id":1
}, },
# Empresa 2 # Empresa 2
@ -40,7 +41,8 @@ def seed_company():
"complemento": "Sala 305", "complemento": "Sala 305",
"estado": "RJ", "estado": "RJ",
"cidade": "Rio de Janeiro", "cidade": "Rio de Janeiro",
'service_instance_id': 1 'service_instance_id': 1,
"parent_id":2
}, },
] ]
@ -66,7 +68,8 @@ def seed_company():
complemento=company_data['complemento'], complemento=company_data['complemento'],
estado=company_data['estado'], estado=company_data['estado'],
cidade=company_data['cidade'], cidade=company_data['cidade'],
service_instance_id=company_data['service_instance_id'] service_instance_id=company_data['service_instance_id'],
parent_id=company_data['parent_id']
) )
db.session.add(company) db.session.add(company)