public async Task <UserLoginViewModel> Handle(UserRegisterCommand request, CancellationToken cancellationToken)
        {
            var userExists = await _userRepository.UserExists(request.Email);

            if (userExists)
            {
                return new UserLoginViewModel
                       {
                           Success = false,
                           Message = "User already exists."
                       }
            }
            ;

            var passwordHash = _hashGenerator.ComputeHash(request.Password);
            var user         = AppUser.Create(
                firstname: request.FirstName,
                lastname: request.LastName,
                email: request.Email,
                passwordHash: passwordHash);

            await _userRepository.AddAsync(user);

            await _unitOfWork.SaveChangesAsync(CancellationToken.None);

            var accessToken = _tokenGenerator.GenerateToken(user.LastName, user.Email, user.Id);

            return(new UserLoginViewModel
            {
                Success = true,
                AccessToken = accessToken,
                User = new UserInfo
                {
                    FirstName = user.FirstName,
                    LastName = user.LastName,
                    Email = user.Email,
                    UserId = user.Id,
                    Image = user.ProfilePicture ?? _placeholderImageProvider.GetProfileImagePlaceHolder()
                }
            });
        }
    }