Ejemplo n.º 1
0
        public static BasketResultModel UpdateQuantity(int id, int quantity)
        {
            BasketLayer basketLayer = GetInstance();

            if (basketLayer.Any(a => a.ProductId == id && a.RelatedId == null))
            {
                if (quantity == 0)
                {
                    RemoveBasketItem(id);
                    return(new BasketResultModel
                    {
                        Status = true,
                        Message = "Ürün sepetten çıkarıldı"
                    });
                }
                var item = basketLayer.FirstOrDefault(f => f.ProductId == id && f.RelatedId == null);
                item.Quantity = quantity;
                basketLayer.Sync();
                return(new BasketResultModel
                {
                    Status = true,
                    Message = "Miktar değiştirildi"
                });
            }
            else
            {
                return(new BasketResultModel
                {
                    Status = false,
                    Message = "Ürün sepette bulunamadı"
                });
            }
        }
Ejemplo n.º 2
0
        public static BasketLayer GetInstance()
        {
            BasketLayer bl = HttpContext.Current.Session["Basket"] as BasketLayer;

            if (bl == null)
            {
                bl = new BasketLayer();
            }
            return(bl);
        }
Ejemplo n.º 3
0
        public static OrderLayer Create()
        {
            var catalogWorker = new CatalogWorker();
            var basket        = BasketLayer.GetInstance();
            var basketSummary = BasketLayer.GetSummary();

            var order = new OrderHeaderProcessModel();

            order.CustomerId     = CustomerLayer.Customer.Id;
            order.OrderTotal     = basketSummary.BasketPriceTotal;
            order.TaxTotal       = basketSummary.BasketTaxTotal;
            order.GrandTotal     = basketSummary.BasketTotal;
            order.Status         = 0;
            order.OrderDate      = DateTime.Now;
            order.Lines          = Mapper.Map <BasketModel[], List <OrderLineViewModel> >(basket.ToArray());
            order.MaxInstallment = catalogWorker.GetLayerMaxInstallment(order.Lines.Select(s => s.ProductId).ToArray());
            HttpContext.Current.Session["Order"] = order;
            return(new OrderLayer());
        }
Ejemplo n.º 4
0
        public static BasketResultModel UpdateRelQuantity(int id, int quantity)
        {
            BasketLayer basketLayer = GetInstance();

            if (basketLayer.Any(a => a.ProductId == id && basketLayer.Any(a2 => a2.CampaignId == a.CampaignId)))
            {
                if (quantity == 0)
                {
                }
                var item = basketLayer.FirstOrDefault(f => f.ProductId == id && f.RelatedId == 0);
                item.Quantity = quantity;
                var relitem = basketLayer.FirstOrDefault(f => f.RelatedId == item.ProductId && f.CampaignId == item.CampaignId);
                relitem.Quantity = item.Quantity;
                basketLayer.Sync();
            }
            return(new BasketResultModel
            {
                Status = true,
                Message = "Miktar değiştirildi"
            });
        }
Ejemplo n.º 5
0
        public static BasketResultModel AddItem(int id, int quantity)
        {
            BasketLayer   basketLayer   = GetInstance();
            CatalogWorker catalogWorker = new CatalogWorker();
            var           product       = catalogWorker.GetLayerCatalogProductsItem(id);

            if (product == null)
            {
                var result = new BasketResultModel
                {
                    Status  = false,
                    Message = "Ürün bulunamadı!"
                };
                return(result);
            }
            if (SettingsLayer.SiteSetting.WorkingStock)
            {
                int currentCount = basketLayer.Where(w => w.ProductId == id).Sum(s => s.Quantity);
                if (product.Stock - currentCount < quantity)
                {
                    var result = new BasketResultModel
                    {
                        Status  = false,
                        Message = "Stok miktarını aştınız!"
                    };
                    return(result);
                }
            }
            if (!product.IsBuyable)
            {
                var result = new BasketResultModel
                {
                    Status  = false,
                    Message = "Bu ürün satın alınamaz!"
                };
                return(result);
            }
            var price = CatalogHelper.GetPriceWithDetail(product, quantity);

            if (basketLayer.Any(a => a.ProductId == id && a.RelatedId == null))
            {
                var basketItem = basketLayer.FirstOrDefault(f => f.ProductId == id && f.RelatedId == null);
                basketItem.Quantity += quantity;
            }
            else
            {
                var basketItem = new BasketModel();
                if (price.CampaignId.HasValue)
                {
                    basketItem.CampaignId = price.CampaignId.Value;
                }
                basketItem.ProductId    = id;
                basketItem.ProductImage = product.ImageUrl;
                basketItem.ProductName  = product.Title;
                basketItem.Quantity     = quantity;
                basketItem.TaxRate      = product.Tax_Products.Rate;
                basketItem.Price        = price.Price;
                basketItem.Tare         = product.IsShipable && !product.IsFreeShip ? product.Tare : 0;
                basketLayer.Add(basketItem);
            }
            basketLayer.Sync();
            var resultMsg = new BasketResultModel
            {
                Status  = true,
                Message = "Ürün sepete eklenmiştir."
            };

            return(resultMsg);
        }
Ejemplo n.º 6
0
        public static BasketResultModel AddRelatedItem(int id, int relid, int quantity, int campaignid)
        {
            BasketLayer   basketLayer   = GetInstance();
            CatalogWorker catalogWorker = new CatalogWorker();
            var           product       = catalogWorker.GetLayerCatalogProductsItem(id);

            if (product == null)
            {
                var result = new BasketResultModel
                {
                    Status  = false,
                    Message = "Ürün bulunamadı!"
                };
                return(result);
            }
            var relproduct = catalogWorker.GetLayerCatalogProductsItem(relid);

            if (relproduct == null)
            {
                var result = new BasketResultModel
                {
                    Status  = false,
                    Message = "Ürün bulunamadı!"
                };
                return(result);
            }
            if (
                product.Catalog_Campaigns_Sources.FirstOrDefault(f => f.CampaignId == campaignid).Catalog_Campaigns.MaxUsage > 0 &&
                product.Order_Lines.Where(w => w.CampaignId == campaignid && w.Order_Heads.CustomerId == CustomerLayer.Customer.Id).Sum(s => s.Quantity) + quantity > product.Catalog_Campaigns_Sources.FirstOrDefault(f => f.CampaignId == campaignid).Catalog_Campaigns.MaxUsage
                )
            {
                var result = new BasketResultModel
                {
                    Status  = false,
                    Message = "Maksimum kampanya kullanım limitini aştınız!"
                };
                return(result);
            }
            if (basketLayer.Any(a => a.ProductId == id && a.CampaignId == campaignid))
            {
                var item = basketLayer.FirstOrDefault(f => f.ProductId == id && f.CampaignId == campaignid);
                item.Quantity += quantity;
                var itemRel = basketLayer.FirstOrDefault(f => f.ProductId == relid && f.RelatedId == id && f.CampaignId == campaignid);
                itemRel.Quantity = item.Quantity;
            }
            else
            {
                var item = new BasketModel();
                item.CampaignId = campaignid;
                var price = CatalogHelper.GetPriceWithDetail(product, quantity);
                item.Price        = price.Price;
                item.Quantity     = quantity;
                item.TaxRate      = product.Tax_Products.Rate;
                item.ProductId    = product.Id;
                item.ProductName  = product.Title;
                item.ProductImage = product.ImageUrl;
                item.RelatedId    = 0;
                basketLayer.Add(item);

                var relprice = CatalogHelper.GetRelatedPriceWithDetail(relproduct, id);
                var relitem  = new BasketModel();
                relitem.CampaignId   = campaignid;
                relitem.Price        = relprice.Price;
                relitem.ProductId    = relproduct.Id;
                relitem.ProductImage = relproduct.ImageUrl;
                relitem.ProductName  = relproduct.Title;
                relitem.Quantity     = quantity;
                relitem.RelatedId    = id;
                relitem.TaxRate      = relprice.TaxRate;
                basketLayer.Add(relitem);
            }
            basketLayer.Sync();
            var resultMsg = new BasketResultModel
            {
                Status  = true,
                Message = "Ürünler sepete eklendi"
            };

            return(resultMsg);
        }