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)