public async Task ForgetPassword(ForgetPasswordInputDto request) { var businessExpection = new BusinessException(); var user = await this.userRepository.GetOneByCriteria(UserSpecification.GetUserByEmail(request.Email)); if (user == null) { businessExpection.AddError(new BusinessValidationFailure() { ErrorMessage = "E-mail não encontrado em nossa base de dados, por favor verifique o email e tente denovo", ErrorName = "ForgetPassword.EmailNãoCadastrado" }); } businessExpection.ValidateAndThrow(); user.ChangePassword(request.Password); using (var transaction = await this.userRepository.CreateTransaction()) { try { await this.userRepository.Update(user); await transaction.CommitAsync(); var notification = new NotificationMessage(user.Email.Valor, new Message(new { Email = user.Email.Valor, FullName = user.Name })); ChangePasswordConfirmEvent accountEvent = new ChangePasswordConfirmEvent(ChangePasswordConfirmEvent.CHANGE_PASSWORD_CONFIRMED_EVENT, notification); await this.EventPublisher.Publish <ChangePasswordConfirmEvent>(accountEvent); } catch { await transaction.RollbackAsync(); throw; } } }
public async Task <CreateAccountOutputDto> CreateAccount(CreateAccountInputDto request) { var businessExpection = new BusinessException(); if ((await this.userRepository.GetAllByCriteria(UserSpecification.GetUserByEmail(request.Email))).Any()) { businessExpection.AddError(new BusinessValidationFailure() { ErrorMessage = "E-mail já cadastrado na base, por favor tente outro" }); } if ((await this.userRepository.GetAllByCriteria(UserSpecification.GetUserByCPF(request.CPF))).Any()) { businessExpection.AddError(new BusinessValidationFailure() { ErrorMessage = "CPF já cadastrado na base, por favor tente outro" }); } businessExpection.ValidateAndThrow(); var user = this.mapper.Map <User>(request); user.ApplyStatus(Status.CONFIRMACAO_EMAIL); user.Validate(); user.ApplyPassword(); using (var transaction = await this.userRepository.CreateTransaction()) { try { var ms = ProxyUtils.DownloadFromUrl(String.Format(this.DefaultPhoto, Guid.NewGuid().ToString())); user.Photo = await this.storage.SaveToStorage(AzureCloudImageDirectoryStorageEnum.USER, ms, String.Format("{0}.jpg", Guid.NewGuid().ToString().Replace("-", ""))); await this.userRepository.Save(user); await transaction.CommitAsync(); var notification = new NotificationMessage(user.Email.Valor, new Message(new { Email = user.Email.Valor, FullName = user.Name, Id = user.Id })); CreatedAccountEvent accountEvent = new CreatedAccountEvent(CreatedAccountEvent.CREATE_ACCOUNT_EVENT, notification); await this.EventPublisher.Publish <CreatedAccountEvent>(accountEvent); return(this.mapper.Map <CreateAccountOutputDto>(user)); } catch (Exception) { await transaction.RollbackAsync(); throw; } } }