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) }