示例#1
0
        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));
        }
示例#2
0
        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"));
            }
        }
示例#3
0
        /// <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);
        }