public ActionResult Edit(ScoresRecordViewModel model) { if (ModelState.IsValid) { var resultRecords = Session["records"] as List <ResultViewModel>; var temp = resultRecords.Where(p => p.ScoresRecordId == model.Id.ToString()).FirstOrDefault(); var data = new ResultViewModel(); var aggregate = ((model.English + model.LanguageTwo + model.Maths + model.Social + model.Science) * 100) / 500; data.Id = temp.Id; data.ScoresRecordId = model.Id.ToString(); data.Aggregate = aggregate; if (aggregate >= 70) { data.AggregateCategory = AggregateCategoryEnum.Distinction; data.isFail = false; } else if (aggregate >= 60 && aggregate < 70) { data.AggregateCategory = AggregateCategoryEnum.FirstClass; data.isFail = false; } else if (aggregate >= 50 && aggregate < 60) { data.AggregateCategory = AggregateCategoryEnum.SecondClass; data.isFail = false; } else if (aggregate >= 35 && aggregate < 50) { data.AggregateCategory = AggregateCategoryEnum.ThirdClass; data.isFail = false; } else { data.AggregateCategory = AggregateCategoryEnum.Fail; data.isFail = true; } resultRecords.Remove(temp); resultRecords.Add(data); Session["records"] = resultRecords; var tempScores = Session["scores"] as List <ScoresRecordViewModel>; var tempScore = tempScores.Where(p => p.Id == model.Id).FirstOrDefault(); tempScores.Remove(tempScore); tempScores.Add(model); Session["scores"] = tempScores; return(RedirectToAction("Index")); } return(View(model)); }
public ActionResult Create(ScoresRecordViewModel model) { if (ModelState.IsValid) { var data = new ResultViewModel(); var aggregate = ((model.English + model.LanguageTwo + model.Maths + model.Social + model.Science) * 100) / 500; data.Id = Guid.NewGuid(); model.Id = Guid.NewGuid(); data.ScoresRecordId = model.Id.ToString(); data.Aggregate = aggregate; if (aggregate >= 70) { data.AggregateCategory = AggregateCategoryEnum.Distinction; data.isFail = false; } else if (aggregate >= 60 && aggregate < 70) { data.AggregateCategory = AggregateCategoryEnum.FirstClass; data.isFail = false; } else if (aggregate >= 50 && aggregate < 60) { data.AggregateCategory = AggregateCategoryEnum.SecondClass; data.isFail = false; } else if (aggregate >= 35 && aggregate < 50) { data.AggregateCategory = AggregateCategoryEnum.ThirdClass; data.isFail = false; } else { data.AggregateCategory = AggregateCategoryEnum.Fail; data.isFail = true; } // To understand the concept of data retervial below please read carefully // I am getting the data from session (if any) in a list // Than I am adding the new record to the list // Than I am adding that list to the session. // If there is not data in the session (tempResults == null) // In that case I am simply adding the record to the list and then upload it to the session var tempResults = Session["records"] as List <ResultViewModel>; var tempScores = Session["scores"] as List <ScoresRecordViewModel>; if (tempResults == null) { resultRecords.Add(data); scoreRecords.Add(model); Session["records"] = resultRecords; Session["scores"] = scoreRecords; } else { tempResults.Add(data); tempScores.Add(model); Session["records"] = tempResults; Session["scores"] = tempScores; } return(RedirectToAction("Index")); } return(View(model)); }