diff --git a/app.py b/app.py index 3b4699b..31b5767 100644 --- a/app.py +++ b/app.py @@ -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(): diff --git a/models/company.py b/models/company.py index d9e83bd..0f87630 100644 --- a/models/company.py +++ b/models/company.py @@ -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()) diff --git a/models/user.py b/models/user.py index 571da84..bf77457 100644 --- a/models/user.py +++ b/models/user.py @@ -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()) diff --git a/routes/company.py b/routes/company.py index 9ffc52b..d931755 100644 --- a/routes/company.py +++ b/routes/company.py @@ -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('/', 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 diff --git a/routes/holiday.py b/routes/holiday.py index 2684650..d2c2d79 100644 --- a/routes/holiday.py +++ b/routes/holiday.py @@ -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('/', 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 diff --git a/routes/user.py b/routes/user.py index a977eda..35811a0 100644 --- a/routes/user.py +++ b/routes/user.py @@ -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 \ No newline at end of file diff --git a/seeds/company_seed.py b/seeds/company_seed.py index 69b0b6e..0e1e19c 100644 --- a/seeds/company_seed.py +++ b/seeds/company_seed.py @@ -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)