Untitled
unknown
csharp
a year ago
4.7 kB
3
Indexable
public class GetDatabaseAdsQueryHandler : IRequestHandler<GetDatabaseAdsQuery, List<Advert>> { private readonly IScrapersUnitOfWork _scrapersUnitOfWork; public GetDatabaseAdsQueryHandler(IScrapersUnitOfWork scrapersUnitOfWork) { _scrapersUnitOfWork = scrapersUnitOfWork; } public async Task<List<Advert>> Handle(GetDatabaseAdsQuery request, CancellationToken cancellationToken) { var adverts = await _scrapersUnitOfWork.Adverts.GetSet() .Include(a => a.City!.Country) .Include(a => a.ExternalModel.ExternalMake.InternalValue) .Include(a => a.ExternalModel.InternalValue) .Include(a => a.BodyType!.InternalValue) .Include(a => a.Color!.InternalValue) .Include(a => a.Drivetrain!.InternalValue) .Include(a => a.FuelType!.InternalValue) .Include(a => a.Transmission!.InternalValue) .Include(a => a.SteeringType!.InternalValue) .Include(a => a.NumOfDoors!.InternalValue) .Include(a => a.NumOfSeats!.InternalValue) .Include(a => a.City!.Country) .Where(a => !request.SearchParams.CountryId.HasValue || (a.City != null && a.City.Country.Id == request.SearchParams.CountryId)) .Where(a => !request.SearchParams.MakeId.HasValue || (a.ExternalModel != null && a.ExternalModel.ExternalMake != null && a.ExternalModel.ExternalMake.InternalValue.Id == request.SearchParams.MakeId)) .Where(a => !request.SearchParams.ModelId.HasValue || (a.ExternalModel != null && a.ExternalModel.InternalValue.Id == request.SearchParams.ModelId)) .Where(a => !request.SearchParams.EngineCapacityFrom.HasValue || (a.EngineCapacity >= request.SearchParams.EngineCapacityFrom)) .Where(a => !request.SearchParams.EngineCapacityTo.HasValue || (a.EngineCapacity <= request.SearchParams.EngineCapacityTo)) .Where(a => !request.SearchParams.EnginePowerFrom.HasValue || (a.EnginePower >= request.SearchParams.EnginePowerFrom)) .Where(a => !request.SearchParams.EnginePowerTo.HasValue || (a.EnginePower <= request.SearchParams.EnginePowerTo)) .Where(a => !request.SearchParams.KilometrageFrom.HasValue || (a.Mileage >= request.SearchParams.KilometrageFrom)) .Where(a => !request.SearchParams.KilometrageTo.HasValue || (a.Mileage <= request.SearchParams.KilometrageTo)) .Where(a => !request.SearchParams.MakeYearFrom.HasValue || (a.MakeDate.HasValue && a.MakeDate.Value.Year >= request.SearchParams.MakeYearFrom)) .Where(a => !request.SearchParams.MakeYearTo.HasValue || (a.MakeDate.HasValue && a.MakeDate.Value.Year <= request.SearchParams.MakeYearTo)) .Where(a => !request.SearchParams.PriceFrom.HasValue || (a.Price.HasValue && a.Price >= request.SearchParams.PriceFrom)) .Where(a => !request.SearchParams.PriceTo.HasValue || (a.Price.HasValue && a.Price <= request.SearchParams.PriceTo)) .Where(a => !request.SearchParams.ColorId.HasValue || (a.Color != null && a.Color.InternalValue.Id == request.SearchParams.ColorId)) .Where(a => !request.SearchParams.FuelTypeId.HasValue || (a.FuelType != null && a.FuelType.InternalValue.Id == request.SearchParams.FuelTypeId)) .Where(a => !request.SearchParams.BodyTypeId.HasValue || (a.BodyType != null && a.BodyType.InternalValue.Id == request.SearchParams.BodyTypeId)) .Where(a => !request.SearchParams.DrivetrainId.HasValue || (a.Drivetrain != null && a.Drivetrain.InternalValue.Id == request.SearchParams.DrivetrainId)) .Where(a => !request.SearchParams.NumOfSeatsId.HasValue || (a.NumOfSeats != null && a.NumOfSeats.InternalValue.Id == request.SearchParams.NumOfSeatsId)) .Where(a => !request.SearchParams.NumOfDoorsId.HasValue || (a.NumOfDoors != null && a.NumOfDoors.InternalValue.Id == request.SearchParams.NumOfDoorsId)) .Where(a => !request.SearchParams.TransmissionId.HasValue || (a.Transmission != null && a.Transmission.InternalValue.Id == request.SearchParams.TransmissionId)) .Where(a => !request.SearchParams.SteeringId.HasValue || (a.SteeringType != null && a.SteeringType.InternalValue.Id == request.SearchParams.SteeringId)) .Where(a => !request.SearchParams.CountryId.HasValue || (a.City != null && a.City.Country != null && a.City.Country.Id == request.SearchParams.CountryId)) .ToListAsync(cancellationToken: cancellationToken); return adverts; } }
Editor is loading...
Leave a Comment