internal static void ValidateModel(Controller controller, BookingViewModel model, int? offerid, out IEnumerable<RestaurantMenuItem> restaurantMenuItems, out IEnumerable<RestaurantTable> restaurantTables, out SeasonalOffer restaurantOffer) { if (model.BookedFor.ToUniversalTime() < DateTime.UtcNow.Floor((long)AppConfigHelper.BookingSlotMinutes, DateTimeHelper.DateTimePrecisionLevel.Minutes)) controller.ModelState.AddModelError("addstatus", "The date and time for booking should always be a future date and time"); if (model.BookedSlots < 1) controller.ModelState.AddModelError("addstatus", "You need to make booking for atleast " + AppConfigHelper.BookingSlotMinutes + " Minutes"); if (model.BookedTables.IsNullOrEmpty() || model.BookedTables.Trim(',', ' ').Split(',').All(t => !t.IsNumeric())) controller.ModelState.AddModelError("addstatus", "Invalid or no tables selected, please try again"); if (!model.PrefferedMenuItems.IsNullOrEmpty() && model.BookedTables.Trim(',', ' ').Split(',').All(t => !t.IsNumeric())) controller.ModelState.AddModelError("addstatus", "Invalid Menu Items selected, please try again"); restaurantOffer = offerid != null ? new OfferBaseRepository().Find(offerid.Value) as SeasonalOffer : null; var modelTables = model.BookedTables.Trim(',', ' ').Split(',').Select(Int32.Parse); restaurantTables = new RestaurantTableRepository().SelectAll().Where(table => modelTables.Any(t => t == table.TableId)); var modelMenuItems = model.PrefferedMenuItems.IsNullOrEmpty() ? new List<int>() : model.PrefferedMenuItems.Trim(',', ' ').Split(',').Select(Int32.Parse); restaurantMenuItems = new RestaurantMenuItemRepository().SelectAll().Where(item => modelMenuItems.Any(m => m == item.ItemId)); if (restaurantOffer!= null && restaurantOffer.Type == OfferBase.OfferType.FreeServing) { var freeitem = new RestaurantMenuItemRepository().Find(restaurantOffer.Value); if (freeitem != null) { var newitemlist = new List<RestaurantMenuItem> {freeitem}; newitemlist.AddRange(restaurantMenuItems); restaurantMenuItems = newitemlist; } } if (restaurantTables.Count() < 1) controller.ModelState.AddModelError("addstatus", "Selected Tables does not exist, please try again"); if (modelMenuItems.Count() > 0 && restaurantMenuItems.Count() < 1) controller.ModelState.AddModelError("addstatus", "Selected Menu Items does not exist, please try again"); }
public ActionResult New(BookingViewModel model, int? offerid) { try { IEnumerable<RestaurantMenuItem> restaurantMenuItems; IEnumerable<RestaurantTable> restaurantTables; SeasonalOffer restaurantOffer; BookingHelper.ValidateModel(this, model, offerid, out restaurantMenuItems, out restaurantTables, out restaurantOffer); if (ModelState.IsValid) { TempData[TempDataStringResuorce.NewBookingData] = new TempDataConfirmBooking { Model = model, OfferId = offerid ?? -1}; return Request.IsAuthenticated ? RedirectToAction("Confirm", "Bookings") : RedirectToAction("RegisterGuest", "Account", new {returnurl = Url.Action("Confirm")}); } // If we got this far, something failed, redisplay form TempData[TempDataStringResuorce.ActionResultNotification] = new ActionResultNotification { Message = ModelState.ContainsKey("addstatus") ? ModelState["addstatus"].Errors[0].ErrorMessage : "There was an Error in making you booking, please try again !", Result = false, State = ActionResultNotification.MessageState.Error }; return View(model); } catch (Exception e) { var result = new ActionResultNotification { Result = false, Message = e.Message, State = ActionResultNotification.MessageState.Error }; if (Request.IsAjaxRequest()) return Json(result); TempData[TempDataStringResuorce.ActionResultNotification] = result; return View(); } }
internal static void ValidateModel(Controller controller, BookingViewModel model, int? offerid, string couponcode, out IEnumerable<RestaurantMenuItem> restaurantMenuItems, out IEnumerable<RestaurantTable> restaurantTables, out SeasonalOffer restaurantOffer, out Coupon restaurantCoupon) { ValidateModel(controller, model, offerid, out restaurantMenuItems, out restaurantTables, out restaurantOffer); restaurantCoupon = null; if (couponcode.IsNullOrEmpty()) return; var result = new OfferBaseRepository().FindCouponByCode(couponcode.Trim()); if (result != null) { if (result.ValidTill.ToUniversalTime() > DateTime.UtcNow) { restaurantCoupon = result; return; } controller.ModelState.AddModelError("addstatus", "Coupon Code has expired !"); return; } controller.ModelState.AddModelError("addstatus", "Invalid Coupon code provided."); }