public ActionResult Create(ReviewVM review) { //add the new value to the view VM ReviewVM reviewVM = (ReviewVM)Session[Global.ReviewVMSession]; Review_Order_ItemOM rom = new Review_Order_ItemOM(db); if (reviewVM == null) { ViewBag.error(Global.Review_Create_Error); return RedirectToAction("Index", "User"); } //what we have from the user submitted information is the anonymous flag, a rating for each item as well as the review text Rating.GetRatingReviewOrderItems(reviewVM.review_order_items, review.review_order_items); TextParser.ParseReviewText(reviewVM.review_order_items, review.reviewText); TextParser.SetDate(reviewVM.review_order_items); reviewVM.review.is_anonymous = review.is_anonymous; reviewVM.review.rating = Rating.CalculateAverageRating(reviewVM.review_order_items); //have to set this to null and only associate the ID. This is a weird behaviour. //If I don't it creates a new order and new order items. This is done in the foreach below //No clue why this is happening? reviewVM.review.order = null; bool result = false; bool exceptionThrown = false; if (ModelState.IsValid) { try { result = om.Create(reviewVM.review); List<review_order_item> roiList = reviewVM.review_order_items; foreach (review_order_item roi in roiList) { if (!string.IsNullOrEmpty(roi.review_text)) { roi.review_id = reviewVM.review.id; roi.order_item = null; rom.Create(roi); } } } catch (Exception) { exceptionThrown = true; } } if (result) { ViewBag.order_id = new SelectList(db.orders, "id", "id", reviewVM.review.order_id); ViewBag.restaurant_id = new SelectList(db.restaurants, "id", "name", reviewVM.review.restaurant_id); ViewBag.user_id = new SelectList(db.users, "id", "username", reviewVM.review.user_id); ViewBag.ratings = new SelectList(Rating.GetRatings(), "Value", "Text"); //succesfully created a review, can remove the session one Session.Remove(Global.ReviewVMSession); } else { ViewBag.error(exceptionThrown ? Global.ServerError : Global.Review_Create_Error); } return RedirectToAction("Details", "User", new { id = reviewVM.review.user_id }); }
public Review_Order_ItemController() { im = new Review_Order_ItemIM(db); om = new Review_Order_ItemOM(db); }