Ejemplo n.º 1
0
        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");
        }
Ejemplo n.º 2
0
 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();
     }
 }
Ejemplo n.º 3
0
 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.");
 }