public ActionResult Podsumowanie(DeliveryAddressViewModel deliveryAddressViewModel) { if (ModelState.IsValid) { int deliveryID = Int32.Parse(Request["deliveriesList"]); int status; SummaryOrderViewModel summaryOrderViewModel = OrderManager.GetOrderToSummary(deliveryAddressViewModel, deliveryID, User.Identity.Name, out status); ViewBag.Status = status; OrderDetailsView orderDetails = new OrderDetailsView(); orderDetails.orderProductList = summaryOrderViewModel.orderProductList; orderDetails.TotalOrderPriceB = summaryOrderViewModel.TotalOrderPriceB; orderDetails.DeliveryPriceB = summaryOrderViewModel.DeliveryPriceB; orderDetails.NameDelivery = summaryOrderViewModel.NameDelivery; ViewData["payUData"] = OrderManager.GetPayUFrom(orderDetails); return(View(summaryOrderViewModel)); } else { // TODO: usuniecie zamowienia z BD return(RedirectToAction("Index", "Koszyk")); } }
public static SummaryOrderViewModel GetOrderToSummary(DeliveryAddressViewModel deliveryAddressViewModel, int deliveryID, string login, out int status) { using (sklepEntities db = new sklepEntities()) { Deliveries delivery = db.Deliveries.Where(x => x.DeliveryID == deliveryID).Single(); Users user = db.Users.Where(x => x.UserName == login).Single(); int orderID = db.Orders.Where(x => x.UserID == user.UserID) .OrderByDescending(x => x.OrderID) .Select(x => x.OrderID) .First(); Orders order = db.Orders.Where(x => x.OrderID == orderID).Single(); var productsOfOrder = db.ProductsOfOrders.Where(x => x.NumOfOrderID == orderID); order.PriceN = order.PriceN + delivery.PriceN; order.PriceB = order.PriceB + (1M + delivery.Vat) * delivery.PriceN; order.NameDelivery = delivery.Name; order.PriceNDelivery = delivery.PriceN; order.VATDelivery = delivery.Vat; order.DeliverCity = deliveryAddressViewModel.City; order.DeliverNumOfHouse = deliveryAddressViewModel.NumOfHouse; order.DeliverPostCode = deliveryAddressViewModel.PostCode; order.DeliverStreet = deliveryAddressViewModel.Street; order.Name = deliveryAddressViewModel.Name; order.Surname = deliveryAddressViewModel.Surname; SummaryOrderViewModel orderDetails = new SummaryOrderViewModel(); orderDetails.orderProductList = new List <OrderProductView>(); List <ShoppingCartView> productsList = new List <ShoppingCartView>(); foreach (ProductsOfOrders item in productsOfOrder) { OrderProductView orderProductView = new OrderProductView(); orderProductView.ProductID = item.ProductID; orderProductView.ProductName = db.Products.Where(x => x.ProductID == item.ProductID).Select(x => x.Name).Single(); orderProductView.ProductPriceN = item.PriceN.ToString("C2"); orderProductView.ProductPriceB = ((1M + item.Vat) * item.PriceN).ToString("C2"); // ToString("C2") oznacza - ustawienie zapisania ceny w odpowiedni sposob orderProductView.QuantityChoose = (int)item.Quantity; orderProductView.TotalProductPriceB = ((1M + item.Vat) * item.PriceN * (int)item.Quantity).ToString("C2"); var productWithImage = from pro in db.Products // znalezienie zdjec danego produktu w bazie danych where pro.ProductID == item.ProductID join img in db.Images on pro.ProductID equals img.ProductID select new { pro.ProductID, img.Path }; var image = productWithImage.GroupBy(p => p.ProductID).Select(s => s.FirstOrDefault()).Single(); // wybranie pierwszego zdjecia produktu orderProductView.ImagePath = image.Path; orderDetails.orderProductList.Add(orderProductView); } orderDetails.TotalOrderPriceN = ((decimal)order.PriceN).ToString("C2"); orderDetails.TotalOrderPriceB = ((decimal)order.PriceB).ToString("C2"); orderDetails.NameDelivery = delivery.Name; orderDetails.DeliveryPriceB = ((1M + delivery.Vat) * delivery.PriceN).ToString("C2"); orderDetails.Name = order.Name; orderDetails.Surname = order.Surname; orderDetails.Street = order.DeliverStreet; orderDetails.NumOfHouse = order.DeliverNumOfHouse; orderDetails.PostCode = order.DeliverPostCode; orderDetails.City = order.DeliverCity; orderDetails.OrderID = order.OrderID; if (delivery.DeliveryID <= 1) // czy przedplata { order.Status = "Oczekiwanie na wpłatę"; db.SaveChanges(); status = 1; GenereateOrderPdf(orderID); return(orderDetails); } else // czy za pobraniem { order.Status = "Oczekiwanie na wysyłkę"; db.SaveChanges(); status = 0; GenereateOrderPdf(orderID); return(orderDetails); } } }