async Task <LoginResult> IRequestHandler <RegisterRequest, LoginResult> .Handle(RegisterRequest request, CancellationToken cancellationToken) { await Validator <RegisterValidation, RegisterRequest> .ValidateAndThrowAsync(request); var user = new ApplicationUser { Email = request.Email, UserName = request.Email }; var result = await _userManager.CreateAsync(user, request.Password); if (result.Succeeded) { _client.PublishEvent(new UserCreated { Id = user.Id, Email = user.Email, UserName = request.Email }); return(await _mediator.Send(new LoginRequest(request.Email, request.Password))); } if (result.Errors != null) { var errors = result.Errors.Select(e => e.Description); throw new RegisterException(string.Join(",", errors)); } throw new Exception("Register failed, please contact your administrator."); }
/// <summary> /// Updates the specified entity. /// </summary> /// <param name="entity">The entity.</param> public void Update(TEntity entity) { Guard.AgainstNullArgument(nameof(entity), entity); var uncommitedChanges = entity.UncommitedChanges; foreach (var change in uncommitedChanges) { _eventStore.Raise(change); _bus.PublishEvent(change); } entity.MarkChangesAsCommited(); }