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; } }
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; } }