Esempio n. 1
0
        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;
 }
Esempio n. 4
0
        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());
        }
Esempio n. 5
0
        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;
        }
Esempio n. 10
0
 public HireThemeViewModel(Theme theme, IList<Product> products, bool available, HireDatesViewModel hireDates)
     : base(theme, products)
 {
     this.PartyDate = hireDates.PartyDate;
     this.IsAvailable = available;
 }