示例#1
0
        public static IQueryable <Vehicle> RestrictByAdditionalParameters(Dictionary <DictionaryParameter, string> parameters, MarsDBDataContext dataContext
                                                                          , IQueryable <Vehicle> vehicleData)
        {
            if (parameters.ContainsValueAndIsntEmpty(DictionaryParameter.ForeignVehiclePredicament))
            {
                vehicleData = VehicleFieldRestrictions.RestrictByPredicament(vehicleData, parameters);
            }

            if (parameters.ContainsKey(DictionaryParameter.LicencePlate) &&
                !string.IsNullOrEmpty(parameters[DictionaryParameter.LicencePlate]))
            {
                vehicleData = vehicleData.Where(d => d.LicensePlate.Contains(parameters[DictionaryParameter.LicencePlate]));
            }

            if (parameters.ContainsValueAndIsntEmpty(DictionaryParameter.ExcludeOverdue))
            {
                vehicleData = parameters[DictionaryParameter.ExcludeOverdue] == "1"
                    ? vehicleData.Where(d => d.ExpectedDateTime.HasValue && d.ExpectedDateTime.Value.Date >= DateTime.Now.Date)
                    : vehicleData.Where(d => d.ExpectedDateTime.HasValue && d.ExpectedDateTime.Value.Date < DateTime.Now.Date);
            }

            if (parameters.ContainsKey(DictionaryParameter.Vin) && !string.IsNullOrEmpty(parameters[DictionaryParameter.Vin]))
            {
                vehicleData = vehicleData.Where(d => d.Vin.Contains(parameters[DictionaryParameter.Vin]));
            }

            if (parameters.ContainsKey(DictionaryParameter.UnitNumber) &&
                !string.IsNullOrEmpty(parameters[DictionaryParameter.UnitNumber]))
            {
                vehicleData = vehicleData.Where(d => d.UnitNumber == int.Parse(parameters[DictionaryParameter.UnitNumber]));
            }

            if (parameters.ContainsKey(DictionaryParameter.DriverName) && !string.IsNullOrEmpty(parameters[DictionaryParameter.DriverName]))
            {
                vehicleData = vehicleData.Where(d => d.LastDriverName.Contains(parameters[DictionaryParameter.DriverName]));
            }

            if (parameters.ContainsKey(DictionaryParameter.Colour) && !string.IsNullOrEmpty(parameters[DictionaryParameter.Colour]))
            {
                vehicleData = vehicleData.Where(d => d.Colour == parameters[DictionaryParameter.Colour]);
            }

            if (parameters.ContainsKey(DictionaryParameter.ModelDescription) &&
                !string.IsNullOrEmpty(parameters[DictionaryParameter.ModelDescription]))
            {
                vehicleData = vehicleData.Where(d => d.ModelDescription.Contains(parameters[DictionaryParameter.ModelDescription]));
            }

            if (parameters.ContainsValueAndIsntEmpty(DictionaryParameter.OperationalStatuses))
            {
                var selectedOperStats = parameters[DictionaryParameter.OperationalStatuses].Split(',').Select(int.Parse);

                vehicleData = vehicleData.Where(d => selectedOperStats.Contains(d.LastOperationalStatusId));
            }

            if (parameters.ContainsValueAndIsntEmpty(DictionaryParameter.MovementTypes))
            {
                var selectedMovementTypes = parameters[DictionaryParameter.MovementTypes].Split(',').Select(int.Parse);
                vehicleData = vehicleData.Where(d => selectedMovementTypes.Contains(d.LastMovementTypeId));
            }



            if (parameters.ContainsKey(DictionaryParameter.MinDaysNonRev) && parameters[DictionaryParameter.MinDaysNonRev] != string.Empty)
            {
                var minDays = int.Parse(parameters[DictionaryParameter.MinDaysNonRev]);

                vehicleData = from vd in vehicleData
                              where vd.DaysSinceLastRevenueMovement >= minDays
                              select vd;
            }

            return(vehicleData);
        }
示例#2
0
        public static IQueryable <Vehicle> GetVehicleQueryable(Dictionary <DictionaryParameter, string> parameters, MarsDBDataContext dataContext
                                                               , bool includeRev, bool includeNonRev)
        {
            var vehicles = dataContext.Vehicles.Select(d => d);

            vehicles = VehicleRestriction.RestrictVehicleQueryable(dataContext, vehicles);

            if (!(includeRev && includeNonRev))
            {
                if (!includeRev)
                {
                    vehicles = vehicles.Where(d => d.IsNonRev);
                }
                if (!includeNonRev)
                {
                    vehicles = vehicles.Where(d => !d.IsNonRev);
                }
            }

            var defleetedVehicle = parameters.ContainsKey(DictionaryParameter.DefleetedVehicles)
            ? parameters[DictionaryParameter.DefleetedVehicles] : string.Empty;

            var noReason = parameters.ContainsKey(DictionaryParameter.NoReason)
                  ? parameters[DictionaryParameter.NoReason] : string.Empty;

            if (defleetedVehicle == string.Empty)
            {
                vehicles = vehicles.Where(d => d.IsFleet);
            }

            if (parameters.ContainsValueAndIsntEmpty(DictionaryParameter.CarGroup))
            {
                vehicles = VehicleFieldRestrictions.RestrictByCarGroup(vehicles,
                                                                       parameters[DictionaryParameter.CarGroup], dataContext);
            }
            else if (parameters.ContainsValueAndIsntEmpty(DictionaryParameter.CarClass))
            {
                vehicles = VehicleFieldRestrictions.RestrictByCarClass(vehicles,
                                                                       parameters[DictionaryParameter.CarClass], dataContext);
            }
            else if (parameters.ContainsValueAndIsntEmpty(DictionaryParameter.CarSegment))
            {
                vehicles = VehicleFieldRestrictions.RestrictByCarSegment(vehicles,
                                                                         parameters[DictionaryParameter.CarSegment], dataContext);
            }
            else if (parameters.ContainsValueAndIsntEmpty(DictionaryParameter.OwningCountry))
            {
                vehicles = VehicleFieldRestrictions.RestrictByOwningCountry(vehicles,
                                                                            parameters[DictionaryParameter.OwningCountry]);
            }

            var expectedLocationLogic = parameters.ContainsValueAndIsntEmpty(DictionaryParameter.ExpectedLocationLogic);

            bool restrictByLocationCountry = true;

            if (parameters.ContainsValueAndIsntEmpty(DictionaryParameter.Location))
            {
                vehicles = VehicleFieldRestrictions.RestrictByLocation(vehicles,
                                                                       parameters[DictionaryParameter.Location], dataContext, expectedLocationLogic);
                restrictByLocationCountry = false;
            }
            else
            {
                if (parameters.ContainsValueAndIsntEmpty(DictionaryParameter.LocationGroup))
                {
                    vehicles = VehicleFieldRestrictions.RestrictByLocationGroup(vehicles,
                                                                                parameters[DictionaryParameter.LocationGroup], dataContext, expectedLocationLogic);
                    restrictByLocationCountry = false;
                }
                else if (parameters.ContainsValueAndIsntEmpty(DictionaryParameter.Pool))
                {
                    vehicles = VehicleFieldRestrictions.RestrictByPool(vehicles,
                                                                       parameters[DictionaryParameter.Pool], dataContext, expectedLocationLogic);
                    restrictByLocationCountry = false;
                }

                if (parameters.ContainsValueAndIsntEmpty(DictionaryParameter.Area))
                {
                    vehicles = VehicleFieldRestrictions.RestrictByArea(vehicles,
                                                                       parameters[DictionaryParameter.Area], dataContext, expectedLocationLogic);
                    restrictByLocationCountry = false;
                }
                else if (parameters.ContainsValueAndIsntEmpty(DictionaryParameter.Region))
                {
                    vehicles = VehicleFieldRestrictions.RestrictByRegion(vehicles,
                                                                         parameters[DictionaryParameter.Region], dataContext, expectedLocationLogic);
                    restrictByLocationCountry = false;
                }
            }

            if (restrictByLocationCountry && parameters.ContainsValueAndIsntEmpty(DictionaryParameter.LocationCountry))
            {
                vehicles = VehicleFieldRestrictions.RestrictByLocationCountry(vehicles,
                                                                              parameters[DictionaryParameter.LocationCountry], expectedLocationLogic);
            }

            if (noReason == "0")
            {
                var reasonsEntered = from per in dataContext.VehicleNonRevPeriodEntryRemarks
                                     where per.VehicleNonRevPeriodEntry.VehicleNonRevPeriod.Active &&
                                     per.ExpectedResolutionDate >= DateTime.Now.Date //
                                     select per.VehicleNonRevPeriodEntry.VehicleNonRevPeriod.Vehicle;

                vehicles = vehicles.Except(reasonsEntered.Distinct());
            }

            if (parameters.ContainsValueAndIsntEmpty(DictionaryParameter.FleetTypes))
            {
                var selectedFleetTypes = parameters[DictionaryParameter.FleetTypes].Split(',').Select(byte.Parse);
                vehicles = vehicles.Where(d => selectedFleetTypes.Contains(d.VehicleFleetTypeId));
            }


            if (parameters.ContainsKey(DictionaryParameter.OwningArea))
            {
                if (parameters[DictionaryParameter.OwningArea] != string.Empty)
                {
                    //var selectedOwningAreas = parameters[DictionaryParameter.OwningArea].Split(',').Select(d => d);
                    //vehicles = vehicles.Where(d => selectedOwningAreas.Contains(d.OwningArea));
                    vehicles = vehicles.Where(d => d.OwningArea == parameters[DictionaryParameter.OwningArea]);
                }
            }
            return(vehicles);
        }