MirrorAPI/packages/v1/administrativo/controllers/usuario_controller.py
2025-11-03 15:18:26 -03:00

145 lines
4.5 KiB
Python

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