Untitled

 avatar
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