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); } } }
public static bool SubmitOrder(string [] productsID, string [] quantity, string login, out string productName, out int productQuantity, out int orderID) // zlozenie zamowienia { using (sklepEntities db = new sklepEntities()) { List <Products> listProducts = new List <Products>(); for (int i = 0; i < productsID.Length; i++) { int productID = Int32.Parse(productsID[i]); Products product = db.Products.Where(x => x.ProductID == productID).Single(); if (product.Quantity < Int32.Parse(quantity[i]) || Int32.Parse(quantity[i]) <= 0) // sprawdzenie czy liczba wybranego produktu jest mniejsza niz w bazie danych { productName = product.Name; productQuantity = product.Quantity; orderID = 0; return(false);//RedirectToAction("Index", "Koszyk"); } } DateTime date = DateTime.Now; Orders order = new Orders(); int userID = db.Users.Where(x => x.UserName == login).Select(x => x.UserID).Single(); order.UserID = userID; order.Date = date; order.Status = "Utworzono"; db.Orders.Add(order); // utworzenie wstepnego zamowienia db.SaveChanges(); order = (from or in db.Orders // pobranie utworzonego zamowienia, w celu uzyskania OrderID where or.Date.Day == date.Day && or.Date.Month == date.Month && or.Date.Year == date.Year && or.Date.Hour == date.Hour && or.Date.Minute == date.Minute && or.Date.Second == date.Second select or).Single(); decimal priceN = 0M; decimal priceB = 0M; for (int i = 0; i < productsID.Length; i++) // kazdy produkt dodawany jest do tabeli ProductsOfOrders { int productID = Int32.Parse(productsID[i]); Products product = db.Products.Where(x => x.ProductID == productID).Single(); ProductsOfOrders productOfOrder = new ProductsOfOrders(); productOfOrder.NumOfOrderID = order.OrderID; productOfOrder.ProductID = productID; productOfOrder.PriceN = product.PriceN; productOfOrder.Vat = product.Vat; productOfOrder.Quantity = Int32.Parse(quantity[i]); db.ProductsOfOrders.Add(productOfOrder); priceN = priceN + product.PriceN * Int32.Parse(quantity[i]); priceB = priceB + (1M + product.Vat) * product.PriceN * Int32.Parse(quantity[i]); product.Quantity -= Int32.Parse(quantity[i]); // zmiejszana jest ilosc dostepnych sztuk danego produktu } order.PriceN = priceN; order.PriceB = priceB; db.SaveChanges(); productName = ""; productQuantity = 0; orderID = order.OrderID; return(true); } }