Ejemplo n.º 1
0
        public ActionResult FinalizeOrder(OrderModel orderdetails)                                                                                   //Finalizowanie zamówienia.
        {
            cart = (Cart)Session["cart"];                                                                                                            //Przypisanie koszyka użytkownika.
            bool AnyValueIsNull = orderdetails.DeliveryDetails.GetType().GetProperties().All(p => p.GetValue(orderdetails.DeliveryDetails) != null); //Sprawdza czy wszystkie dane adresowe zostały uzupełnione.

            if (cart.Products.Count() != 0 && AnyValueIsNull == false)                                                                               //Jeżeli koszyk nie jest pusty i wszystkie dane adresowe zostały uzupełnione.
            {
                int id      = ordersRepository.Orders.Select(x => x.Delivery_ID).DefaultIfEmpty().Max() + 1;                                         //ID nowego zamówienia.
                int user_id = (int)Session["ID_User"];                                                                                               //Przypisanie ID użytkownika.
                ordersRepository.AddOrder(user_id, cart.ComputeTotalValue());                                                                        //Dodanie nowego zamówienia.
                foreach (var item in cart.Products)                                                                                                  //Dla każdego produktu w koszyku.
                {
                    orderDetails = new OrderDetails                                                                                                  //Nowy szczegół zamówienia.
                    {
                        Order_ID   = id,
                        Product_ID = item.ProductID,
                        User_ID    = user_id,
                        Quantity   = item.Quantity,
                        Category   = item.Category
                    };
                    productRepository.SellProduct(orderDetails);              //Usuwanie przedmiotu z magazynu.
                    orderDetailsRepository.AddOrderDetail(orderDetails);      //Dodanie nowego szczegółu zamówienia.
                }
                deliveryRepository.AddDelivery(orderdetails.DeliveryDetails); //Dodanie danych adresowych zamówienia.
                Session["cart"] = new Cart();                                 //Wyczyszczenie koszyka.
                return(View("Success"));                                      //Wygenerowanie widoku potwierdzającego złożenie zamówienia.
            }
            else if (AnyValueIsNull == true)                                  //Jeżeli nie wszystkie wartości zostały uzupełnione.
            {
                orderdetails.Cart = cart;                                     //Przypisanie wartości do modelu
                return(View(orderdetails));                                   //Wygenerowanie widoku z przekazaniem modelu.
            }
            else
            {
                return(RedirectToAction("Index", "Home"));   //W każdym innym przypadku.
            }
        }