From bce5562aafbffff05786482112b99e3a8fe70824 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Wed, 15 Feb 2017 18:00:37 +0200 Subject: [PATCH] add filter to bus stop --- src/MapsDb/DataService/BusStopDs.cs | 62 ++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/src/MapsDb/DataService/BusStopDs.cs b/src/MapsDb/DataService/BusStopDs.cs index 89d5a2b..fbce612 100644 --- a/src/MapsDb/DataService/BusStopDs.cs +++ b/src/MapsDb/DataService/BusStopDs.cs @@ -31,6 +31,7 @@ namespace MapsDb.DataService .Include(d=>d.Region) .Include(d=>d.SurfaceType) .Include(d=>d.StateCommon); + data = Filtering(pagination.filter, data); //.Where(d => d.Region.Name == filter); @@ -88,20 +89,21 @@ namespace MapsDb.DataService continue; } string field = char.ToUpper(filter[1][0]) + filter[1].Substring(1); + string param = filter[2].ToLower(); if(word.StartsWith("$")){ - data = FilterByEndWith(field, filter[2], data); + data = FilterByEndWith(field, param, data); } else if(word.StartsWith("^")){ - data = FilterByStartWith(field, filter[2], data); + data = FilterByStartWith(field, param, data); } else if(word.StartsWith("*")){ - data = FilterByComtains(field, filter[2], data); + data = FilterByComtains(field, param, data); } else if(word.StartsWith("!")){ - data = FilterByNotEquals(field, filter[2], data); + data = FilterByNotEquals(field, param, data); } else if(word.StartsWith("=")){ - data = FilterByEquals(field, filter[2], data); + data = FilterByEquals(field, param, data); } } @@ -111,72 +113,72 @@ namespace MapsDb.DataService public IQueryable FilterByComtains(string field, string param, IQueryable data){ switch(field){ case "RoadId": - return data.Where(i => i.Road.Name.Contains(param) ); + return data.Where(i => i.Road.Name != null && i.Road.Name.ToLower().Contains(param) ); case "RegionId": - return data.Where(i => i.Region.Name.Contains(param) ); + return data.Where(i => i.Region.Name != null && i.Region.Name.ToLower().Contains(param) ); case "SurfaceTypeId": - return data.Where(i => i.SurfaceType.Name.Contains(param) ); + return data.Where(i => i.SurfaceType.Name != null && i.SurfaceType.Name.ToLower().Contains(param) ); case "StateCommonId": - return data.Where(i => i.StateCommon.Value.Contains(param) ); + return data.Where(i => i.StateCommon.Value != null && i.StateCommon.Value.ToLower().Contains(param) ); default: - return data.Where(i => Convert.ToString(i.GetType().GetProperty(field).GetValue(i, null)).Contains(param) ); + return data.Where(i => Convert.ToString(i.GetType().GetProperty(field).GetValue(i, null)).ToLower().Contains(param) ); } } public IQueryable FilterByEquals(string field, string param, IQueryable data){ switch(field){ case "RoadId": - return data.Where(i => i.Road.Name == param ); + return data.Where(i => i.Road.Name != null && i.Road.Name.ToLower() == param ); case "RegionId": - return data.Where(i => i.Region.Name == param ); + return data.Where(i => i.Region.Name != null && i.Region.Name.ToLower() == param ); case "SurfaceTypeId": - return data.Where(i => i.SurfaceType.Name == param ); + return data.Where(i => i.SurfaceType.Name != null && i.SurfaceType.Name.ToLower() == param ); case "StateCommonId": - return data.Where(i => i.StateCommon.Value == param ); + return data.Where(i => i.StateCommon.Value != null && i.StateCommon.Value.ToLower() == param ); default: - return data.Where(i => Convert.ToString(i.GetType().GetProperty(field).GetValue(i, null)) == param ); + return data.Where(i => Convert.ToString(i.GetType().GetProperty(field).GetValue(i, null)).ToLower() == param ); } } public IQueryable FilterByNotEquals(string field, string param, IQueryable data){ switch(field){ case "RoadId": - return data.Where(i => i.Road.Name != param ); + return data.Where(i => i.Road.Name != null && i.Road.Name.ToLower() != param ); case "RegionId": - return data.Where(i => i.Region.Name != param ); + return data.Where(i => i.Region.Name != null && i.Region.Name.ToLower() != param ); case "SurfaceTypeId": - return data.Where(i => i.SurfaceType.Name != param ); + return data.Where(i => i.SurfaceType.Name != null && i.SurfaceType.Name.ToLower() != param ); case "StateCommonId": - return data.Where(i => i.StateCommon.Value != param ); + return data.Where(i => i.StateCommon.Value != null && i.StateCommon.Value.ToLower() != param ); default: - return data.Where(i => Convert.ToString(i.GetType().GetProperty(field).GetValue(i, null)) != param ); + return data.Where(i => Convert.ToString(i.GetType().GetProperty(field).GetValue(i, null)).ToLower() != param ); } } public IQueryable FilterByStartWith(string field, string param, IQueryable data){ switch(field){ case "RoadId": - return data.Where(i => i.Road.Name.StartsWith(param) ); + return data.Where(i => i.Road.Name != null && i.Road.Name.ToLower().StartsWith(param) ); case "RegionId": - return data.Where(i => i.Region.Name.StartsWith(param) ); + return data.Where(i => i.Region.Name != null && i.Region.Name.ToLower().StartsWith(param) ); case "SurfaceTypeId": - return data.Where(i => i.SurfaceType.Name.StartsWith(param) ); + return data.Where(i => i.SurfaceType.Name != null && i.SurfaceType.Name.ToLower().StartsWith(param) ); case "StateCommonId": - return data.Where(i => i.StateCommon.Value.StartsWith(param) ); + return data.Where(i => i.StateCommon.Value != null && i.StateCommon.Value.ToLower().StartsWith(param) ); default: - return data.Where(i => Convert.ToString(i.GetType().GetProperty(field).GetValue(i, null)).StartsWith(param) ); + return data.Where(i => Convert.ToString(i.GetType().GetProperty(field).GetValue(i, null)).ToLower().StartsWith(param) ); } } public IQueryable FilterByEndWith(string field, string param, IQueryable data){ switch(field){ case "RoadId": - return data.Where(i => i.Road.Name.EndsWith(param) ); + return data.Where(i => i.Road.Name != null && i.Road.Name.ToLower().EndsWith(param) ); case "RegionId": - return data.Where(i => i.Region.Name.EndsWith(param) ); + return data.Where(i => i.Region.Name != null && i.Region.Name.ToLower().EndsWith(param) ); case "SurfaceTypeId": - return data.Where(i => i.SurfaceType.Name.EndsWith(param) ); + return data.Where(i => i.SurfaceType.Name != null && i.SurfaceType.Name.ToLower().EndsWith(param) ); case "StateCommonId": - return data.Where(i => i.StateCommon.Value.EndsWith(param) ); + return data.Where(i => i.StateCommon.Value != null && i.StateCommon.Value.ToLower().EndsWith(param) ); default: - return data.Where(i => Convert.ToString(i.GetType().GetProperty(field).GetValue(i, null)).EndsWith(param) ); + return data.Where(i => Convert.ToString(i.GetType().GetProperty(field).GetValue(i, null)).ToLower().EndsWith(param) ); } } public async Task DeleteAsync(int Id) -- libgit2 0.21.4