예제 #1
0
        public async Task <IActionResult> Index()
        {
            try
            {
                CouponCode cp = null;
                if (!string.IsNullOrEmpty(cart.Coupon?.Code)) // check if cart contains coupon code
                {
                    cp = await couponDAL.FindCouponByCodeAsync(cart.Coupon.Code);

                    if (cp == null) // if coupon code is not found or outdated
                    {
                        ModelState.AddModelError("", "Coupon Code " + cart.Coupon.Code.ToUpper() + " is not existed or out of date");
                        cart.RemoveCoupon(); // remove coupon code from cart
                    }
                    else
                    {
                        cart.Coupon = cp;
                    }
                }
                if (cart.Lines.Count() > 0)
                {
                    foreach (CartLine cartLine in cart.Lines)
                    {
                        Tour tour = await tourDAL.FindTourByTourIdAsync(cartLine.Tour.Id); //find tour which is active

                        if (tour == null || tour.FromDate < DateTime.Now)
                        {
                            ModelState.AddModelError("", "Tour " + cartLine.Tour.Id.ToUpper() + " is not existed or available");
                        }
                        else
                        {
                            cartLine.Tour           = tour;
                            cartLine.Tour.TakenSlot = await tourDAL.GetTakenSlotByTourIdAsync(cartLine.Tour.Id);

                            if ((cartLine.AdultTicket + cartLine.KidTicket) > (cartLine.Tour.MaxGuest - cartLine.Tour.TakenSlot))
                            {
                                ModelState.AddModelError("", "Not enough tickets of tour " + cartLine.Tour.Id.ToUpper());
                            }
                        }
                    }
                }
                CartViewModel model = new CartViewModel
                {
                    Cart = cart
                };
                return(View(model));
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message);
                throw;
            }
        }
예제 #2
0
        public async Task <IActionResult> Index(int page = 1)
        {
            try
            {
                OrderViewModel model = new OrderViewModel();
                model.Skip = (page - 1) * model.Fetch;
                AppUser user = await userManager.FindByNameAsync(User.Identity.Name);

                int total = await orderDAL.GetTotalOrdersByUserIdAsync(user.Id);

                PageInfo pageInfo = new PageInfo
                {
                    TotalItems  = total,
                    ItemPerPage = model.Fetch,
                    PageAction  = nameof(Index),
                    CurrentPage = page
                };
                model.Orders = await orderDAL.FindOrdersByUserIdAsync(user.Id, model.Skip, model.Fetch);

                if (model.Orders != null && model.Orders.Count() > 0)
                {
                    foreach (Order order in model.Orders)
                    {
                        order.Cart.Lines = await orderDAL.GetDetailsByOrderIdAsync(order.Id);

                        if (!string.IsNullOrEmpty(order.Cart.Coupon.Code))
                        {
                            order.Cart.Coupon = await couponDAL.FindCouponByCodeAsync(order.Cart.Coupon.Code, order.OrderDate);
                        }
                    }
                }
                model.PageInfo = pageInfo;
                return(View(model));
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message);
                throw;
            }
        }