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)));
        }