public List <WeeklyAddition> GetAdditionPlanEntryEntries(int additionPlanId, LocationLevelGroupings locationGrouping , VehicleLevelGrouping vehicleGrouping) { var dbEntities = AdditionPlanEntryFilter.GetAdditionPlanEntries(DataContext, Parameters); dbEntities = from apmmv in dbEntities where apmmv.AdditionPlanId == additionPlanId select apmmv; var weeklyAdditions = ApplyLocationGroupingToWeeklyAdditions(dbEntities, locationGrouping); weeklyAdditions = ApplyVehicleGroupingOnWeeklyAdditions(weeklyAdditions, vehicleGrouping); var returned = weeklyAdditions.ToList(); return(returned); }
private void PopulateAdditionTables(AdditionPlanDataAccess dataAccess, LocationLevelGroupings locationGrouping , VehicleLevelGrouping vehicleGrouping, int scenarioId, AutoGrid gridToUpdate, bool scenarioASelected) { var additionData = dataAccess.GetAdditionPlanEntryEntries(scenarioId, locationGrouping, vehicleGrouping); var additionPlan = dataAccess.GetAdditionPlan(scenarioId); var bottomLevelGrouping = locationGrouping == LocationLevelGroupings.Location && vehicleGrouping == VehicleLevelGrouping.CarGroup; gridToUpdate.HideLastColumn = !bottomLevelGrouping; if (scenarioASelected) { rbAScenario.Text = additionPlan.Name; lblMaxScenASelected.Text = additionPlan.MaxFleetScenarioName; lblMinScenASelected.Text = additionPlan.MinComSegScenarioName; } else { rbBScenario.Text = additionPlan.Name; lblMaxScenBSelected.Text = additionPlan.MaxFleetScenarioName; lblMinScenBSelected.Text = additionPlan.MinComSegScenarioName; } var additionEntities = from ad in additionData select new AdditionEntity { Year = ad.Year, IsoWeek = ad.IsoWeek, CarGroupId = ad.CarGroupId, LocationId = ad.LocationId, CarGroup = ad.CarGroup, Location = ad.Location, Amount = ad.Amount, Contribution = (double)ad.CpU }; gridToUpdate.GridData = additionEntities.ToList(); gridToUpdate.Visible = true; }
private IQueryable <WeeklyAddition> ApplyVehicleGroupingOnWeeklyAdditions(IQueryable <WeeklyAddition> values, VehicleLevelGrouping vehicleGrouping) { IQueryable <WeeklyAddition> returned; switch (vehicleGrouping) { case VehicleLevelGrouping.CarGroup: returned = from ape in values join cg in DataContext.CAR_GROUPs on ape.CarGroupId equals cg.car_group_id select new WeeklyAddition { IsoWeek = ape.IsoWeek, Year = ape.Year, Amount = ape.Amount, CpU = ape.CpU, CarGroup = cg.car_group1, Location = ape.Location }; break; case VehicleLevelGrouping.CarClass: returned = from ape in values join cg in DataContext.CAR_GROUPs on ape.CarGroupId equals cg.car_group_id group ape by new { ape.Year, ape.IsoWeek, ape.Location, cg.CAR_CLASS.car_class1 } into groupedData select new WeeklyAddition { IsoWeek = groupedData.Key.IsoWeek, Year = groupedData.Key.Year, Amount = groupedData.Sum(d => d.Amount), CpU = groupedData.Sum(d => d.CpU), CarGroup = groupedData.Key.car_class1, Location = groupedData.Key.Location }; break; case VehicleLevelGrouping.CarSegement: returned = from ape in values join cg in DataContext.CAR_GROUPs on ape.CarGroupId equals cg.car_group_id group ape by new { ape.Year, ape.IsoWeek, ape.Location, cg.CAR_CLASS.CAR_SEGMENT.car_segment1 } into groupedData select new WeeklyAddition { IsoWeek = groupedData.Key.IsoWeek, Year = groupedData.Key.Year, Amount = groupedData.Sum(d => d.Amount), CpU = groupedData.Sum(d => d.CpU), CarGroup = groupedData.Key.car_segment1, Location = groupedData.Key.Location }; break; default: throw new ArgumentOutOfRangeException("vehicleGrouping"); } return(returned); }