49 lines
No EOL
1.8 KiB
Python
49 lines
No EOL
1.8 KiB
Python
from actions.dynamic_import.dynamic_import import DynamicImport
|
|
from packages.v1.administrativo.schemas.user_schema import UserSaveSchema, UserEmailSchema
|
|
from packages.v1.administrativo.actions.user.user_save_action import SaveAction
|
|
from fastapi import status, HTTPException
|
|
|
|
class UserSaveService:
|
|
|
|
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
|
|
|
|
def execute(self, usuario_schema: UserSaveSchema):
|
|
|
|
# Armazena possíveis erros
|
|
errors = []
|
|
|
|
# Verifica se o e-mail já esta sendo utilizado
|
|
# Importação de service de email
|
|
email_service = self.dynamic_import.service("user_get_email_service", "GetEmailService")
|
|
|
|
# Instânciamento da service
|
|
self.email_service = email_service()
|
|
|
|
# Verifica se o email já esta sendo utilizado
|
|
self.response = self.email_service.execute(UserEmailSchema(email=usuario_schema.email), False)
|
|
|
|
# Se houver retorno significa que o e-mail já esta sendo utiizado
|
|
if self.response:
|
|
errors.append({'input': 'email', 'message': 'O e-mail informado já esta sendo utilizado.'})
|
|
|
|
# Se houver erros, informo
|
|
if errors:
|
|
raise HTTPException(
|
|
status_code=status.HTTP_403_FORBIDDEN,
|
|
detail=errors
|
|
)
|
|
|
|
# Instânciamento de ações
|
|
saveAction = SaveAction()
|
|
|
|
# Retorna todos produtos desejados
|
|
return saveAction.execute(usuario_schema) |