public void Merge(string userId, CartBody tempBody)
        {
            if (Order.OrderStatus != "Locked")
            {
                using (FreeMarketEntities db = new FreeMarketEntities())
                {
                    // Compare the session body with the database
                    foreach (OrderDetail item in tempBody.OrderDetails)
                    {
                        OrderDetail existingItem = Body.OrderDetails
                                                   .Where(c => c.ProductNumber == item.ProductNumber &&
                                                          c.SupplierNumber == item.SupplierNumber && c.SizeType == item.SizeType)
                                                   .FirstOrDefault();

                        // If the item does not exist, add it
                        if (existingItem == null)
                        {
                            Body.OrderDetails.Add(item);
                        }
                        // Otherwise update the quantity only
                        else
                        {
                            Body.OrderDetails.Where(c => c.ProductNumber == item.ProductNumber &&
                                                    c.SupplierNumber == item.SupplierNumber && c.SizeType == item.SizeType)
                            .FirstOrDefault()
                            .Quantity += item.Quantity;
                        }
                    }
                }

                UpdateTotal();
            }
        }
        public void Save(string userId = null)
        {
            if (Order.OrderNumber == 0)
            {
                using (FreeMarketEntities db = new FreeMarketEntities())
                {
                    db.OrderHeaders.Add(Order);
                    db.SaveChanges();
                }
            }

            // Compare the Session cart to the database cart and resolve differences
            Compare();

            // Re-initialize the Body
            Body = CartBody.GetDetailsForShoppingCart(Order.OrderNumber);

            // Keep the total order value in sync
            UpdateTotal();

            // Save the Order total
            using (FreeMarketEntities db = new FreeMarketEntities())
            {
                db.Entry(Order).State = EntityState.Modified;
                db.SaveChanges();
            }

            AuditUser.LogAudit(6, string.Format("Order number: {0}", Order.OrderNumber), userId);
        }
 public ShoppingCart()
 {
     Body  = new CartBody();
     Order = new OrderHeader();
     using (FreeMarketEntities db = new FreeMarketEntities())
     {
         Order.VATPercentage = db.VATPercentages.FirstOrDefault().VATPercentage1;
     }
 }
 public ShoppingCart(int orderNumber)
 {
     using (FreeMarketEntities db = new FreeMarketEntities())
     {
         Order = db.OrderHeaders.Find(orderNumber);
         Order.VATPercentage = db.VATPercentages.FirstOrDefault().VATPercentage1;
         Body = CartBody.GetDetailsForShoppingCart(Order.OrderNumber);
     }
 }
        public void Initialize(string userId)
        {
            using (FreeMarketEntities db = new FreeMarketEntities())
            {
                // Get the order and body from the database with all joining fields

                Order = OrderHeader.GetOrderForShoppingCart(userId);
                Order.VATPercentage = db.VATPercentages.FirstOrDefault().VATPercentage1;
                Body = CartBody.GetDetailsForShoppingCart(Order.OrderNumber);
            }
        }
예제 #6
0
        public static CartBody GetDetailsForShoppingCart(int orderNumber)
        {
            CartBody body = new CartBody();

            using (FreeMarketEntities db = new FreeMarketEntities())
            {
                body.OrderDetails = db.GetDetailsForShoppingCart(orderNumber)
                                    .Select(c => new OrderDetail
                {
                    CourierName        = c.CourierName,
                    CustodianNumber    = c.CustodianNumber,
                    ItemNumber         = c.ItemNumber,
                    MainImageNumber    = 0,
                    OrderItemStatus    = c.OrderItemStatus,
                    OrderItemValue     = c.OrderItemValue,
                    OrderNumber        = c.OrderNumber,
                    PaidCourier        = c.PaidCourier,
                    PaidSupplier       = c.PaidSupplier,
                    PayCourier         = c.PayCourier,
                    PaySupplier        = c.PaySupplier,
                    Price              = c.PriceOrderDetail,
                    ProductDepartment  = c.DepartmentName,
                    ProductDescription = c.Description,
                    ProductNumber      = c.OrderDetailProductNumber,
                    ProductPrice       = c.PricePerUnit,
                    ProductWeight      = c.Weight ?? 0,
                    Quantity           = c.Quantity,
                    Settled            = false,
                    SupplierName       = c.SupplierName,
                    SupplierNumber     = c.SupplierNumber,
                    Selected           = false,
                    SizeType           = c.SizeType
                }
                                            ).ToList();

                if (body.OrderDetails != null && body.OrderDetails.Count > 0)
                {
                    foreach (OrderDetail detail in body.OrderDetails)
                    {
                        int imageNumber = db.ProductPictures
                                          .Where(c => c.ProductNumber == detail.ProductNumber && c.Dimensions == PictureSize.Small.ToString())
                                          .Select(c => c.PictureNumber)
                                          .FirstOrDefault();

                        detail.MainImageNumber = imageNumber;
                    }
                }
            }

            Debug.Write(body);

            return(body);
        }