public async Task <Unit> Handle(UpdateUserRequest request, CancellationToken cancellationToken)
        {
            var currentUser = await _context.Users
                              .FindAsync(request.UserId)
                              .ConfigureAwait(false);

            if (currentUser is null)
            {
                throw new EntityNotFoundException("User");
            }


            var password = currentUser.Password;

            if (!string.IsNullOrEmpty(request.Password))
            {
                password = _passwordHasher.Create(request.Password);
            }

            HashSet <Phone> phones = (HashSet <Phone>)currentUser.Phones;

            if (request.Phones.Any())
            {
                phones = (HashSet <Phone>)request.Phones;
            }

            currentUser.Update
            (
                request.FirstName ?? currentUser.FirstName,
                request.LastName ?? currentUser.LastName,
                request.UserName ?? currentUser.Username,
                request.Email ?? currentUser.Email,
                password,
                phones,
                currentUser.RefreshTokens,
                currentUser.Entries
            );


            await _context.SaveChangesAsync().ConfigureAwait(false);

            await _mediator.Publish(new UserUpdated { UserId = currentUser.UserId }, cancellationToken).ConfigureAwait(false);

            return(Unit.Value);
        }
        public async Task <Unit> Handle(CreateUserRequest request, CancellationToken cancellationToken)
        {
            var entity = new User
                         (
                request.FirstName,
                request.LastName,
                request.UserName,
                request.Email,
                _passwordHasher.Create(request.Password),
                Guid.NewGuid().ToString(),
                (HashSet <Phone>)request.Phones,
                null,
                null
                         );

            await _context.Users.AddAsync(entity).ConfigureAwait(false);

            await _context.SaveChangesAsync().ConfigureAwait(false);

            await _mediator.Publish(new UserCreated { UserId = entity.UserId }, cancellationToken).ConfigureAwait(false);

            return(Unit.Value);
        }