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.shift import shift_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
import logging
from dotenv import load_dotenv
@ -128,6 +130,8 @@ def create_app():
app.register_blueprint(shift_bp)
app.register_blueprint(time_schedule_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
with app.app_context():

View File

@ -28,6 +28,7 @@ class Company(db.Model):
#relacionamento
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
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)
profile_image = db.Column(db.String(255), 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())
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.service_instance import ServiceInstance
company_bp = Blueprint('company', __name__, url_prefix='/company')
@company_bp.route('/', methods=['POST'])
@ -31,12 +32,11 @@ def create_company():
complemento = data.get('complemento')
cep = data.get('cep')
#relacao
service_instance_id = data.get('service_instance_id')
parent_id = data.get('parent_id')
# Cria um novo ServiceRole
# Criando
company = Company(
name=name,
fantasy_name = fantasy_name,
@ -56,7 +56,8 @@ def create_company():
estado=estado,
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.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'])
@swag_from('../docs/company/update.yml')
@ -121,12 +122,13 @@ def update_company(company_id):
@company_bp.route('/', methods=['GET'])
@swag_from('../docs/company/list.yml')
def list_company():
"""Lista todos os turnos, opcionalmente filtrando por instância de serviço."""
service_instance_id = request.args.get('service_instance_id')
"""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 service_instance_id:
if parent_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:
# Retornar todos os turnos
companys = Company.query.all()
@ -150,7 +152,8 @@ def list_company():
"complemento": company.complemento,
"estado": company.estado,
"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]
return jsonify(company_list), 200
@ -182,7 +185,8 @@ def get_company_id(company_id):
"complemento": company.complemento,
"estado": company.estado,
"cidade": company.cidade,
'service_instance_id': company.service_instance_id
'service_instance_id': company.service_instance_id,
"parent_id":company.parent_id
}),200
#deletar

View File

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

View File

@ -26,6 +26,7 @@ def create_user():
birth_date = data.get('birth_date')
parent_id = data.get('parent_id')
service_instance_id = data.get('service_instance_id')
status = data.get('status')
# Verifica se o usuário já existe
@ -41,7 +42,8 @@ def create_user():
profile_image=profile_image,
birth_date=birth_date,
parent_id=parent_id,
service_instance_id=service_instance_id
service_instance_id=service_instance_id,
status=status
)
user.set_password(password)
@ -70,6 +72,7 @@ def create_subordinate(logged_user_id):
profile_image = data.get('profile_image')
birth_date = data.get('birth_date')
service_instance_id = data.get('service_instance_id')
status = data.get('status')
existing_user = User.query.filter_by(username=username).first()
if existing_user:
@ -82,7 +85,8 @@ def create_subordinate(logged_user_id):
profile_image=profile_image,
birth_date=birth_date,
parent_id=parent_id,
service_instance_id=service_instance_id
service_instance_id=service_instance_id,
status=status
)
subordinate.set_password(password)
@ -111,7 +115,8 @@ def list_hierarchy(user_id):
'email': child.email,
'birth_date':child.birth_date,
'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)
flat_list.extend(flatten_hierarchy(child))
@ -142,7 +147,8 @@ def list_hierarchy_by_id():
'birth_date':user.birth_date,
'phone':user.phone,
'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:
user.set_password(data['password'])
if 'status' in data:
user.status = data['status']
db.session.commit()
return jsonify({'message': 'Usuário atualizado com sucesso'}), 200
@ -260,6 +269,7 @@ def get_user(user_id):
'birth_date':user.birth_date,
'phone':user.phone,
'service_role_id':user.service_role_id,
'status':user.status,
'licenses': [
{
'license_key': license.license_key,
@ -301,8 +311,11 @@ def get_user(user_id):
def delete_user(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()
return jsonify({'message': 'Usuário excluído com sucesso'}), 200

View File

@ -20,7 +20,8 @@ def seed_company():
"complemento": "Bloco A",
"estado": "SP",
"cidade": "São Paulo",
'service_instance_id': 1
'service_instance_id': 1,
"parent_id":1
},
# Empresa 2
@ -40,7 +41,8 @@ def seed_company():
"complemento": "Sala 305",
"estado": "RJ",
"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'],
estado=company_data['estado'],
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)