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