monitoring-api/packages/v1/administrativo/controllers/user_controller.py
2025-10-06 09:30:41 -03:00

145 lines
No EOL
4.8 KiB
Python

from actions.dynamic_import.dynamic_import import DynamicImport
from packages.v1.administrativo.schemas.user_schema import (
UserSchema,
UserAuthenticateSchema,
UserSaveSchema,
UserUpdateSchema,
UserEmailSchema,
UserIdSchema
)
class UserController:
def __init__(self):
# Action responsável por carregar as services de acodo com o estado
self.dynamic_import = DynamicImport()
# Define o pacote que deve ser carregado
self.dynamic_import.set_package("administrativo")
# Define a tabela que o pacote pertence
self.dynamic_import.set_table("user")
pass
# Efetua o acesso junto ao sistema por um determinado usuário
def authenticate(self, user_authenticate_schema : UserAuthenticateSchema):
# Importação de service de Authenticate
authenticate_service = self.dynamic_import.service("user_authenticate_service", "AuthenticateService")
# Instânciamento da service
self.authenticate_service = authenticate_service()
# Retorna o usuário logado
return {
'message' : 'Usuário localizado com sucesso',
'data' : {
'token' : self.authenticate_service.execute(user_authenticate_schema)
}
}
# Carrega os dados do usuário logado
def me(self, current_user):
# Importação de service de authenticate
me_service = self.dynamic_import.service("user_me_service", "MeService")
# Instânciamento da service
self.me_service = me_service()
# Retorna o usuário logado
return {
'message' : 'Usuário localizado com sucesso',
'data' : self.me_service.execute(current_user)
}
# Lista todos os usuários
def index(self):
# Importação da classe desejada
indexService = self.dynamic_import.service("user_index_service", "IndexService")
# Instânciamento da classe service
self.indexService = indexService()
# Lista todos os usuários
return {
'message': 'Usuários localizados com sucesso',
'data': self.indexService.execute()
}
# Busca um usuário especifico pelo ID
def show(self, usuario_schema : UserSchema):
#Importação da classe desejada
show_service = self.dynamic_import.service('user_show_service', 'ShowService')
# Instânciamento da classe desejada
self.show_service = show_service()
# Busca e retorna o usuário desejado
return {
'message' : 'Usuário localizado com sucesso',
'data': self.show_service.execute(usuario_schema)
}
# Busca um usuário especifico pelo e-mail
def getEmail(self, usuario_schema : UserEmailSchema):
#Importação da classe desejada
get_email_service = self.dynamic_import.service('user_get_email_service', 'GetEmailService')
# Instânciamento da classe desejada
self.get_email_service = get_email_service()
# Busca e retorna o usuário desejado
return {
'message' : 'E-mail localizado com sucesso',
'data': self.get_email_service.execute(usuario_schema, True) # True para retornar a mensagem de erro caso não localize o usuario
}
# Cadastra um novo usuário
def save(self, usuario_schema : UserSaveSchema):
#Importação da classe desejada
save_service = self.dynamic_import.service('user_save_service', 'UserSaveService')
# Instânciamento da classe desejada
self.save_service = save_service()
# Busca e retorna o usuário desejado
return {
'message' : 'Usuário salvo com sucesso',
'data': self.save_service.execute(usuario_schema)
}
# Atualiza os dados de um usuário
def update(self, user_id: int, usuario_schema : UserUpdateSchema):
#Importação da classe desejada
save_service = self.dynamic_import.service('user_update_service', 'UserUpdateService')
# Instânciamento da classe desejada
self.save_service = save_service()
# Busca e retorna o usuário desejado
return {
'message' : 'Usuário atualizado com sucesso',
'data': self.save_service.execute(user_id, usuario_schema)
}
# Exclui um usuário
def delete(self, usuario_schema : UserIdSchema):
#Importação da classe desejada
delete_service = self.dynamic_import.service('user_delete_service', 'DeleteService')
# Instânciamento da classe desejada
self.delete_service = delete_service()
# Busca e retorna o usuário desejado
return {
'message' : 'Usuário removido com sucesso',
'data': self.delete_service.execute(usuario_schema)
}