public IList <ICarSearchDataEntity> getQueryable(IFilterEntity filters, ICarFilterEntity cf, string sortExpression, string sortDirection) { using (MarsDBDataContext db = new MarsDBDataContext()) { var qDetails = new VehicleDetailsQueryable().getQueryable(db); var qFilter = new VehiclesFilterQueryable().getQueryable(filters, db, qDetails); var qCarFilter = new CarFilterQueryable().getQueryable(cf, db, qFilter); IQueryable <ICarSearchDataEntity> qVDFilter; switch (filters.VehiclePredicament) { case 0: qVDFilter = new VehicleDetailsAllQueryable().getQueryable(filters, db, qCarFilter); break; case 1: qVDFilter = new VehicleDetailsOROwnToForeign().getQueryable(filters, db, qCarFilter); break; case 2: qVDFilter = new VehicleDetailsTXToForeignQueryable().getQueryable(filters, db, qCarFilter); break; case 3: qVDFilter = new VehicleDetailsIdleQueryable().getQueryable(filters, db, qCarFilter); break; case 4: qVDFilter = new VehicleDetailsORInBetweenQueryable().getQueryable(filters, db, qCarFilter); break; case 5: qVDFilter = new VehicleDetailsORReturningQueryable().getQueryable(filters, db, qCarFilter); break; case 6: qVDFilter = new VehicleDetailsTXReturningQueryable().getQueryable(filters, db, qCarFilter); break; case 7: qVDFilter = new VehicleDetailsNonRevQueryable().getQueryable(filters, db, qCarFilter); break; default: qVDFilter = qCarFilter; break; } var l1 = qVDFilter.ToList(); var l2 = new VehicleDetailsSortQueryable().getQueryable(sortExpression, sortDirection, db, l1.AsQueryable()).ToList(); return(l2); } }
public IQueryable <ICarSearchDataEntity> getQueryable(IFilterEntity f, DataContext db, IQueryable <ICarSearchDataEntity> q) { return(from p in q where p.OwnCountry != p.Lstwwd.Substring(0, 2) && (string.IsNullOrEmpty(f.DueCountry) || f.DueCountry.Equals(p.Lstwwd.Substring(0, 2))) select p); }
public IQueryable <ICarSearchDataEntity> getQueryable(IFilterEntity filters, MarsDBDataContext db, IQueryable <ICarSearchDataEntity> q) { return(from p in q where (p.Pool == filters.Pool || filters.Pool == "" || filters.Pool == null) && (p.LocGroup == filters.Location || filters.Location == "" || filters.Location == null) && (p.Vc == filters.CarGroup || filters.CarGroup == "" || filters.CarGroup == null) && ((from cg in db.CAR_GROUPs from cc in db.CAR_CLASSes where cg.car_class_id == cc.car_class_id && cg.car_group1 == p.Vc select cc.car_class1).Contains(filters.CarClass) || filters.CarClass == "" || filters.CarClass == null) && ((from cg in db.CAR_GROUPs from cc in db.CAR_CLASSes from cs in db.CAR_SEGMENTs where cs.car_segment_id == cc.car_segment_id && cg.car_class_id == cc.car_class_id && cg.car_group1 == p.Vc select cs.car_segment1).Contains(filters.CarSegment) || filters.CarSegment == "" || filters.CarSegment == null) && (p.Nonrev >= filters.nonRev) && // non Revenue selection (p.Mt.Contains(filters.MoveType) || string.IsNullOrEmpty(filters.MoveType)) && (p.Op == filters.Operstat || string.IsNullOrEmpty(filters.Operstat) || (filters.Operstat == "Shop" ? p.Op == "BD" || p.Op == "MM" || p.Op == "TW" : false) || (filters.Operstat == "Other" ? p.Op != "RT" && p.Op != "BD" && p.Op != "MM" && p.Op != "TW" : false) ) && (filters.OwnCountry == p.OwnCountry || string.IsNullOrEmpty(filters.OwnCountry)) select p); }
public VehicleDetailsController_002() { OperstatModel = new FilterModel2(new OperstatRepository()); MoveTypeModel = new FilterModel2(new MoveTypeRepository()); ThreeCascadeModel = new ThreeCascadeFilterModel(new FleetEuropeActualDueCountriesRepository(), new PoolRepository(), new LocationRepository()); OwnCountryModel = new FilterModel2(new FleetActualEuropeOwnCountriesRepository()); CarSegmentModel = new FilterModel2(new CarSegmentRepository()); CarClassModel = new FilterModel2(new CarClassRepository()); CarGroupModel = new FilterModel2(new CarGroupRepository()); VehiclePredicamentModel = new FilterModel2(new VehiclePredicamentRepository()); NonRevDaysModel = new NonRevFilterModel(new NonrevRepository()); GridViewModel = new GridviewModel(new VehicleDetailsRepository()); _filter = new FilterEntity(); _carFilter = new CarFilterEntity(); VehicleDetailsUserControlModel = new VehicleDetailsUserControlModel(new VehicleDetailsRepository()); PagerMaxModel = new PagerMaxRowsModel(new GridViewMaxRowsRepository()); UnitTextBoxModel = new TextFilterModel(); LicenseTextBoxModel = new TextFilterModel(); ModelTextBoxModel = new TextFilterModel(); ModelDescTextBoxModel = new TextFilterModel(); VinTextBoxModel = new TextFilterModel(); CustNameTextBoxModel = new TextFilterModel(); ColourTextBoxModel = new TextFilterModel(); MileageTextBoxModel = new TextFilterModel(); FilterGridButtonModel = new ButtonModel(); ClearFiltersButtonModel = new ButtonModel(); }
private ConditionState CheckCondition(object field, IFilterEntity entity) { if (entity == null) { return(ConditionState.NOT_USED); } if (entity is FilterText) { FilterText innerEntity = (FilterText)entity; if (string.IsNullOrEmpty(innerEntity.Condition) || string.IsNullOrEmpty(innerEntity.Value)) { return(ConditionState.NOT_USED); } string innerField = Convert.ToString(field); if (innerEntity.Condition.Equals("contains")) { return(innerField.Contains(innerEntity.Value) ? ConditionState.PASSED : ConditionState.NOT_PASSED); } else if (innerEntity.Condition.Equals("equals")) { return(innerField.Equals(innerEntity.Value) ? ConditionState.PASSED : ConditionState.NOT_PASSED); } else { return(ConditionState.NOT_USED); } } else if (entity is FilterDate) { FilterDate innerEntity = (FilterDate)entity; if (innerEntity.From == null || innerEntity.To == null) { return(ConditionState.NOT_USED); } DateTime innerField = Convert.ToDateTime(field); DateTime from = DateTime.Parse(innerEntity.From); DateTime to = DateTime.Parse(innerEntity.To); int fromResult = DateTime.Compare(from, innerField); if (fromResult <= 0) { int toResult = DateTime.Compare(innerField, to); if (toResult <= 0) { return(ConditionState.PASSED); } } return(ConditionState.NOT_PASSED); } else { return(ConditionState.NOT_PASSED); } }
public IQueryable <ICarSearchDataEntity> getQueryable(IFilterEntity f, DataContext db, IQueryable <ICarSearchDataEntity> q) { return(from p in q where (p.OwnCountry != p.Lstwwd.Substring(0, 2) && p.OwnCountry != ((p.Duewwd == null || p.Duewwd == "") ? p.Lstwwd.Substring(0, 2) : p.Duewwd.Substring(0, 2)) && (p.OnRent != 1)) && (string.IsNullOrEmpty(f.DueCountry) || ((p.Duewwd == null || p.Duewwd == "") ? f.DueCountry.Equals(p.Lstwwd.Substring(0, 2)) : f.DueCountry.Equals(p.Duewwd.Substring(0, 2)))) select p); }
public FleetOverviewController() { ThreeCascadeModel = new ThreeCascadeFilterModel(new FleetEuropeActualDueCountriesRepository(), new PoolRepository(), new LocationRepository()); OwnCountryModel = new FilterModel2(new FleetActualEuropeOwnCountriesRepository()); CarSegmentModel = new FilterModel2(new CarSegmentRepository()); CarClassModel = new FilterModel2(new CarClassRepository()); CarGroupModel = new FilterModel2(new CarGroupRepository()); VehiclePredicamentModel = new FilterModel2(new VehiclePredicamentRepository()); DataTableModel = new DataTableModel(new FleetOverviewRepository()); _filter = new FilterEntity(); }
public UtilisationHistoryController() { CountryFilter = new FilterModel(new CountryDescriptionRepository()); StartDateFilterModel = new TextFilterModel(); EndDateFilter = new TextFilterModel(); IUtilisationHistoryRepository uhr = new UtilisationHistoryRepository(); DataTableModel = new UtilisationDataTableModel(uhr); DataTableModel.ColumnHeader = @"Date/Country"; _filter = new FilterEntity(); ChartModel = new ChartModel(uhr); }
public virtual IList <T> GetFiltered(IFilterEntity <T> fd) { List <T> res = new List <T>(); foreach (KeyValuePair <long, T> pair in _index) { if (fd.IsOK(pair.Value)) { res.Add(pair.Value); } } if (res.Count == 0) { return(null); } return(res); }
public IList <IDataTableEntity> getList(IFilterEntity filters) { using (UtilisationRepositoryDataContext db = new UtilisationRepositoryDataContext()) { string owningCountry = filters.OwnCountry; DateTime startDate = filters.ReservationStartDate; // cheat!!!! DateTime endDate = filters.ReservationEndDate; _storedList.Clear(); // thank goodness for .net 4 try { var q = from p in db.GetVehiclesAbroadUtilization(owningCountry, startDate, endDate) select new UtilisationHistoryEntity { Local = (decimal)p.UTILIZATION_IN_COUNTRY * 100, OutOfCountry = (decimal)p.UTILIZATION_OUT_OF_COUNTRY * 100, OwnCountry = p.ownCountry, Rep_Date = p.REPDATE ?? DateTime.Now }; foreach (var item in q) { _storedList.Add(new DataTableEntity { header = item.OwnCountry + "_out", rowDefinition = item.Rep_Date.ToShortDateString(), theValue = item.OutOfCountry.ToString("0.##") }); _storedList.Add(new DataTableEntity { header = item.OwnCountry + "_local", rowDefinition = item.Rep_Date.ToShortDateString(), theValue = item.Local.ToString("0.##") }); } } catch (Exception ex) { //_logger.Error("Exception thrown in UtilisationHistoryRepository, message = " + ex.Message); } return(_storedList); } }
public IList <ICarSearchDataEntity> getQueryable(IFilterEntity filters, ICarFilterEntity cf, string sortExpression = "", string sortDirection = "") { IList <ICarSearchDataEntity> l = new List <ICarSearchDataEntity>(); for (int i = 0; i < 100; i++) { l.Add(new CarSearchDataEntity { License = "A000" + i, Lstwwd = "GE00" + i, OwnCountry = "FR", Pool = i.ToString(), LocGroup = i.ToString(), Vc = i.ToString(), Unit = i.ToString(), Model = "Tank" + i, Moddesc = "Sherman" + i, Driver = "Number " + i, Colour = "Red", Lstmlg = i }); } return(l); }
public override IQueryable <ReservationMatchEntity> GetQueryable(MarsDBDataContext db, IFilterEntity Filters, ICarFilterEntity CarFilters, string SortExpression) { try { var tmp = new FleetEuropeActualQueryable().GetQueryable(db); IQueryable <Reservations> q1 = from p in db.Reservations join startloc in db.LOCATIONs on p.RENT_LOC equals startloc.dim_Location_id join startCmsLoc in db.CMS_LOCATION_GROUPs on startloc.cms_location_group_id equals startCmsLoc.cms_location_group_id join startCmsP in db.CMS_POOLs on startCmsLoc.cms_pool_id equals startCmsP.cms_pool_id join startCtry in db.COUNTRies on startCmsP.country equals startCtry.country1 // Return Location join returnloc in db.LOCATIONs on p.RTRN_LOC equals returnloc.dim_Location_id // Car details join carGp in db.CAR_GROUPs on p.GR_INCL_GOLDUPGR equals carGp.car_group_id where (p.COUNTRY != returnloc.country) && (Filters.OwnCountry == p.COUNTRY || Filters.OwnCountry == "" || Filters.OwnCountry == null) && (p.ReservedCarGroup == Filters.CarGroup || Filters.CarGroup == "" || Filters.CarGroup == null) && (startCtry.active) && // only corporate countries (Filters.CarGroup == carGp.car_group1 || string.IsNullOrEmpty(Filters.CarGroup)) && (p.RS_ARRIVAL_DATE >= Filters.ReservationStartDate && p.RS_ARRIVAL_DATE <= Filters.ReservationEndDate) // reservation start dates select p; q1 = new ReservationMatchCarSegmentQueryable().GetQueryable(db, q1, Filters.CarSegment); q1 = new ReservationMatchCarClassQueryable().GetQueryable(db, q1, Filters.CarClass); q1 = new ReservationMatchPoolQueryable().GetQueryable(db, q1, Filters.Pool); q1 = new ReservationMatchReturnQueryable().GetQueryable(db, q1, Filters.DueCountry, Filters.DuePool, Filters.DueLocationGroup); IQueryable <ReservationMatchEntity> q = from p in q1 // Start Location join startloc in db.LOCATIONs on p.RENT_LOC equals startloc.dim_Location_id join startCmsLoc in db.CMS_LOCATION_GROUPs on startloc.cms_location_group_id equals startCmsLoc.cms_location_group_id join startCmsP in db.CMS_POOLs on startCmsLoc.cms_pool_id equals startCmsP.cms_pool_id join startCtry in db.COUNTRies on startCmsP.country equals startCtry.country1 // Return Location join returnloc in db.LOCATIONs on p.RTRN_LOC equals returnloc.dim_Location_id join returnCmsLoc in db.CMS_LOCATION_GROUPs on returnloc.cms_location_group_id equals returnCmsLoc.cms_location_group_id join returnCmsP in db.CMS_POOLs on returnCmsLoc.cms_pool_id equals returnCmsP.cms_pool_id join returnCtry in db.COUNTRies on returnCmsP.country equals returnCtry.country1 // Car details join carGp in db.CAR_GROUPs on p.GR_INCL_GOLDUPGR equals carGp.car_group_id join carCs in db.CAR_CLASSes on carGp.car_class_id equals carCs.car_class_id join carS in db.CAR_SEGMENTs on carCs.car_segment_id equals carS.car_segment_id join t1 in tmp on new { x0 = returnloc.served_by_locn.Substring(0, 2), x1 = startCmsLoc.cms_location_group1 } equals new { x0 = t1.OwningCountry, x1 = t1.CurrentLocation } into tj from t in tj.DefaultIfEmpty() where (returnCmsLoc.cms_location_group1 == Filters.Location || Filters.Location == "" || Filters.Location == null) select new ReservationMatchEntity { ResLocation = startloc.served_by_locn, ResGroup = carGp.car_group1, ResCheckoutDate = new DateTime(p.RS_ARRIVAL_DATE.Value.Year, p.RS_ARRIVAL_DATE.Value.Month, p.RS_ARRIVAL_DATE.Value.Day, p.RS_ARRIVAL_TIME.Value.Hour, p.RS_ARRIVAL_TIME.Value.Minute, 0), ResCheckoutLoc = startloc.served_by_locn, ResCheckinLoc = returnloc.served_by_locn, ResId = p.RES_ID_NBR, ResNoDaysUntilCheckout = SqlMethods.DateDiffDay(DateTime.Now, p.RS_ARRIVAL_DATE.Value).ToString(), ResNoDaysReserved = ((int)p.RES_DAYS).ToString(), ResDriverName = p.CUST_NAME, Matches = t.Count == null ? "0" : t.Count.ToString() }; switch (SortExpression) { case "ResLocation": q = q.OrderBy(p => p.ResLocation); break; case "ResLocation DESC": q = q.OrderByDescending(p => p.ResLocation); break; case "ResGroup": q = q.OrderBy(p => p.ResGroup); break; case "ResGroup DESC": q = q.OrderByDescending(p => p.ResGroup); break; case "ResCheckoutDate": q = q.OrderBy(p => p.ResCheckoutDate); break; case "ResCheckoutDate DESC": q = q.OrderByDescending(p => p.ResCheckoutDate); break; case "ResCheckinLoc": q = q.OrderBy(p => p.ResCheckinLoc); break; case "ResCheckinLoc DESC": q = q.OrderByDescending(p => p.ResCheckinLoc); break; case "ResNoDaysUntilCheckout": q = q.OrderBy(p => p.ResNoDaysUntilCheckout); break; case "ResNoDaysUntilCheckout DESC": q = q.OrderByDescending(p => p.ResNoDaysUntilCheckout); break; case "ResNoDaysReserved": q = q.OrderBy(p => p.ResNoDaysReserved); break; case "ResNoDaysReserved DESC": q = q.OrderByDescending(p => p.ResNoDaysReserved); break; case "ResDriverName": q = q.OrderBy(p => p.ResDriverName); break; case "ResDriverName DESC": q = q.OrderByDescending(p => p.ResDriverName); break; case "ResId": q = q.OrderBy(p => p.ResId); break; case "ResId DESC": q = q.OrderByDescending(p => p.ResId); break; case "Matches": q = q.OrderBy(p => p.Matches); break; case "Matches DESC": q = q.OrderByDescending(p => p.Matches); break; default: q = q.OrderBy(p => p.ResNoDaysUntilCheckout).ThenBy(p => p.ResLocation); break; } return(q); } catch (Exception ex) { //.Error("Exception thrown in ReservationDetails Model, exception = " + ex); throw new Exception("Exception thrown in ReservationDetails Model, exception = " + ex); } }
public override IList <ReservationMatchEntity> GetList(IFilterEntity Filters, ICarFilterEntity CarFilters, string SortExpression) { using (MarsDBDataContext db = new MarsDBDataContext()) return(GetQueryable(db, Filters, CarFilters, SortExpression).ToList()); }
public List <FleetMatchEntity> getNewList(IFilterEntity f, string license, string sortExpression) { using (MarsDBDataContext db = new MarsDBDataContext()) { var qDetails = new VehicleDetailsQueryable().getQueryable(db); var qFilter = new VehiclesFilterQueryable().getQueryable(f, db, qDetails); var q1 = new VehicleDetailsIdleQueryable().getQueryable(f, db, qFilter); var tmp = from rea in db.Reservations join rentLoc in db.LOCATIONs on rea.RENT_LOC equals rentLoc.dim_Location_id join rentClg in db.CMS_LOCATION_GROUPs on rentLoc.cms_location_group_id equals rentClg.cms_location_group_id //Return location join returnLoc in db.LOCATIONs on rea.RTRN_LOC equals returnLoc.dim_Location_id where rea.RS_ARRIVAL_DATE >= f.ReservationStartDate && rea.RS_ARRIVAL_DATE <= f.ReservationEndDate group rea by new { rtrnLoc = returnLoc.served_by_locn.Substring(0, 2), resLocGrp = rentClg.cms_location_group1 } into grp select new { grp.Key.rtrnLoc, grp.Key.resLocGrp, c = grp.Count() }; var q = from p in q1 join loc in db.LOCATIONs on p.Lstwwd equals loc.location1 join clg in db.CMS_LOCATION_GROUPs on loc.cms_location_group_id equals clg.cms_location_group_id join t1 in tmp on new { x1 = p.OwnCountry, x2 = clg.cms_location_group1 } equals new { x1 = t1.rtrnLoc, x2 = t1.resLocGrp } into tj from t in tj.DefaultIfEmpty() where p.License == license || string.IsNullOrEmpty(license) && p.Overdue != 1 select new { p, count = (t.c == null ? 0 : t.c) }; switch (sortExpression) { case "OwnCountry": q = q.OrderBy(p => p.p.OwnCountry); break; case "OwnCountry DESC": q = q.OrderByDescending(p => p.p.OwnCountry); break; case "Vc": q = q.OrderBy(p => p.p.Vc); break; case "Vc DESC": q = q.OrderByDescending(p => p.p.Vc); break; case "Unit": q = q.OrderBy(p => p.p.Unit); break; case "Unit DESC": q = q.OrderByDescending(p => p.p.Unit); break; case "License": q = q.OrderBy(p => p.p.License); break; case "License DESC": q = q.OrderByDescending(p => p.p.License); break; case "ModelDesc": q = q.OrderBy(p => p.p.Moddesc); break; case "ModelDesc DESC": q = q.OrderByDescending(p => p.p.Moddesc); break; case "Location": q = q.OrderBy(p => p.p.Lstwwd); break; case "Location DESC": q = q.OrderByDescending(p => p.p.Lstwwd); break; case "Operstat": q = q.OrderBy(p => p.p.Op); break; case "Operstat DESC": q = q.OrderByDescending(p => p.p.Op); break; case "Daysrev": q = q.OrderBy(p => p.p.Nonrev); break; case "Daysrev DESC": q = q.OrderByDescending(p => p.p.Nonrev); break; case "Matches": q = q.OrderBy(p => p.count); break; case "Matches DESC": q = q.OrderByDescending(p => p.count); break; default: q = q.OrderBy(p => p.p.Nonrev).ThenBy(p => p.p.Duewwd); break; } return((from item in q select new FleetMatchEntity { OwnCountry = item.p.OwnCountry, Unit = item.p.Unit, License = item.p.License, ModelDesc = item.p.Moddesc, Vc = item.p.Vc, Operstat = item.p.Op, Location = item.p.Lstwwd, Daysrev = item.p.Nonrev.ToString(), CarVan = item.p.CarVan, Matches = item.count.ToString() }).ToList()); } }
public abstract IQueryable <T> GetQueryable(MarsDBDataContext db, IFilterEntity Filters, ICarFilterEntity CarFilters, string SortExpression);
public abstract IList <T> GetList(IFilterEntity Filters, ICarFilterEntity CarFilters, string SortExpression);
public IList <IDataTableEntity> getList(IFilterEntity filters) { using (MarsDBDataContext db = new MarsDBDataContext()) { IList <IDataTableEntity> l = new List <IDataTableEntity>(); var qDetails = new VehicleDetailsQueryable().getQueryable(db); var qFilter = new VehiclesFilterQueryable().getQueryable(filters, db, qDetails); IQueryable <ICarSearchDataEntity> qVDFilter; switch (filters.VehiclePredicament) { case 0: qVDFilter = new VehicleDetailsAllQueryable().getQueryable(filters, db, qFilter); break; case 1: qVDFilter = new VehicleDetailsOROwnToForeign().getQueryable(filters, db, qFilter); break; case 2: qVDFilter = new VehicleDetailsTXToForeignQueryable().getQueryable(filters, db, qFilter); break; case 3: qVDFilter = new VehicleDetailsIdleQueryable().getQueryable(filters, db, qFilter); break; case 4: qVDFilter = new VehicleDetailsORInBetweenQueryable().getQueryable(filters, db, qFilter); break; case 5: qVDFilter = new VehicleDetailsORReturningQueryable().getQueryable(filters, db, qFilter); break; case 6: qVDFilter = new VehicleDetailsTXReturningQueryable().getQueryable(filters, db, qFilter); break; case 7: qVDFilter = new VehicleDetailsNonRevQueryable().getQueryable(filters, db, qFilter); break; default: qVDFilter = qFilter; break; } IQueryable <IVehiclePredicamentEntity> q1 = from p in qVDFilter join own in db.COUNTRies on p.OwnCountry equals own.country1 join due in db.COUNTRies on p.Duewwd.Substring(0, 2) equals due.country1 into dj from what in dj.DefaultIfEmpty() join lst in db.COUNTRies on p.Lstwwd.Substring(0, 2) equals lst.country1 select new VehiclePredicamentEntity { ownwwd = own.country_description, duewwd = what.country_description, lstwwd = lst.country_description }; IQueryable <IVehiclePredicamentEntity> q2; switch (filters.VehiclePredicament) { case 1: case 2: case 3: case 4: q2 = from p in q1 select new VehiclePredicamentEntity { ownwwd = p.ownwwd, duewwd = (p.duewwd == null || p.duewwd == "") ? p.lstwwd : p.duewwd }; break; default: q2 = from p in q1 select new VehiclePredicamentEntity { ownwwd = p.ownwwd, duewwd = p.lstwwd }; break; } var grp = (from p in q2 group p by new { o = p.ownwwd, d = p.duewwd } into g select new { ownwwd = g.Key.o, duewwd = g.Key.d, sum = g.Key.o.Count() }) .OrderBy(p => p.duewwd).ThenBy(p => p.ownwwd); foreach (var item in grp) { l.Add(new DataTableEntity { header = item.ownwwd, rowDefinition = item.duewwd, theValue = item.sum.ToString() }); } return(l); } }
public IList <IDataTableEntity> getList(IFilterEntity filters) { return(getList(filters.OwnCountry, filters.nonRev)); }
public IQueryable <ReservationMatchEntity> GetOldDataQueryable(MarsDBDataContext db, IFilterEntity Filters, ICarFilterEntity CarFilters, string SortExpression) { try { var tmp = new FleetEuropeActualQueryable().GetQueryable(db); IQueryable <RESERVATIONS_EUROPE_ACTUAL> q1 = from p in db.RESERVATIONS_EUROPE_ACTUALs join tc1 in db.COUNTRies on p.COUNTRY equals tc1.country1 where (p.COUNTRY != p.RTRN_LOC.Substring(0, 2)) && (Filters.OwnCountry == p.COUNTRY || Filters.OwnCountry == "" || Filters.OwnCountry == null) && (p.RES_VEH_CLASS == Filters.CarGroup || Filters.CarGroup == "" || Filters.CarGroup == null) && (tc1.active) && // only corporate countries (Filters.CarGroup == p.GR_INCL_GOLDUPGR || string.IsNullOrEmpty(Filters.CarGroup)) && (p.RS_ARRIVAL_DATE >= Filters.ReservationStartDate && p.RS_ARRIVAL_DATE <= Filters.ReservationEndDate) // reservation start dates select p; q1 = new OldReservationMatchCarSegmentQueryable().GetQueryable(db, q1, Filters.CarSegment); q1 = new OldReservationMatchCarClassQueryable().GetQueryable(db, q1, Filters.CarClass); q1 = new OldReservationMatchPoolQueryable().GetQueryable(db, q1, Filters.Pool); q1 = new OldReservationMatchReturnQueryable().GetQueryable(db, q1, Filters.DueCountry, Filters.DuePool, Filters.DueLocationGroup); IQueryable <ReservationMatchEntity> q = from p in q1 join tLoc in db.CMS_LOCATION_GROUPs on p.CMS_LOC_GRP equals tLoc.cms_location_group_id.ToString() join t1 in tmp on new { x0 = p.RTRN_LOC.Substring(0, 2), x1 = tLoc.cms_location_group1 } equals new { x0 = t1.OwningCountry, x1 = t1.CurrentLocation } into tj from t in tj.DefaultIfEmpty() where (tLoc.cms_location_group1 == Filters.Location || Filters.Location == "" || Filters.Location == null) select new ReservationMatchEntity { ResLocation = p.RES_LOC, ResGroup = p.GR_INCL_GOLDUPGR, ResCheckoutDate = new DateTime(p.RS_ARRIVAL_DATE.Value.Year, p.RS_ARRIVAL_DATE.Value.Month, p.RS_ARRIVAL_DATE.Value.Day, p.RS_ARRIVAL_TIME.Value.Hour, p.RS_ARRIVAL_TIME.Value.Minute, 0), ResCheckoutLoc = p.RENT_LOC, ResCheckinLoc = p.RTRN_LOC, ResId = p.RES_ID_NBR, ResNoDaysUntilCheckout = SqlMethods.DateDiffDay(DateTime.Now, p.RS_ARRIVAL_DATE.Value).ToString(), ResNoDaysReserved = ((int)p.RES_DAYS).ToString(), ResDriverName = p.CUST_NAME, Matches = t.Count == null ? "0" : t.Count.ToString() }; switch (SortExpression) { case "ResLocation": q = q.OrderBy(p => p.ResLocation); break; case "ResLocation DESC": q = q.OrderByDescending(p => p.ResLocation); break; case "ResGroup": q = q.OrderBy(p => p.ResGroup); break; case "ResGroup DESC": q = q.OrderByDescending(p => p.ResGroup); break; case "ResCheckoutDate": q = q.OrderBy(p => p.ResCheckoutDate); break; case "ResCheckoutDate DESC": q = q.OrderByDescending(p => p.ResCheckoutDate); break; case "ResCheckinLoc": q = q.OrderBy(p => p.ResCheckinLoc); break; case "ResCheckinLoc DESC": q = q.OrderByDescending(p => p.ResCheckinLoc); break; case "ResNoDaysUntilCheckout": q = q.OrderBy(p => p.ResNoDaysUntilCheckout); break; case "ResNoDaysUntilCheckout DESC": q = q.OrderByDescending(p => p.ResNoDaysUntilCheckout); break; case "ResNoDaysReserved": q = q.OrderBy(p => p.ResNoDaysReserved); break; case "ResNoDaysReserved DESC": q = q.OrderByDescending(p => p.ResNoDaysReserved); break; case "ResDriverName": q = q.OrderBy(p => p.ResDriverName); break; case "ResDriverName DESC": q = q.OrderByDescending(p => p.ResDriverName); break; case "ResId": q = q.OrderBy(p => p.ResId); break; case "ResId DESC": q = q.OrderByDescending(p => p.ResId); break; case "Matches": q = q.OrderBy(p => p.Matches); break; case "Matches DESC": q = q.OrderByDescending(p => p.Matches); break; default: q = q.OrderBy(p => p.ResNoDaysUntilCheckout).ThenBy(p => p.ResLocation); break; } return(q); } catch (Exception ex) { // _logger.Error("Exception thrown in ReservationDetails Model, exception = " + ex); throw new Exception("Exception thrown in ReservationDetails Model, exception = " + ex); } }