public async Task <Result <CommandResult> > Handle(CreateUserCommand request, CancellationToken cancellationToken) { if (!request.IsValid()) { await PublishValidationErrorsAsync(request); return(Result.Failure <CommandResult>(ApplicationMessages.Create_Failed)); } var existUser = await _userManager.FindByNameAsync(request.Email); if (existUser != null) { await _mediator.Publish(new DomainNotification("", ApplicationMessages.User_Email_Already_Exist)); return(Result.Failure <CommandResult>(ApplicationMessages.Create_Failed)); } var user = _mapper.Map <User>(request); var result = await _userManager.CreateAsync(user, request.Password); if (!result.Succeeded) { foreach (var error in result.Errors) { await _mediator.Publish(new DomainNotification(error.Code, error.Description)); } return(Result.Failure <CommandResult>(ApplicationMessages.Create_Failed)); } return(Result.Success(new CommandResult(user.Id.ToString(), ApplicationMessages.Create_Success))); }