private void RegisterInstitutionUser(RegisterNewInstitutionUserCommand command, User user, out InstitutionUser institutionUser) { institutionUser = new InstitutionUser(Guid.NewGuid(), user.Id, command.SocialReason, command.FantasyName, command.CNPJ); _institutionUserRepository.Add(institutionUser); }
public async Task <ICommandResult> Handle(RegisterNewInstitutionUserCommand command, CancellationToken cancellationToken) { using (var transaction = _uow.BeginTransaction()) { try { if (!RegisterUser(command.Email, command.Password, EUserType.Institution, out User user, out IdentityResult resultUser)) { return(await CanceledTask(_bus.RaiseEvent(new DomainNotification(command.MessageType, "E-mail já está cadastrado!")))); } if (!RegisterRole(user, RolesConfiguration.ROLE_INSTITUTION, out IdentityResult resultRole)) { return(await CanceledTask(_bus.RaiseEvent(new DomainNotification(command.MessageType, $"Ocorreu erro ao atribuir uma Role \n: {resultRole.Errors.ToList()[0].Description}")))); } RegisterAddress(command.Address, user); RegisterInstitutionUser(command, user, out InstitutionUser institutionUser); RegisterPhones(command.Phones, institutionUser); RegisterUserInstitutionNotificationTypes(command.UserNotificationTypes, user); if (Commit(transaction)) { await _bus.RaiseEvent(new PendingUserAccountEvent(user.Email)); } return(await CompletedTask(institutionUser)); } catch (Exception exception) { RollBack(transaction); throw exception; } } }
public IActionResult Register([FromBody] RegisterNewInstitutionUserCommand command) => Response(bus.SendCommand(command).Result);