Exemplo n.º 1
0
        public override async Task <UseCaseResult <User> > Create(User userToCreate)
        {
            var validationResponse = new PersistenceResponse <User>();

            if (userToCreate.BirthDate == DateTime.MinValue)
            {
                validationResponse.Success = false;
                validationResponse.Message = "BirthDate is Required";
                return(UseCasesResponses.GetUseCaseResult(validationResponse));
            }

            var alreadyHasLogin = await _persistenceGateway.First(user => user.Login == userToCreate.Login);

            if (alreadyHasLogin.Success)
            {
                validationResponse.Success = false;
                validationResponse.Message = "AlreadyHasLogin";
                return(UseCasesResponses.GetUseCaseResult(validationResponse));
            }

            var alreadyHasEmail = await _persistenceGateway.First(user => string.Equals(user.Email, userToCreate.Email, StringComparison.CurrentCultureIgnoreCase));

            if (alreadyHasEmail.Success)
            {
                validationResponse.Success = false;
                validationResponse.Message = "AlreadyHasEmail";
                return(UseCasesResponses.GetUseCaseResult(validationResponse));
            }

            var persistenceResponse = await _persistenceGateway.Create(userToCreate);

            return(UseCasesResponses.GetUseCaseResult(persistenceResponse));
        }