public ActionResult AvailabilityCheck(Member member, Cart cart, Guid productGuid, HireDatesViewModel hireDates, HireAvailabilityViewModel hireAvailability, bool postcodeChecked = false) { Product product = this._queryDispatcher.Dispatch<Product, GetProductByGuidQuery>(new GetProductByGuidQuery(productGuid)); if (!hireAvailability.IsValidPostcode) { if (string.IsNullOrEmpty(hireAvailability.Postcode)) { return this.PartialView("PostcodeCheck", new PostcodeCheckViewModel(product)); } return this.PartialView("HireUnavailable"); } if (hireDates.PartyDate.HasValue) { int availableInventory = this._queryDispatcher.Dispatch<int, GetInventoryCountCanAddToCartQuery>(new GetInventoryCountCanAddToCartQuery(member.Guid, productGuid, hireDates.PartyDate.Value)); bool inCart = cart.Items.Any(o => o.Product.Guid == productGuid); return this.PartialView("AddToCart", new HireAddProductToCartViewModel(product, availableInventory, inCart, hireDates.PartyDate.Value)); } ViewBag.PostcodeChecked = postcodeChecked; return this.PartialView("AvailabilityCheck", new HireProductViewModel(product, hireDates)); }
public ActionResult AddTheme(string name, Guid themeGuid, Member member, HireDatesViewModel dates) { if (dates.PartyDate.HasValue) { Theme theme = this._queryDispatcher.Dispatch<Theme, GetThemeByGuidQuery>(new GetThemeByGuidQuery(themeGuid)); this._commandDispatcher.Dispatch(new AddThemeToCartCommand(member.Guid, theme, dates.PartyDate.Value)); } Cart cart = this._queryDispatcher.Dispatch<Cart, GetCartByOwnerIdQuery>(new GetCartByOwnerIdQuery(member.Guid)); return this.Json(cart, JsonRequestBehavior.AllowGet); }
public HireProductViewModel(Product product, HireDatesViewModel hireDates) : base(product) { this.PartyDate = hireDates.PartyDate; }
public ActionResult ChangePartyDate(HireDatesViewModel partyDate, Cart cart) { // get unavailable products // submit command handler if (partyDate.PartyDate.HasValue) { IList<CartItem> cartItems = this._queryDispatcher.Dispatch<IList<CartItem>, GetUnavailableCartItemsQuery>(new GetUnavailableCartItemsQuery(cart, partyDate.PartyDate.Value)); if (cartItems.Any()) { foreach (CartItem cartItem in cartItems) { this._commandDispatcher.Dispatch(new RemoveCartItemCommand(cart.MemberId, cartItem.Id)); } IList<PurchasableItemViewModel> viewModel = cartItems.Select(o => new PurchasableItemViewModel(o.Product)).ToList(); return this.View("ProductsRemoved", viewModel); } } return this.Redirect(this.Request.UrlReferrer.ToString()); }
public ActionResult CheckProductAvailability(Member member, Guid productGuid, HireDatesViewModel hireDates) { if (hireDates.PartyDate.HasValue) { bool available = this._queryDispatcher.Dispatch<int, GetInventoryCountCanAddToCartQuery>(new GetInventoryCountCanAddToCartQuery(member.Guid, productGuid, hireDates.PartyDate.Value)) > 0; return this.Json(new { Available = available }, JsonRequestBehavior.AllowGet); } return this.Json(new { Available = false }, JsonRequestBehavior.AllowGet); }
public ActionResult Index(Member member, Order order, Cart cart, HireDatesViewModel hireDates) { if (this.HttpContext.User.Identity.IsAuthenticated) { Guid orderGuid = Guid.NewGuid(); if (order == null) { this._commandDispatcher.Dispatch(new AddCartItemsToOrderCommand(orderGuid, member, cart, hireDates.PartyDate)); } else { orderGuid = order.Guid; } return this.RedirectToRoute(Routes.Checkout.CustomisedInvitations, new { orderGuid = orderGuid }); } return this.LoginRegister(null); }
public ActionResult Guest(Member member, Order order, Cart cart, HireDatesViewModel hireDates) { this._commandDispatcher.Dispatch(new RegisterGuestCommand(member.Guid)); Guid orderGuid = Guid.NewGuid(); if (order == null) { this._commandDispatcher.Dispatch(new AddCartItemsToOrderCommand(orderGuid, member, cart, hireDates.PartyDate)); } else { orderGuid = order.Guid; } return this.RedirectToRoute(Routes.Checkout.CustomisedInvitations, new { orderGuid = orderGuid }); }
public ActionResult CheckOrderAvailability(Order order, HireDatesViewModel hireDates) { IList<IOrderItem> unavailableOrderItems = this._queryDispatcher.Dispatch<IList<IOrderItem>, GetUnavailableOrderItemsQuery>(new GetUnavailableOrderItemsQuery(order, hireDates.PartyDate)); IList<OrderItemViewModel> orderItems = unavailableOrderItems.Select(o => new OrderItemViewModel(o)).ToList(); return this.PartialView("OrderAvailability", orderItems); }
public ActionResult UpdateQty(Member member, Guid cartItemId, int qty, HireDatesViewModel hireDates) { qty = (qty <= 1 ? 1 : qty); Cart cart = this._queryDispatcher.Dispatch<Cart, GetCartByOwnerIdQuery>(new GetCartByOwnerIdQuery(member.Guid)); this._commandDispatcher.Dispatch(new UpdateQuantityCommand(cart, cartItemId, qty, hireDates.PartyDate)); return null; }
public HireThemeViewModel(Theme theme, IList<Product> products, bool available, HireDatesViewModel hireDates) : base(theme, products) { this.PartyDate = hireDates.PartyDate; this.IsAvailable = available; }