Beispiel #1
0
        //Insert the cart into the database
        public IActionResult ProceedCheckout(int idAvailability, int idStaff, TimeSpan choosenTime)
        {
            ViewBag.username    = HttpContext.Session.GetString("username");
            ViewBag.userType    = HttpContext.Session.GetInt32("userType");
            ViewBag.totalAmount = HttpContext.Session.GetInt32("TotalAmount");
            int                 idCredentials = (int)HttpContext.Session.GetInt32("id");
            CustomerManager     cManger       = new CustomerManager(Configuration);
            int                 idCustomer    = cManger.GetCustomerIDByCredentials(idCredentials);
            AvailibilityManager aManager      = new AvailibilityManager(Configuration);

            if (idAvailability % 15 < 14 && idAvailability % 15 >= 1)
            {
                //additioning the counter of the cur. time + cur. time + 15 + cur. time + 30
                int totalCounter = aManager.GetCounter(idAvailability) + aManager.GetCounter(idAvailability + 1) + aManager.GetCounter(idAvailability + 2);

                if (totalCounter >= 4)
                {
                    //Make deliveryBoy unavailable at the choosen time, 0 means unavailable
                    aManager.UpdateAvailability(idAvailability, 0);
                }

                for (int i = idAvailability; i <= idAvailability + 2; i++)
                {
                    //increment counter
                    aManager.IncrementCounter(i);
                }
            }
            else if (idAvailability % 15 == 14)

            {
                int totalCounter = aManager.GetCounter(idAvailability) + aManager.GetCounter(idAvailability + 1);

                if (totalCounter >= 4)
                {
                    //Make deliveryBoy unavailable at the choosen time
                    aManager.UpdateAvailability(idAvailability, 0);
                }

                for (int i = idAvailability; i <= idAvailability + 1; i++)
                {
                    //increment counter
                    aManager.IncrementCounter(i);
                }
            }
            else if (idAvailability % 15 == 0)
            {
                int totalCounter = aManager.GetCounter(idAvailability);

                if (totalCounter >= 4)
                {
                    //Make deliveryBoy unavailable at the choosen time
                    aManager.UpdateAvailability(idAvailability, 0);
                }

                aManager.IncrementCounter(idAvailability);
            }

            //First we add the delivery
            DeliveryManager dManager = new DeliveryManager(Configuration);

            dManager.AddDelivery(choosenTime, idStaff);
            int lastDelivery = dManager.GetLastId();

            OrderManager oManager = new OrderManager(Configuration);

            //Then we create the order
            oManager.AddOrder(idCustomer, lastDelivery);
            int lastOrder = oManager.GetLastId();
            //Finaly we link each dish to the order in the dish_order table
            List <Item>         cart      = SessionHelper.GetObjectFromJson <List <Item> >(HttpContext.Session, "cart");
            Dishes_orderManager doManager = new Dishes_orderManager(Configuration);

            foreach (Item dish in cart)
            {
                doManager.AddDishes_order(dish.Dishe.idDishes, lastOrder, dish.Quantity);
            }
            //This way we respect every foreign key and we do not generate errors.
            cart = null;
            //Clean up cart
            SessionHelper.SetObjectAsJson(HttpContext.Session, "cart", cart);
            HttpContext.Session.SetInt32("TotalAmount", 0);
            return(View());
        }