public ReviewProcessViewModel AssembleReviewProcessViewModel(long foodParcelId, long selectedFoodItemId, long testId, string username) { ReviewStartResultViewModel model = new ReviewStartResultViewModel() { FoodParcelId = foodParcelId, SelectedFoodItemId = selectedFoodItemId, TestId = testId }; return(this.AssembleReviewProcessViewModel(model, username)); }
public IActionResult ReviewProcess(ReviewStartResultViewModel model) { if (ModelState.IsValid == true) { ReviewProcessViewModel result = this.ReviewService.AssembleReviewProcessViewModel(model, User.Identity.Name); return(View(result)); } else { ModelState.AddModelError(string.Empty, "There is something wrong with your selection"); return(RedirectToAction("ReviewStart", "Review")); } }
/// <summary> /// Create a reviewprocessviewmodel using a reviewstart model. /// </summary> /// <param name="model"></param> /// <param name="username"></param> /// <returns></returns> public ReviewProcessViewModel AssembleReviewProcessViewModel(ReviewStartResultViewModel model, string username) { ReviewProcessViewModel result = new ReviewProcessViewModel() { FoodParcelId = model.FoodParcelId, SelectedFoodItemId = model.SelectedFoodItemId, TestId = model.TestId }; FoodParcel foodParcel = this.FoodParcelRepository.Get(result.FoodParcelId); result.FoodParcelName = foodParcel.Name; FoodItem foodItem = this.FoodItemRepository.Get(result.SelectedFoodItemId); result.FoodItemName = foodItem.Description; TestResult testResult = this.TestResultRepository.Get(result.TestId); result.TestName = testResult.Name; // Get the test items using PLINQ - it may run a bit faster when there are lots of test submissions List <TestResultItem> testResultItems = (from TestResultItem t in this.TestResultItemRepository.GetAll.AsParallel().WithDegreeOfParallelism(2) where t.FoodItemId == result.SelectedFoodItemId && t.TestResultId == result.TestId && t.TestResult.UserName == username select t).ToList(); // The disadvantage of using hard-coded values is that it is difficult to change and add new things later // without changing code, recompiling, testing and deploying. result.PresentationValue = (from TestResultItem t in testResultItems where t.Category.Value == "Presentation" select t.Result).FirstOrDefault(); result.TextureValue = (from TestResultItem t in testResultItems where t.Category.Value == "Texture" select t.Result).FirstOrDefault(); result.AromaValue = (from TestResultItem t in testResultItems where t.Category.Value == "Aroma" select t.Result).FirstOrDefault(); result.FlavourValue = (from TestResultItem t in testResultItems where t.Category.Value == "Flavour" select t.Result).FirstOrDefault(); return(result); }