Пример #1
0
        /// <summary>
        /// Оформляет заказ. Если у клиента нет долга за прошлую неделю:
        /// записывает пиццы из корзины в новый заказ, сохраняет его в бд,
        /// переадресует на страницу Спасибо за заказ.
        /// Если долг есть, отправляет на страницу ошибка, где сообщаетя о долге и
        /// предлагается оплатить долг.
        /// </summary>
        /// <returns></returns>
        public async Task <IActionResult> Checkout()
        {
            ShoppingCart = SessionHelper.GetObjectFromJson <List <Pizza> >(HttpContext.Session, "cart");

            string customerId = User.Claims.Where(c => c.Type == "Id").FirstOrDefault().Value;

            var weeklyFinanceData = await FinanceHelper.GetWeeklyData(_context, customerId);

            long orderId;

            if (weeklyFinanceData.ContainsKey(FinanceHelper.GetWeekKey(DateTime.Now)))
            {
                orderId = await CreateNewOrder(ShoppingCart, customerId);

                HttpContext.Session.Remove("cart");

                return(RedirectToAction("ThankYou", "Cart", new { orderId = orderId }));
            }

            string lastWeekThatHasData = FinanceHelper.GetLastWeekThatHasData(weeklyFinanceData.Keys);

            double debt = lastWeekThatHasData == "" ? 0 : weeklyFinanceData[lastWeekThatHasData].delta;

            if (debt > 0)
            {
                return(RedirectToAction("Error", "Cart", new { debt = debt }));
            }

            orderId = await CreateNewOrder(ShoppingCart, customerId);

            HttpContext.Session.Remove("cart");

            return(RedirectToAction("ThankYou", "Cart", new { orderId = orderId }));
        }
Пример #2
0
        public async Task <IActionResult> Index()
        {
            _customerId = User.Claims.Where(c => c.Type == "Id").FirstOrDefault().Value;

            var orders = await FinanceHelper.GetOrdersData(_context, _customerId);

            ViewBag.TotalOrdersCost = FinanceHelper.GetTotalOrdersCost(orders);

            var payments = await FinanceHelper.GetPaymentsData(_context, _customerId);

            ViewBag.TotalAmountPaid = FinanceHelper.GetTotalAmountPaid(payments);

            ViewBag.CustomerPayments = payments;

            ViewBag.WeeklyData = FinanceHelper.GetWeeklyData(orders, payments); // словарь с суммами закаов и платежей за сгруппированными по неделям

            ViewBag.CurrentWeekKey = FinanceHelper.GetWeekKey(DateTime.Now);    // номер текущей недели, чтобы выводить инфоормационно клиенту

            return(View(orders));
        }