Esempio n. 1
0
      private int SumOfIntermediateIndicatorCollectedData(IntermediateIndicator intermediate, int?year, int quarter)
      {
          List <decimal> collectedData;

          IQueryable <Result> IqueryableData;

          if (year != null)
          {
              IqueryableData = this._context.Results.Where(r => r.IntermediateIndicatorId == intermediate.Id)
                               .Where(r1 => r1.Date.Year == year);
          }
          else
          {
              IqueryableData = this._context.Results.Where(r => r.IntermediateIndicatorId == intermediate.Id);
          }

          //get the data based on the quarter selected
          IqueryableData = this.GetYearQuarters(IqueryableData, quarter);


          collectedData = IqueryableData.Select(i => i.Value).ToList();

          var sumOfCollectedData = (int)collectedData.Sum();

          return(sumOfCollectedData);
      }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        public ActionResult Save(IntermediateIndicator intermediateIndicator)
        {
            //do validation
            if (ModelState.IsValid)
            {
                //check if the is an indicator with the name provided in the form in database

                if (this._context.IntermediateIndicators.Any(i => i.Name == intermediateIndicator.Name))
                {
                    //Its a duplicate so flag an error

                    ModelState.AddModelError("Name", "An Indicator with the name you provided already exist in the system");

                    //get a list of project Indicators

                    var projectIndicators = this._context.ProjectIndicators.ToList();

                    List <SelectListItem> list = new List <SelectListItem>();

                    //add project indicators to the list



                    foreach (var indicator in projectIndicators)
                    {
                        list.Add(new SelectListItem()
                        {
                            Value = indicator.Id.ToString(),
                            Text  = indicator.Name
                        });
                    }

                    ViewBag.ProjectIndicatorId = list;

                    //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", intermediateIndicator));
                }

                //validate the base target

                //get the target of the object indicator

                var projectIndicator = this._context.ProjectIndicators.SingleOrDefault(pi => pi.Id == intermediateIndicator.ProjectIndicatorId);


                //check if the intermediate target doesnt supersede the project indicator target

                var projectIndicatorTarget = projectIndicator.Target;

                var projectIntermediates = projectIndicator.IntermediateIndicators;



                bool isWithinTarget = this.IsWithinTarget(projectIndicator, intermediateIndicator);


                if (!isWithinTarget)
                {
                    ModelState.AddModelError("Target", "The Target entered superseded the project indicator target");

                    //get a list of project Indicators

                    var projectIndicators = this._context.ProjectIndicators.ToList();

                    List <SelectListItem> list = new List <SelectListItem>();

                    //add project indicators to the list



                    foreach (var indicator in projectIndicators)
                    {
                        list.Add(new SelectListItem()
                        {
                            Value = indicator.Id.ToString(),
                            Text  = indicator.Name
                        });
                    }

                    ViewBag.ProjectIndicatorId = list;

                    //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", intermediateIndicator));
                }

                //check if this is a new request or an update

                if (intermediateIndicator.Id == 0)
                {
                    this._context.IntermediateIndicators.Add(intermediateIndicator);

                    this._context.SaveChanges();

                    TempData["SuccessMessage"] = "Added a new intermediate indicator";

                    return(RedirectToAction("Details", "SubComponent", new { id = intermediateIndicator.SubComponentId }));
                }

                //update the existing intermediate indicator

                //get the intermediate indicator from the database

                var intermediateIndicatorDb =
                    this._context.IntermediateIndicators.SingleOrDefault(i => i.Id == intermediateIndicator.Id);

                if (intermediateIndicatorDb != null)
                {
                    intermediateIndicatorDb.Name = intermediateIndicator.Name;
                    intermediateIndicatorDb.ProjectIndicatorId    = intermediateIndicator.ProjectIndicatorId;
                    intermediateIndicatorDb.Target                = intermediateIndicator.Target;
                    intermediateIndicatorDb.BaseLine              = intermediateIndicator.BaseLine;
                    intermediateIndicatorDb.DataSourceMethodology = intermediateIndicator.DataSourceMethodology;
                    intermediateIndicatorDb.DataCollector         = intermediateIndicator.DataCollector;
                    intermediateIndicatorDb.Frequency             = intermediateIndicator.Frequency;
                    intermediateIndicatorDb.Unit = intermediateIndicator.Unit;
                }
                else
                {
                    return(HttpNotFound());
                }

                this._context.SaveChanges();

                TempData["SuccessMessage"] = string.Format("Update details of InterMediate indicator successfully");
            }

            return(RedirectToAction("Details", "SubComponent", new { id = intermediateIndicator.SubComponentId }));
        }