private void PopulateGrids() { var yearSelected = int.Parse(ddlYearSelection.SelectedValue); var monthSelected = int.Parse(ddlMonthSelection.SelectedValue); var dateSelected = new DateTime(yearSelected, monthSelected, 1); var carSegmentSelected = int.Parse(ddlCarSegment.SelectedValue); using (var dataAccess = new MonthlyAddLimitDataAccess()) { var monthlyData = dataAccess.GetMonthlyLimits(dateSelected, carSegmentSelected); ucMonthlyLimit.GridData = monthlyData; lblMonthlySummary.Text = string.Format("{3:#,#} {0} {1} {2}", hfSummaryText.Value , ddlMonthSelection.SelectedItem.Text, yearSelected , monthlyData.Sum(d => d.AdditionsLimit)); var weeklyData = dataAccess.GetWeekLyLimits(dateSelected, carSegmentSelected); ucWeeklyLimit.GridData = weeklyData; lblWeeklySummary.Text = string.Format("{3:#,#} {0} {1} {2}", hfSummaryText.Value , ddlMonthSelection.SelectedItem.Text, yearSelected , weeklyData.Sum(d => d.AdditionsLimit)); var difference = monthlyData.Sum(d => d.AdditionsLimit) - weeklyData.Sum(d => d.AdditionsLimit); lblDifference.Text = difference.ToString("#,#"); lblDifference.ForeColor = difference == 0 ? Color.Black : difference < 0 ? Color.Red : Color.Green; } }
private void ParseUploadedFile(HttpPostedFile file) { try { var fileData = new byte[file.ContentLength]; file.InputStream.Read(fileData, 0, file.ContentLength); var parsedData = new List <MonthlyLimitUploadRow>(); using (var ms = new MemoryStream(fileData)) { var sr = new StreamReader(ms); string dataRow; if (!sr.EndOfStream) { dataRow = sr.ReadLine(); //Skip Header Row } while (!sr.EndOfStream) { dataRow = sr.ReadLine(); if (dataRow == null) { continue; } var splitDataRow = dataRow.Split(','); var rawData = new MonthlyLimitUploadRow { Year = int.Parse(splitDataRow[0].Trim()), Month = DateTime.ParseExact(splitDataRow[1].Trim(), "MMM", CultureInfo.CurrentCulture).Month, CarGroup = splitDataRow[2].Trim(), Additions = int.Parse(splitDataRow[3].Trim()), }; parsedData.Add(rawData); } } List <MonthlyLimitOnCarGroup> dbEntities; using (var dataAccess = new MonthlyAddLimitDataAccess()) { dbEntities = dataAccess.MatchUploadToDatabaseEntities(parsedData); } var minDate = dbEntities.Min(d => d.MonthDate); var maxDate = dbEntities.Max(d => d.MonthDate); cbeUploadWarning.ConfirmText = string.Format("Confirming will wipe all Monthly Additions from {0:MMM yyyy} onwards and replace it with Data from the selected file.", minDate); lblFileUploadSummary1.Text = string.Format("Date Range: {0:MMM-yyyy} - {1:MMM-yyyy}", minDate, maxDate); lblFileUploadSummary2.Text = string.Format("Rows Parsed: {0} Rows Matched: {1}", parsedData.Count, dbEntities.Count); EntitiesToUpload = dbEntities; } catch (Exception ex) { lblFileUploadSummary1.Text = ex.ToString(); } }
protected void btnSaveWeeklyAdditionChange_Click(object sender, EventArgs e) { var newFigure = int.Parse(tbNewWeeklyAdditionLimit.Text); using (var dataAccess = new MonthlyAddLimitDataAccess()) { dataAccess.UpdateWeeklyLimit(WeeklyIdToUpdate, newFigure); } PopulateGrids(); }
protected void btnUpload_Click(object sender, EventArgs e) { try { using (var dataAccess = new MonthlyAddLimitDataAccess()) { dataAccess.UploadDatabaseEntities(EntitiesToUpload); } lblFileUploadSummary1.Text = "File Successfully Uploaded"; lblFileUploadSummary2.Text = string.Empty; PopulateGrids(); } catch (Exception ex) { lblFileUploadSummary1.Text = ex.ToString(); } }
protected void Page_Load(object sender, EventArgs e) { ucMonthlyAdds.GridItemType = typeof(MonthlyFileLimitRow); ucMonthlyAdds.SessionNameForGridData = FaoMonthlyAdditionsFileRow; ucMonthlyAdds.ColumnHeaders = MonthlyFileLimitRow.HeaderRows; ucMonthlyAdds.ColumnFormats = MonthlyFileLimitRow.Formats; if (!IsPostBack) { using (var dataAccess = new MonthlyAddLimitDataAccess()) { var data = dataAccess.GetMonthlyAdditionsFileRows(); ucMonthlyAdds.GridData = data; } } }
protected override bool OnBubbleEvent(object source, EventArgs args) { var handled = false; if (args is CommandEventArgs) { var commandArgs = args as CommandEventArgs; if (commandArgs.CommandName == AutoGrid.EditCommand) { WeeklyIdToUpdate = int.Parse(commandArgs.CommandArgument.ToString()); using (var dataAccess = new MonthlyAddLimitDataAccess()) { var weeklyEntity = dataAccess.GetWeeklyLimitEntiy(WeeklyIdToUpdate); lblWeeklyInfo.Text = string.Format(hfWeeklyInfo.Value, weeklyEntity.Year, weeklyEntity.Week); tbNewWeeklyAdditionLimit.Text = weeklyEntity.Additions.ToString(); } mpeEditWeeklyLimit2.Show(); handled = true; } } return(handled); }
public void CalcualteLimits() { var parameters = ucParameters.GetParameters(); parameters[DictionaryParameter.StartDate] = (new DateTime(2015, 2, 7)).ToShortDateString(); List <DemandGapOneRow> demandGapData; var sb = new StringBuilder(); using (var dataAccess = new DemandGapDataAccess(parameters)) { var data = dataAccess.GetDemandGapStepOne(); //var data2 = dataAccess.GetDemandGapOne(data); //var data2 = dataAccess.GetDemandGapStepOneViz(); //ucDgVis.GridData = data2.ToList(); demandGapData = data.ToList(); DemandGapCalculations.CalculateGap(demandGapData); demandGapData = demandGapData.ToList(); ucDemanGapStageOneGrid.GridData = demandGapData; //ucDemandGapOne.GridData = data2; //var spread = dataAccess.GetSpreadForLocation(); // ucSpread.GridData = spread; } List <MonthlyLimitRow> monthlyData; List <WeeklyLimitRow> weeklyData; using (var dataAccess = new MonthlyAddLimitDataAccess()) { monthlyData = dataAccess.GetMonthlyLimitRows(2); weeklyData = dataAccess.GetWeekLyLimitRows(3); } using (var dataAccess = new VehicleDistributionDataAccess()) { if (parameters[DictionaryParameter.CarGroup] != string.Empty && (!parameters[DictionaryParameter.CarClass].Contains(LocationQueryable.Separator))) { var carClassId = int.Parse(parameters[DictionaryParameter.CarClass]); using (var lookup = new LookupDataAccess()) { var splitCarGroupIds = lookup.FindCarGroupsInCarClass(carClassId); monthlyData = monthlyData.Where(d => splitCarGroupIds.Contains(d.GetCarGroupId())).ToList(); } } var calculatedAdds = DemandGapCalculations.AssignGroupOne(demandGapData, monthlyData, weeklyData); sb.AppendLine("Additions Step 1 Generated:" + calculatedAdds.Sum(d => d.Amount)); DemandGapCalculations.FillGapsFromMonthlyLimits(demandGapData, monthlyData, weeklyData, calculatedAdds); sb.AppendLine("Additions Step 1.1 Generated:" + calculatedAdds.Sum(d => d.Amount)); dataAccess.FillNames(calculatedAdds); ucResult.GridData = calculatedAdds; } //ucDemanGapStageOneGrid.UpdateUpdatePanel(); //ucDemandGapOne.UpdateUpdatePanel(); ucMonthlyLimit.LoadData(monthlyData); ucWeeklyLimit.LoadData(weeklyData); sb.AppendLine("Total Monthly assigned:" + monthlyData.Sum(d => d.Assigned)); sb.AppendLine("Total Weekly assigned:" + weeklyData.Sum(d => d.Assigned)); Session[FaoCalculationTextSummary] = sb.ToString(); Session[FaoCalculationStarted] = "Finished"; }
public void CalcualteLimits() { try { var parameters = ucParameters.GetParameters(); List <WeeklyMaxMinValues> demandGapData; var sb = new StringBuilder(); var stepToCalculateTo = int.Parse(ddlStage.SelectedValue); DateTime currentDay; using (var dataAccess = new DemandGapDataAccess(parameters)) { currentDay = dataAccess.GetLastHistoryTimestamp(); var weeksToCalculate = int.Parse(tbWeeks.Text); //Constant 12 weeks for history calculations parameters[DictionaryParameter.StartDate] = (currentDay.AddDays(-84)).ToShortDateString(); parameters[DictionaryParameter.EndDate] = (currentDay).ToShortDateString(); parameters[DictionaryParameter.ForecastStartDate] = (currentDay).ToShortDateString(); var endDate = currentDay.AddDays(weeksToCalculate * 7).Next(DayOfWeek.Sunday); parameters[DictionaryParameter.ForecastEndDate] = (endDate).ToShortDateString(); var minComSegScenarioId = int.Parse(ddlMinCommSeg.SelectedValue); var maxFleetFactorScenarioId = int.Parse(ddlMaxFleetFactor.SelectedValue); demandGapData = dataAccess.CalculateMinMax(minComSegScenarioId, maxFleetFactorScenarioId, 0); ucDgcProgress.CurrentProgress = DemandGapCalculationStep.CalculateMinAndMax; var sw = new Stopwatch(); sw.Start(); DemandGapOneCalculations.CalculateGap(demandGapData); demandGapData = demandGapData.ToList(); sw.Stop(); var xx = sw.Elapsed; sw.Reset(); sw.Start(); var rankingData = dataAccess.GetFinanceEntities(); sw.Stop(); var yy = sw.Elapsed; sw.Reset(); sw.Start(); DemandGapOneCalculations.AttachRankingsToDemandGaps(demandGapData, rankingData); sw.Stop(); var zz = sw.Elapsed; sw.Reset(); sw.Start(); demandGapData = demandGapData.OrderBy(d => d.RankFromRevenue).ToList(); sw.Stop(); var qq = sw.Elapsed; ucDemanGapStageOneGrid.GridData = demandGapData; } List <MonthlyLimitRow> monthlyData; List <WeeklyLimitRow> weeklyData; int?carSegmentId = null; if (parameters.ContainsValueAndIsntEmpty(DictionaryParameter.CarSegment)) { carSegmentId = int.Parse(parameters[DictionaryParameter.CarSegment]); } using (var dataAccess = new MonthlyAddLimitDataAccess()) { monthlyData = dataAccess.GetMonthlyLimitRows(carSegmentId, currentDay); weeklyData = dataAccess.GetWeekLyLimitRows(carSegmentId, currentDay); } using (var dataAccess = new VehicleDistributionDataAccess()) { if (parameters[DictionaryParameter.CarGroup] != string.Empty && (!parameters[DictionaryParameter.CarClass].Contains(LocationQueryable.Separator))) { var carClassId = int.Parse(parameters[DictionaryParameter.CarClass]); using (var lookup = new LookupDataAccess()) { var splitCarGroupIds = lookup.FindCarGroupsInCarClass(carClassId); monthlyData = monthlyData.Where(d => splitCarGroupIds.Contains(d.GetCarGroupId())).ToList(); } } ucDgcProgress.CurrentProgress = DemandGapCalculationStep.StepOneCarGroup; var calculatedAdds = DemandGapOneCalculations.FillGapOneCarGroup(demandGapData, monthlyData, weeklyData); sb.AppendLine("Additions Step 1 Generated:" + calculatedAdds.Sum(d => d.Amount)); if (stepToCalculateTo > 1) { ucDgcProgress.CurrentProgress = DemandGapCalculationStep.StepOneCarClass; DemandGapOneCalculations.FillGapOneCarClass(demandGapData, monthlyData, weeklyData, calculatedAdds); sb.AppendLine("Additions Step 1.1 Generated:" + calculatedAdds.Sum(d => d.Amount)); } if (stepToCalculateTo > 2) { ucDgcProgress.CurrentProgress = DemandGapCalculationStep.StepTwoCarGroup; DemandGapOneCalculations.FillGapTwoCarGroup(demandGapData, monthlyData, weeklyData, calculatedAdds); sb.AppendLine("Additions Step 2 Generated:" + calculatedAdds.Sum(d => d.Amount)); } if (stepToCalculateTo > 3) { ucDgcProgress.CurrentProgress = DemandGapCalculationStep.StepTwoCarClass; DemandGapOneCalculations.FillGapTwoCarClass(demandGapData, monthlyData, weeklyData, calculatedAdds); sb.AppendLine("Additions Step 2.1 Generated:" + calculatedAdds.Sum(d => d.Amount)); } dataAccess.FillNames(calculatedAdds); var distinctContributionData = from dgd in demandGapData group dgd by new { CarGroupId = dgd.GetCarGroupId(), LocationId = dgd.GetLocationId() } into groupedData select new { groupedData.Key.CarGroupId, groupedData.Key.LocationId, groupedData.First().Contribution }; var additionEntities = from ca in calculatedAdds join dgd in distinctContributionData on new { ca.CarGroupId, ca.LocationId } equals new { dgd.CarGroupId, dgd.LocationId } into jdgd from joinedDcd in jdgd.DefaultIfEmpty() select new AdditionEntity { Year = ca.Year, IsoWeek = ca.IsoWeek, CarGroupId = ca.CarGroupId, LocationId = ca.LocationId, CarGroup = ca.CarGroup, Location = ca.Location, Amount = ca.Amount, Contribution = joinedDcd == null ? 0 : (double)joinedDcd.Contribution }; ucResult.GridData = additionEntities.ToList(); } ucMonthlyLimit.LoadData(monthlyData); ucWeeklyLimit.LoadData(weeklyData); sb.AppendLine("Total Monthly assigned: " + monthlyData.Sum(d => d.Assigned)); sb.AppendLine("Total Weekly assigned: " + weeklyData.Sum(d => d.Assigned)); SummaryText = sb.ToString(); ucDgcProgress.CurrentProgress = DemandGapCalculationStep.Complete; } catch (Exception e) { SummaryText = e.ToString(); ucDgcProgress.CurrentProgress = DemandGapCalculationStep.Error; } }