public IActionResult Pool(string prefix = "", int page = 1) { if (string.IsNullOrEmpty(prefix)) { prefix = ""; } var model = new NumberingPoolViewModel() { Prefix = prefix, Miscs = repository.Miscs.OrderBy(x => x.Name).ToArray(), PagingInfo = new PagingInfo() { CurrentPage = page, ItemsPerPage = Settings.PageSize, From = (page - 1) * Settings.PageSize, To = (page - 1) * Settings.PageSize + Settings.PageSize, TotalItems = repository.NumberingPools .Where(x => x.Prefix.StartsWith(prefix)) .Count() }, Prefixes = repository.GetNps() .Where(x => x.Prefix.StartsWith(prefix)) .Skip((page - 1) * Settings.PageSize) .Take(Settings.PageSize) .ToArray() }; return(View("Pool", model)); }
private IQueryable <NumberingPool> NumberingQuery(NpSearch search) { var query = repository.GetNps(); if (!string.IsNullOrEmpty(search.Prefix)) { switch (search.PrefixMode) { case QueryMode.RightMatch: query = query.Where(x => x.Prefix.StartsWith(search.Prefix)); break; case QueryMode.Exact: query = query.Where(x => x.Prefix == search.Prefix); break; case QueryMode.Like: query = query.Where(x => x.Prefix.Contains(search.Prefix)); break; default: break; } } if (!string.IsNullOrEmpty(search.Abb)) { query = query.Where(x => x.Abb == search.Abb); } if (search.ChargingCases != null) { query = query.Where(x => search.ChargingCases.Contains(x.ChargingCase)); } if (search.Directions != null) { query = query.Where(x => search.Directions.Contains(x.Direction.Value)); } if (search.Max != null) { query = query.Where(x => x.Max == search.Max); } if (search.Min != null) { query = query.Where(x => x.Min == search.Min); } if (search.Owners != null) { query = query.Where(x => search.Owners.Contains(x.Owner)); } if (search.RondTypes != null) { query = query.Where(x => search.RondTypes.Contains(x.Rond)); } if (search.Statuses != null) { query = query.Where(x => search.Statuses.Contains(x.Status)); } if (!string.IsNullOrEmpty(search.SubscriberName)) { search.SubscriberName = search.SubscriberName.Replace('ي', 'ی').Replace('ك', 'ک'); query = query.Where(x => x.NormalizedSubscriberName.Contains(search.SubscriberName.Replace(" ", ""))); } if (search.RondTypes != null) { query = query.Where(x => search.RondTypes.Contains(x.Rond)); } if (search.NumberTypes != null) { query = query.Where(x => search.NumberTypes.Contains(x.NumberType)); } if (search.LinkTypes != null) { query = query.Where(x => search.LinkTypes.Contains(x.Link.Value)); } if (search.Areas != null) { query = query.Where(x => search.Areas.Contains(x.Area.Value)); } return(query); }