private bool IsWithinTarget(ProjectIndicator projectIndicator, IntermediateIndicator intermediateIndicator) { var projectIndicatorTarget = projectIndicator.Target; var projectIntermediates = projectIndicator.IntermediateIndicators; decimal totalItermediateTargets = 0; //loop through intermediate foreach (var intermediate in projectIntermediates) { totalItermediateTargets += intermediate.Target; } totalItermediateTargets += intermediateIndicator.Target; if (totalItermediateTargets > projectIndicatorTarget) { return(false); } return(true); }
public ActionResult Save(ProjectIndicator projectIndicator) { if (ModelState.IsValid) { //check if the indicator is already available if (this._context.ProjectIndicators.Any(i => i.Name == projectIndicator.Name)) { ModelState.AddModelError("Name", "The indicator by this name is already present in the system"); //return View("Create", projectIndicator); } //check if the request to save is for a new entry or edit if (projectIndicator.Id == 0) { //add a new indicator this._context.ProjectIndicators.Add(projectIndicator); this._context.SaveChanges(); TempData["SuccessMessage"] = string.Format("New indicator {0} created successfully", projectIndicator.Name); //return RedirectToAction("Index"); } //get the indicator having the id sent var indicatorDb = this._context.ProjectIndicators.Single(i => i.Id == projectIndicator.Id); if (indicatorDb == null) { return(HttpNotFound()); } indicatorDb.Name = projectIndicator.Name; indicatorDb.BaseLine = projectIndicator.BaseLine; indicatorDb.Target = projectIndicator.Target; indicatorDb.Unit = projectIndicator.Unit; //save the changes this._context.SaveChanges(); TempData["SuccessMessage"] = string.Format("Indicator {0} has been updated", projectIndicator.Name); return(RedirectToAction("Details", "Project", new { id = projectIndicator.ProjectId })); } //create a list of unit types List <SelectListItem> data = new List <SelectListItem>(); List <string> units = new List <string>() { "Number", "Percentage", "Metric ton", "Hectare(Ha)", "Yes/No" }; foreach (var unit in units) { data.Add(new SelectListItem() { Value = unit, Text = unit, }); } ViewBag.Unit = data; return(View("Create", projectIndicator)); }