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