From 09f3a46edc80c07df178c509bcdbc571715aed0c Mon Sep 17 00:00:00 2001 From: cuqmbr Date: Thu, 1 May 2025 21:04:02 +0300 Subject: [PATCH] add more filter options for GetAddressesPageQuery --- .../GetAddressesPage/GetAddressesPageQuery.cs | 11 +++++++++++ .../GetAddressesPageQueryHandler.cs | 15 +++++++++++++++ .../ViewModels/GetAddressesPageFilterViewModel.cs | 10 ++++++++++ src/HttpApi/Controllers/AddressesController.cs | 9 +++++++++ 4 files changed, 45 insertions(+) diff --git a/src/Application/Addresses/Queries/GetAddressesPage/GetAddressesPageQuery.cs b/src/Application/Addresses/Queries/GetAddressesPage/GetAddressesPageQuery.cs index deaae5a..36ed29a 100644 --- a/src/Application/Addresses/Queries/GetAddressesPage/GetAddressesPageQuery.cs +++ b/src/Application/Addresses/Queries/GetAddressesPage/GetAddressesPageQuery.cs @@ -1,4 +1,5 @@ using cuqmbr.TravelGuide.Application.Common.Models; +using cuqmbr.TravelGuide.Domain.Enums; using MediatR; namespace cuqmbr.TravelGuide.Application.Addresses.Queries.GetAddressesPage; @@ -18,4 +19,14 @@ public record GetAddressesPageQuery : IRequest> public Guid? RegionGuid { get; set; } public Guid? CityGuid { get; set; } + + public double? LongitudeGreaterOrEqualThan { get; set; } + + public double? LongitudeLessOrEqualThan { get; set; } + + public double? LatitudeGreaterOrEqualThan { get; set; } + + public double? LatitudeLessOrEqualThan { get; set; } + + public VehicleType? VehicleType { get; set; } } diff --git a/src/Application/Addresses/Queries/GetAddressesPage/GetAddressesPageQueryHandler.cs b/src/Application/Addresses/Queries/GetAddressesPage/GetAddressesPageQueryHandler.cs index 0be0bca..9b4cd25 100644 --- a/src/Application/Addresses/Queries/GetAddressesPage/GetAddressesPageQueryHandler.cs +++ b/src/Application/Addresses/Queries/GetAddressesPage/GetAddressesPageQueryHandler.cs @@ -30,6 +30,21 @@ public class GetAddressesPageQueryHandler : e.City.Name.ToLower().Contains(request.Search.ToLower()) || e.City.Region.Name.ToLower().Contains(request.Search.ToLower()) || e.City.Region.Country.Name.ToLower().Contains(request.Search.ToLower())) && + (request.LongitudeGreaterOrEqualThan != null + ? e.Longitude >= request.LongitudeGreaterOrEqualThan + : true) && + (request.LongitudeLessOrEqualThan != null + ? e.Longitude <= request.LongitudeLessOrEqualThan + : true) && + (request.LatitudeGreaterOrEqualThan != null + ? e.Latitude >= request.LatitudeGreaterOrEqualThan + : true) && + (request.LatitudeLessOrEqualThan != null + ? e.Latitude <= request.LatitudeLessOrEqualThan + : true) && + (request.VehicleType != null + ? e.VehicleType == request.VehicleType + : true) && (request.CityGuid != null ? e.City.Guid == request.CityGuid : true) && diff --git a/src/Application/Addresses/ViewModels/GetAddressesPageFilterViewModel.cs b/src/Application/Addresses/ViewModels/GetAddressesPageFilterViewModel.cs index 610f6c9..9dc7a20 100644 --- a/src/Application/Addresses/ViewModels/GetAddressesPageFilterViewModel.cs +++ b/src/Application/Addresses/ViewModels/GetAddressesPageFilterViewModel.cs @@ -7,4 +7,14 @@ public sealed class GetAddressesPageFilterViewModel public Guid? RegionUuid { get; set; } public Guid? CityUuid { get; set; } + + public double? LongitudeGreaterOrEqualThan { get; set; } + + public double? LongitudeLessOrEqualThan { get; set; } + + public double? LatitudeGreaterOrEqualThan { get; set; } + + public double? LatitudeLessOrEqualThan { get; set; } + + public string? VehicleType { get; set; } } diff --git a/src/HttpApi/Controllers/AddressesController.cs b/src/HttpApi/Controllers/AddressesController.cs index 4d34676..825dca9 100644 --- a/src/HttpApi/Controllers/AddressesController.cs +++ b/src/HttpApi/Controllers/AddressesController.cs @@ -89,6 +89,15 @@ public class AddressesController : ControllerBase PageSize = pageQuery.PageSize, Search = searchQuery.Search, Sort = sortQuery.Sort, + LongitudeGreaterOrEqualThan = + filterQuery.LongitudeGreaterOrEqualThan, + LongitudeLessOrEqualThan = + filterQuery.LongitudeLessOrEqualThan, + LatitudeGreaterOrEqualThan = + filterQuery.LatitudeGreaterOrEqualThan, + LatitudeLessOrEqualThan = + filterQuery.LatitudeLessOrEqualThan, + VehicleType = VehicleType.FromName(filterQuery.VehicleType), CountryGuid = filterQuery.CountryUuid, RegionGuid = filterQuery.RegionUuid, CityGuid = filterQuery.CityUuid