from actions.dynamic_import.dynamic_import import DynamicImport from packages.v1.administrativo.services.usuario.usuario_authenticate_service import ( AuthenticateService, ) from packages.v1.administrativo.services.usuario.usuario_me_service import ( MeService, ) from packages.v1.administrativo.services.usuario.usuario_index_service import ( IndexService, ) from packages.v1.administrativo.services.usuario.usuario_save_service import ( SaveService, ) from packages.v1.administrativo.services.usuario.usuario_get_email_service import ( GetEmailService, ) from packages.v1.administrativo.services.usuario.usuario_show_service import ( ShowService, ) from packages.v1.administrativo.services.usuario.usuario_update_service import ( UpdateService, ) from packages.v1.administrativo.services.usuario.usuario_delete_service import ( DeleteService, ) from packages.v1.administrativo.schemas.usuario_schema import ( UsuarioSchema, UsuarioAuthenticateSchema, UsuarioSaveSchema, UsuarioUpdateSchema, UsuarioEmailSchema, UsuarioIdSchema, ) class UsuarioController: 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("usuario") pass # Efetua o acesso junto ao sistema por um determinado usuário def authenticate(self, user_authenticate_schema: UsuarioAuthenticateSchema): # Importação de service de Authenticate authenticate_service = AuthenticateService() # Retorna o usuário logado return { "message": "Usuário localizado com sucesso", "data": {"token": authenticate_service.execute(user_authenticate_schema)}, } # Carrega os dados do usuário logado def me(self, current_user): # Instânciamento da service me_service = MeService() # Retorna o usuário logado return { "message": "Usuário localizado com sucesso", "data": me_service.execute(current_user), } # Lista todos os usuários def index(self): # Instânciamento da classe service indexService = IndexService() # Lista todos os usuários return { "message": "Usuários localizados com sucesso", "data": indexService.execute(), } # Busca um usuário especifico pelo ID def show(self, usuario_schema: UsuarioSchema): # Instânciamento da classe desejada show_service = ShowService() # Busca e retorna o usuário desejado return { "message": "Usuário localizado com sucesso", "data": show_service.execute(usuario_schema), } # Busca um usuário especifico pelo e-mail def getEmail(self, usuario_schema: UsuarioEmailSchema): # Instânciamento da classe desejada get_email_service = GetEmailService() # Busca e retorna o usuário desejado return { "message": "E-mail localizado com sucesso", "data": 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: UsuarioSaveSchema): # Instânciamento da classe desejada save_service = SaveService() # Busca e retorna o usuário desejado return { "message": "Usuário salvo com sucesso", "data": save_service.execute(usuario_schema), } # Atualiza os dados de um usuário def update(self, usuario_id: int, usuario_schema: UsuarioUpdateSchema): # Instânciamento da classe desejada update_service = UpdateService() # Busca e retorna o usuário desejado return { "message": "Usuário atualizado com sucesso", "data": update_service.execute(usuario_id, usuario_schema), } # Exclui um usuário def delete(self, usuario_schema: UsuarioIdSchema): # Instânciamento da classe desejada delete_service = DeleteService() # Busca e retorna o usuário desejado return { "message": "Usuário removido com sucesso", "data": delete_service.execute(usuario_schema), }