예제 #1
0
        public int Create(int productId, List <int> pList, List <int> pValList)
        {
            int basketCount = 0;

            try
            {
                BasketClass.BasketItem basketItem = new BasketClass.BasketItem();
                Product product = db.Products.FirstOrDefault(x => x.Id == productId);
                basketItem.Product  = product;
                basketItem.Quantity = 1;
                basketItem.Tax      = 0;
                List <PropertyPropertyValues> propertyPropertyValues = new List <PropertyPropertyValues>();
                if (pList != null)
                {
                    for (int i = 0; i < pList.Count; i++)
                    {
                        int pId  = pList[i];
                        int pVal = pValList[i];
                        PropertyPropertyValues dbpropertyPropertyValues = db.PropertyPropertyValueses.Include(x => x.CategoryProperty).Include(x => x.CategoryPropertyValue).FirstOrDefault(x => x.CategoryPropertyId == pId && x.CategoryPropertyValueId == pVal);
                        propertyPropertyValues.Add(dbpropertyPropertyValues);
                    }
                }

                basketItem.PropertyPropertyValueses = propertyPropertyValues;
                //basketItem.CategoryPropertyList = pList;
                //basketItem.CategoryPropertyValues = pValList;
                BasketClass s = new BasketClass();
                s.SepeteEkle(basketItem);
                s           = (BasketClass)Session["AktifSepet"];
                basketCount = s.Products.Count;
                if (_loginState.IsLogin())
                {
                    int          id           = _loginState.IsLoginUser().Id;
                    Basket       userBasket   = db.Baskets.FirstOrDefault(x => x.UserId == id && x.StatusId == 1);
                    OrderProduct orderProduct = db.OrderProducts.FirstOrDefault(x => x.Product.Id == product.Id && x.UserId == id && x.InTheBasket);
                    if (userBasket == null)
                    {
                        //Basket newBasket=new Basket();
                        //newBasket.UserId = id;
                        //newBasket.StatusId = 1;
                        //newBasket.CreateUserId = id;
                        _functions.GirisSepetControl();


                        orderProduct = new OrderProduct();
                        orderProduct.CreateDateTime = DateTime.Now;
                        orderProduct.CreateUserId   = _loginState.IsLoginUser().Id;
                        orderProduct.BasketId       = s.BasketId;
                        orderProduct.InTheBasket    = true;

                        orderProduct.ProductId = product.Id;
                        orderProduct.UserId    = _loginState.IsLoginUser().Id;
                        orderProduct.Quantity  = s.Products.FirstOrDefault(x => x.Product.Id == productId).Quantity;
                        orderProduct.Amount    = (double)s.Products.FirstOrDefault(x => x.Product.Id == product.Id).Total;
                        orderProduct.BasketId  = s.BasketId;
                        db.OrderProducts.Add(orderProduct);
                        db.SaveChanges();
                    }
                    else
                    {
                        if (orderProduct != null)
                        {
                            orderProduct.Amount          = (double)s.Products.FirstOrDefault(x => x.Product.Id == product.Id).Total;
                            orderProduct.Quantity        = orderProduct.Quantity + 1;
                            db.Entry(orderProduct).State = EntityState.Modified;
                        }
                        else
                        {
                            orderProduct = new OrderProduct();
                            orderProduct.CreateDateTime = DateTime.Now;
                            orderProduct.CreateUserId   = _loginState.IsLoginUser().Id;
                            orderProduct.BasketId       = userBasket.Id;
                            orderProduct.InTheBasket    = true;

                            orderProduct.ProductId = product.Id;
                            orderProduct.UserId    = _loginState.IsLoginUser().Id;
                            orderProduct.Quantity  = s.Products.FirstOrDefault(x => x.Product.Id == productId).Quantity;
                            orderProduct.Amount    = (double)s.Products.FirstOrDefault(x => x.Product.Id == product.Id).Total;
                            db.OrderProducts.Add(orderProduct);
                        }
                        db.SaveChanges();
                    }
                    Basket basket = db.Baskets.FirstOrDefault(x => x.BasketKey == s.BasketKey);
                    s                      = (BasketClass)Session["AktifSepet"];
                    basket.Amount          = s.TotalAmount;
                    db.Entry(basket).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }
            catch (Exception e)
            {
            }
            return(basketCount);
        }