Beispiel #1
0
        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);
                }
            }
        }
Beispiel #2
0
        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);
            }
        }