public ActionResult Index()
        {
            IList <CartViewModel.ProductCart> productCarts = new List <CartViewModel.ProductCart>();
            CookieHelper cookieHelper = new CookieHelper("Cart");

            if (cookieHelper.GetCookie() != null)
            {
                string json = HttpUtility.UrlDecode(cookieHelper.GetCookie().Values["Cart"]);
                productCarts = JsonConvert.DeserializeObject <List <CartViewModel.ProductCart> >(json);
            }
            IList <PromotionMapping.PromotionCheckProduct> promotions = _promotionRepository.GetActives();

            IList <ProductFrontPageMapping.ProductShowCart> productShowCarts =
                _menuRepository.GetProductShowCartByBarcode(productCarts.Select(o => o.Barcode).ToList());

            IList <CartViewModel.CartItem> cartItems = new List <CartViewModel.CartItem>();
            int         gia       = 0;
            IList <int> productId = new List <int>();

            if (productCarts.Any())
            {
                foreach (var o in productCarts)
                {
                    IList <ProductStockSyncMapping.TonKho> tonKhos = _productStockSyncRepository.GetTonKhoCuaSanPham(o.ProductId);
                    var tonkho = tonKhos.FirstOrDefault(t => t.Barcode.Equals(o.Barcode));
                    var item   = productShowCarts.FirstOrDefault(p => p.Barcode.Equals(o.Barcode));
                    if (item != null)
                    {
                        #region ghép combo < 80K
                        if (item.Price < 80000 && o.Quantity >= 2)
                        {
                            //nếu số lượng > 2  và giá < 80000 bắt đầu tính giá combo
                            int giatru = (item.Price * 10) / 100;
                            gia = item.Price - giatru;
                        }
                        else
                        {
                            gia = item.Price;
                        }
                        #endregion

                        var cartItem = new CartViewModel.CartItem()
                        {
                            ProductId      = o.ProductId,
                            Name           = item.NameProduct,
                            Image          = item.Img,
                            Link           = item.Link,
                            Price          = item.Price,
                            PricePromotion = gia,
                            Barcode        = o.Barcode,
                            Quantity       = o.Quantity <= 0 ? 1 : o.Quantity,
                            AttributeImg   = item.AttributeImg,
                            AttributeName  = item.AttributeName,
                            AttributeFlag  = item.AttributeFlag,
                            Available      = tonkho != null && tonkho.OnHand >= (o.Quantity <= 0 ? 1 : o.Quantity)
                        };

                        #region check promotion
                        if (promotions.Any())
                        {
                            foreach (var pr in promotions)
                            {
                                var promotionDetail = pr.PromotionDetails.FirstOrDefault(dt => dt.ProductId == cartItem.ProductId);
                                if (promotionDetail != null)
                                {
                                    cartItem.HasPromotion   = true;
                                    cartItem.PricePromotion = (int)promotionDetail.PriceDiscount;
                                    cartItem.Discount       = (short)promotionDetail.Percent;
                                    break;
                                }
                            }
                        }
                        #endregion
                        cartItems.Add(cartItem);
                        productId.Add(cartItem.ProductId); // lấy Id để remarketing facebook
                    }
                }
            }
            CartViewModel.CartModel cartModel = new CartViewModel.CartModel()
            {
                CartItems     = cartItems,
                Total         = cartItems.Sum(o => o.Quantity * o.PricePromotion),
                Available     = cartItems.All(o => o.Available),
                ListProductId = productId
            };
            return(View("Index", cartModel));
        }
示例#2
0
        public ActionResult Index(string linkspamp)
        {
            using (var context = new ShopDataContex())
            {
                context.Database.ExecuteSqlCommand("update Menu set GiaThiTruong = CASE WHEN GiaThiTruong IS NULL OR GiaThiTruong = 0 THEN (ISNULL(PricePro, 0) +(ISNULL(PricePro, 0) * (ABS(Checksum(NewID()) % 10)+ 10)/100)) WHEN GiaThiTruong < PricePro THEN (ISNULL(PricePro, 0) +(ISNULL(PricePro, 0) * (ABS(Checksum(NewID()) % 10)+ 10)/100)) ELSE GiaThiTruong END  where idControl=11 and Link ={0}", linkspamp);
            }
            ProductFrontPageMapping.ProductForViewDetail product = _menuRepository.GetForViewDetailByLink(linkspamp);
            ProductFrontPageMapping.Brand brand = _menuRepository.GetBrandById(product.BrandId);
            product.BrandName = brand != null ? brand.Name : "";

            IList <ProductFrontPageMapping.Attribute> attributes =
                _menuRepository.GetAttributeByProductId(product.ProductId);

            if (!attributes.Any())
            {
                attributes = new List <ProductFrontPageMapping.Attribute>();
            }

            IList <ProductStockSyncMapping.TonKho> tonKhos = _stockSyncRepository.GetTonKhoCuaSanPham(product.ProductId);

            #region lay ton kho trong chi nhanh

            IList <SanPhamViewModel.BranchItem> branchItems = GetBrands();

            if (attributes.Any())
            {
                attributes[0].Selected = true;
                string firstBarcode = attributes[0].Barcode;
                foreach (var b in branchItems)
                {
                    var item = tonKhos.FirstOrDefault(o => o.Barcode.Equals(firstBarcode) && o.Idbranch == b.Id);
                    if (item != null)
                    {
                        b.Quantity = item.OnHand;
                    }
                }
            }
            #endregion

            IList <PromotionMapping.PromotionCheckProduct> promotions = _promotionRepository.GetActives();

            if (promotions.Any())
            {
                foreach (var pr in promotions)
                {
                    var promotionDetail = pr.PromotionDetails.FirstOrDefault(dt => dt.ProductId == product.ProductId);
                    if (promotionDetail != null)
                    {
                        product.HasPromotion   = true;
                        product.PricePromotion = (int)promotionDetail.PriceDiscount;
                        product.Discount       = (short)promotionDetail.Percent;
                        break;
                    }
                }
            }

            var selected = attributes.FirstOrDefault(o => o.Selected);

            SanPhamViewModel.DetailPageViewModel model = new SanPhamViewModel.DetailPageViewModel()
            {
                Product          = product,
                Attributes       = attributes,
                BranchItems      = branchItems,
                ProductAvailable = branchItems.Any(o => o.Quantity > 0),
                CurrentBarcode   = selected != null ? selected.Barcode : "",
                ThietLap         = _ThietLapRepository.GetAll().FirstOrDefault(),
                LuotDanhGia      = _userRatingRepository.GetLuotReView(linkspamp) < 200 ? _userRatingRepository.GetLuotReView(linkspamp) + 200 : _userRatingRepository.GetLuotReView(linkspamp),
                DanhSachTags     = _danhSachTagRepository.GetTenTagViewDetail(linkspamp)
            };


            //chi co admin đăng nhập mới thấy đc số lượng còn hàng
            ShopUser efmvcUser = _httpContext.User.GetShopUser();
            model.IsAdmin = efmvcUser != null && efmvcUser.UserId != 0;

            ViewData["sao"] = _userRatingRepository.GetSao(linkspamp);

            //dung de xai data-src cho hinh anh trong chi tiet
            return(View("Detail", model));
        }