public IHttpActionResult UpdateSimulationAnalysis([FromBody] SimulationAnalysisModel model)
        {
            UserInformationModel userInformation = ESECSecurity.GetUserInformation(Request);

            SimulationAnalysisUpdateMethods[userInformation.Role](model, userInformation);
            return(Ok());
        }
示例#2
0
        /// <summary>
        /// Updates a simulation's analysis data
        /// </summary>
        /// <param name="model">SimulationAnalysisModel</param>
        /// <param name="db">BridgeCareContext</param>
        public void UpdateSimulationAnalysis(SimulationAnalysisModel model, BridgeCareContext db)
        {
            if (!db.Simulations.Any(s => s.SIMULATIONID == model.Id))
            {
                throw new RowNotInTableException($"No scenario found with id {model.Id}");
            }

            var simulation = db.Simulations.Single(s => s.SIMULATIONID == model.Id);

            model.UpdateSimulationAnalysis(simulation);

            db.SaveChanges();
        }
示例#3
0
        private void FillAnalysisDetails(ExcelWorksheet worksheet, SimulationAnalysisModel investmentPeriod)
        {
            excelHelper.MergeCells(worksheet, 6, 12, 6, 15);
            excelHelper.MergeCells(worksheet, 8, 12, 8, 13);
            excelHelper.MergeCells(worksheet, 10, 12, 10, 13);
            excelHelper.MergeCells(worksheet, 12, 12, 12, 13);
            excelHelper.MergeCells(worksheet, 14, 12, 14, 13);

            excelHelper.ApplyBorder(worksheet.Cells[6, 12, 14, 15]);

            excelHelper.MergeCells(worksheet, 8, 14, 8, 15);
            excelHelper.MergeCells(worksheet, 10, 14, 10, 15, false);
            excelHelper.MergeCells(worksheet, 12, 14, 12, 15, false);
            excelHelper.MergeCells(worksheet, 14, 14, 14, 15, false);

            excelHelper.ApplyBorder(worksheet.Cells[8, 14, 14, 15]);

            worksheet.Cells["L6:O6"].Value = "Analysis:";
            excelHelper.ApplyColor(worksheet.Cells[6, 12, 6, 15], Color.Gray);
            worksheet.Cells["L8:M8"].Value   = "Optimization:";
            worksheet.Cells["L10:M10"].Value = "Budget:";
            worksheet.Cells["L12:M12"].Value = "Weighting:";
            worksheet.Cells["L14:M14"].Value = "Benefit:";
            var optimization = worksheet.DataValidations.AddListValidation("N8:O8");

            optimization.Formula.Values.Add("Incremental Benefit/Cost");
            optimization.Formula.Values.Add("Maximum Benefit");
            optimization.Formula.Values.Add("Remaining Life/Cost");
            optimization.Formula.Values.Add("Maximum Remaining Life");
            optimization.Formula.Values.Add("Multi-year Incremental Benefit/Cost");
            optimization.Formula.Values.Add("Multi-year Maximum Benefit");
            optimization.Formula.Values.Add("Multi-year Remaining Life/Cost");
            optimization.Formula.Values.Add("Multi-year Maximum Life");
            optimization.AllowBlank        = false;
            worksheet.Cells["N8:O8"].Value = investmentPeriod.OptimizationType;

            var budgets = worksheet.DataValidations.AddListValidation("N10:O10");

            budgets.Formula.Values.Add("No Spending");
            budgets.Formula.Values.Add("As Budget Permits");
            budgets.Formula.Values.Add("Until Targets Met");
            budgets.Formula.Values.Add("Until Deficient Met");
            budgets.Formula.Values.Add("Targets/Deficient Met");
            budgets.Formula.Values.Add("Unlimited");
            worksheet.Cells["N10:O10"].Value = investmentPeriod.BudgetType;
            worksheet.Cells["N12:O12"].Value = investmentPeriod.WeightingAttribute;
            worksheet.Cells["N14:O14"].Value = investmentPeriod.BenefitAttribute;
        }
示例#4
0
        public void PartialUpdatePermittedSimulationAnalysis(SimulationAnalysisModel model, BridgeCareContext db, string username, bool updateWeighting = true)
        {
            if (!db.Simulations.Any(s => s.SIMULATIONID == model.Id))
            {
                throw new RowNotInTableException($"No scenario found with id {model.Id}");
            }
            if (!db.Simulations.Include(s => s.USERS).First(s => s.SIMULATIONID == model.Id).UserCanModify(username))
            {
                throw new UnauthorizedAccessException("You are not authorized to modify this scenario's analysis.");
            }

            var simulation = db.Simulations.Single(s => s.SIMULATIONID == model.Id);

            model.PartialUpdateSimulationAnalysis(simulation, updateWeighting);

            db.SaveChanges();
        }
示例#5
0
        private void FillSimulationDetails(ExcelWorksheet worksheet, SimulationAnalysisModel investmentPeriod, double?inflationRate, int yearCount)
        {
            excelHelper.MergeCells(worksheet, 6, 6, 6, 8);
            excelHelper.MergeCells(worksheet, 8, 6, 8, 7);
            excelHelper.MergeCells(worksheet, 10, 6, 10, 7);
            excelHelper.MergeCells(worksheet, 12, 6, 12, 7);

            excelHelper.ApplyColor(worksheet.Cells[6, 6, 6, 8], Color.Gray);

            worksheet.Cells["F6:H6"].Value   = "Investment:";
            worksheet.Cells["F8:G8"].Value   = "Start Year:";
            worksheet.Cells["F10:G10"].Value = "Analysis Period:";
            worksheet.Cells["F12:G12"].Value = "Inflation Rate:";

            excelHelper.ApplyBorder(worksheet.Cells[6, 6, 12, 8]);

            worksheet.Cells["H8"].Value  = investmentPeriod.StartYear;
            worksheet.Cells["H10"].Value = yearCount;
            worksheet.Cells["H12"].Value = inflationRate;

            excelHelper.ApplyBorder(worksheet.Cells[8, 8, 12, 8]);
        }
 public IHttpActionResult UpdateSimulationAnalysis([FromBody] SimulationAnalysisModel model)
 {
     repo.UpdateSimulationAnalysis(model, db);
     return(Ok());
 }