public void GetByByUserAndId_Should_Return_GetResult_Ok_With_RoomForRentAnnouncementPreference() { var id = Guid.NewGuid(); var roomForRentAnnouncementPreference = RoomForRentAnnouncementPreference.Builder() .SetId(id) .SetCityId(Guid.NewGuid()) .SetPriceMin(0) .SetPriceMax(1500) .SetRoomType(RoomTypeEnumeration.Single) .SetCityDistricts(new List <Guid> { Guid.NewGuid() }) .Build(); var roomForRentAnnouncementPreferences = new List <RoomForRentAnnouncementPreference> { roomForRentAnnouncementPreference }; var user = User.Builder() .SetId(Guid.NewGuid()) .SetEmail("*****@*****.**") .SetServiceActive(DefaultUserSettings.ServiceActive) .SetAnnouncementPreferenceLimit(DefaultUserSettings.AnnouncementPreferenceLimit) .SetAnnouncementSendingFrequency(DefaultUserSettings.AnnouncementSendingFrequency) .SetRoomForRentAnnouncementPreferences(roomForRentAnnouncementPreferences) .Build(); var expectedResult = GetResult <RoomForRentAnnouncementPreference> .Ok(roomForRentAnnouncementPreference); var result = _service.GetByByUserAndId(user, id); result.Should().BeEquivalentTo(expectedResult); }
public async Task HandleAsync(DeleteRoomForRentAnnouncementPreferenceCommand command, CancellationToken cancellationToken = default) { var getUserResult = await _userGetterService.GetByIdAsync(command.UserId); if (!getUserResult.Success) { throw new ResourceNotFoundException(getUserResult.Errors); } var getRoomForRentAnnouncementPreferenceResult = _roomForRentAnnouncementPreferenceGetterService.GetByByUserAndId( getUserResult.Value, command.RoomForRentAnnouncementPreferenceId); if (!getRoomForRentAnnouncementPreferenceResult.Success) { throw new ResourceNotFoundException(getRoomForRentAnnouncementPreferenceResult.Errors); } getUserResult.Value.DeleteRoomForRentAnnouncementPreference(getRoomForRentAnnouncementPreferenceResult.Value, command.CorrelationId); await _communicationBus.DispatchDomainEventsAsync(getUserResult.Value, cancellationToken); await _userRepository.UpdateAsync(getUserResult.Value); var userAnnouncementPreferenceDeletedIntegrationEvent = new UserAnnouncementPreferenceDeletedIntegrationEvent(command.CorrelationId, getUserResult.Value.Id, getRoomForRentAnnouncementPreferenceResult.Value.Id, AnnouncementPreferenceType.RoomForRentAnnouncementPreference); await _integrationEventBus.PublishIntegrationEventAsync(userAnnouncementPreferenceDeletedIntegrationEvent); }
public async Task HandleAsync(UpdateRoomForRentAnnouncementPreferenceCommand command, CancellationToken cancellationToken = default) { var getUserResult = await _userGetterService.GetByIdAsync(command.UserId); if (!getUserResult.Success) { throw new ResourceNotFoundException(getUserResult.Errors); } var getRoomForRentAnnouncementPreferenceResult = _roomForRentAnnouncementPreferenceGetterService.GetByByUserAndId( getUserResult.Value, command.RoomForRentAnnouncementPreferenceId); if (!getRoomForRentAnnouncementPreferenceResult.Success) { throw new ResourceNotFoundException(getRoomForRentAnnouncementPreferenceResult.Errors); } await UpdateCityAndCityDistrictsAsync(getRoomForRentAnnouncementPreferenceResult.Value, command.CityId, command.CityDistricts.ToList()); getRoomForRentAnnouncementPreferenceResult.Value.ChangePriceMin(command.PriceMin); getRoomForRentAnnouncementPreferenceResult.Value.ChangePriceMax(command.PriceMax); getRoomForRentAnnouncementPreferenceResult.Value.ChangeRoomType(command.RoomType); var roomForRentAnnouncementPreferencesVerificationResult = _roomForRentAnnouncementPreferenceVerificationService.VerifyRoomForRentAnnouncementPreferences(getUserResult.Value.RoomForRentAnnouncementPreferences); if (!roomForRentAnnouncementPreferencesVerificationResult.Success) { throw new ValidationException(roomForRentAnnouncementPreferencesVerificationResult.Errors); } getUserResult.Value.AddRoomForRentAnnouncementPreferenceChangedEvent(getRoomForRentAnnouncementPreferenceResult.Value, command.CorrelationId); await _communicationBus.DispatchDomainEventsAsync(getUserResult.Value, cancellationToken); await _userRepository.UpdateAsync(getUserResult.Value); var userRoomForRentAnnouncementPreferenceUpdatedIntegrationEvent = new UserRoomForRentAnnouncementPreferenceUpdatedIntegrationEvent(command.CorrelationId, getUserResult.Value.Id, getRoomForRentAnnouncementPreferenceResult.Value.Id, getRoomForRentAnnouncementPreferenceResult.Value.CityId, getRoomForRentAnnouncementPreferenceResult.Value.PriceMin, getRoomForRentAnnouncementPreferenceResult.Value.PriceMax, getRoomForRentAnnouncementPreferenceResult.Value.RoomType.ConvertToEnum(), getRoomForRentAnnouncementPreferenceResult.Value.CityDistricts); await _integrationEventBus.PublishIntegrationEventAsync(userRoomForRentAnnouncementPreferenceUpdatedIntegrationEvent); }
public async Task <RoomForRentAnnouncementPreferenceOutputQuery> HandleAsync(GetRoomForRentAnnouncementPreferenceInputQuery inputQuery, CancellationToken cancellationToken = default) { var getUserResult = await _userGetterService.GetByIdAsync(inputQuery.UserId); if (!getUserResult.Success) { throw new ResourceNotFoundException(getUserResult.Errors); } var getRoomForRentAnnouncementPreferenceResult = _roomForRentAnnouncementPreferenceGetterService.GetByByUserAndId( getUserResult.Value, inputQuery.RoomForRentAnnouncementPreferenceId); if (!getRoomForRentAnnouncementPreferenceResult.Success) { throw new ResourceNotFoundException(getRoomForRentAnnouncementPreferenceResult.Errors); } return(_mapper.Map <RoomForRentAnnouncementPreference, RoomForRentAnnouncementPreferenceOutputQuery>(getRoomForRentAnnouncementPreferenceResult.Value)); }