public IQueryable <DeliveryAreaVM> DeliveryAreaSelect(DeliveryAreaFilterVM filter) { var lawUnit = repo.AllReadonly <LawUnit>().AsQueryable(); return(repo.AllReadonly <DeliveryArea>() .Where(x => (filter.CourtId <= 0 || x.CourtId == filter.CourtId) && ( ((filter.DateFrom ?? DateTime.MinValue) <= (x.DateFrom ?? DateTime.MinValue) && (x.DateFrom ?? DateTime.MinValue) <= (filter.DateTo ?? DateTime.MaxValue)) || ((filter.DateFrom ?? DateTime.MinValue) <= (x.DateTo ?? DateTime.MaxValue) && (x.DateTo ?? DateTime.MaxValue) <= (filter.DateTo ?? DateTime.MaxValue)) || ((x.DateFrom ?? DateTime.MinValue) <= (filter.DateFrom ?? DateTime.MinValue) && (filter.DateFrom ?? DateTime.MinValue) <= (x.DateTo ?? DateTime.MaxValue)) || ((x.DateFrom ?? DateTime.MinValue) <= (filter.DateTo ?? DateTime.MaxValue) && (filter.DateTo ?? DateTime.MaxValue) <= (x.DateTo ?? DateTime.MaxValue)) ) && (filter.ExpiredType != 0 || (x.DateExpired != null && (filter.DateExpiredFrom ?? DateTime.MinValue) <= (x.DateExpired ?? DateTime.MinValue) && (x.DateExpired ?? DateTime.MinValue) <= (filter.DateExpiredTo ?? DateTime.MaxValue))) && (filter.ExpiredType != 1 || x.DateExpired == null) ) .Select(x => new DeliveryAreaVM() { Id = x.Id, Description = x.Description, Code = x.Code, LawUnitName = lawUnit.Where(l => l.Id == x.LawUnitId).Select(d => d.FullName).FirstOrDefault(), DateFrom = x.DateFrom, DateTo = x.DateTo, DateExpired = x.DateExpired }) .AsQueryable()); }
public IActionResult Index(int?courtId) { var filter = new DeliveryAreaFilterVM() { CourtId = courtId ?? userContext.CourtId, ExpiredType = 1 }; ViewBag.ExpiredType_ddl = areaAddressService.ExpiredTypeDDL(); ViewBag.breadcrumbs = commonService.Breadcrumbs_ForDeliveryAreas().DeleteOrDisableLast(); return(View(filter)); }
public IActionResult ListData(IDataTablesRequest request, DeliveryAreaFilterVM filter) { var data = service.DeliveryAreaSelect(filter); return(request.GetResponse(data)); }
public IQueryable <DeliveryAreaVM> DeliveryAreaSelect(DeliveryAreaFilterVM filter) { var lawUnit = repo.AllReadonly <LawUnit>(); var addresses = repo.AllReadonly <DeliveryAreaAddress>(); var deliveryAreas = repo.AllReadonly <DeliveryArea>() .Where(x => (filter.CourtId <= 0 || x.CourtId == filter.CourtId) && ( ((filter.DateFrom ?? DateTime.MinValue) <= (x.DateFrom ?? DateTime.MinValue) && (x.DateFrom ?? DateTime.MinValue) <= (filter.DateTo ?? DateTime.MaxValue)) || ((filter.DateFrom ?? DateTime.MinValue) <= (x.DateTo ?? DateTime.MaxValue) && (x.DateTo ?? DateTime.MaxValue) <= (filter.DateTo ?? DateTime.MaxValue)) || ((x.DateFrom ?? DateTime.MinValue) <= (filter.DateFrom ?? DateTime.MinValue) && (filter.DateFrom ?? DateTime.MinValue) <= (x.DateTo ?? DateTime.MaxValue)) || ((x.DateFrom ?? DateTime.MinValue) <= (filter.DateTo ?? DateTime.MaxValue) && (filter.DateTo ?? DateTime.MaxValue) <= (x.DateTo ?? DateTime.MaxValue)) ) && (filter.ExpiredType != 0 || (x.DateExpired != null && (filter.DateExpiredFrom ?? DateTime.MinValue) <= (x.DateExpired ?? DateTime.MinValue) && (x.DateExpired ?? DateTime.MinValue) <= (filter.DateExpiredTo ?? DateTime.MaxValue))) && (filter.ExpiredType != 1 || x.DateExpired == null) ); bool haveAddrFilter = false; if (!string.IsNullOrEmpty(filter.CityCode) && filter.CityCode != "-1") { haveAddrFilter = true; addresses = addresses.Where(a => a.CityCode == filter.CityCode && (string.IsNullOrEmpty(filter.ResidentionAreaCode) || a.ResidentionAreaCode == filter.ResidentionAreaCode) && (string.IsNullOrEmpty(filter.StreetCode) || a.StreetCode == filter.StreetCode) ); } ; if (filter.Number > 0 || filter.Block > 0) { int maxNum = 99999; haveAddrFilter = true; int block = 0; if (filter.Block > 0) { block = filter.Block ?? 0; } int typeNumBlock; if (block % 2 == 0) { typeNumBlock = NomenclatureConstants.DeliveryAddressNumberType.BlockEven; } else { typeNumBlock = NomenclatureConstants.DeliveryAddressNumberType.BlockOdd; } int streetNum = 0; if (filter.Number > 0) { streetNum = filter.Number ?? 0; } int typeNumStreet; if (block % 2 == 0) { typeNumStreet = NomenclatureConstants.DeliveryAddressNumberType.EvenNumber; } else { typeNumStreet = NomenclatureConstants.DeliveryAddressNumberType.OddNumber; } addresses = addresses.Where(x => (block > 0 && (x.NumberType == typeNumBlock || x.NumberType == NomenclatureConstants.DeliveryAddressNumberType.Block) && (x.NumberFrom ?? 0) <= block && block <= (x.NumberTo ?? maxNum)) || (streetNum > 0 && (x.NumberType == typeNumStreet || x.NumberType == NomenclatureConstants.DeliveryAddressNumberType.OddEvenNumber) && (x.NumberFrom ?? 0) <= streetNum && streetNum <= (x.NumberTo ?? maxNum))); } if (haveAddrFilter) { deliveryAreas = deliveryAreas.Where(x => addresses.Any(a => a.DeliveryAreaId == x.Id && a.DateExpired == null)); } return(deliveryAreas .Select(x => new DeliveryAreaVM() { Id = x.Id, Description = x.Description, Code = x.Code, LawUnitName = lawUnit.Where(l => l.Id == x.LawUnitId).Select(d => d.FullName).FirstOrDefault(), DateFrom = x.DateFrom, DateTo = x.DateTo, DateExpired = x.DateExpired })); }