Ejemplo n.º 1
0
        public async Task <SiteCartVM> Cart()
        {
            ViewBag.P = @Request.Headers["Referer"].ToString();
            var categories = await _context.ProductCategories.ToListAsync();

            var user     = _context.Users.SingleOrDefault(u => u.UserName == User.Identity.Name);
            var products = (from a in _context.Products.Where(x => x.ProductStatus == ProductStatus.آماده_برای_فروش)
                            .Join(_context.ProductCategories,
                                  ac => ac.CategoryIdLvl1,
                                  cc => cc.Id,
                                  (ac, cc) => new
            {
                ac,
                cc
            }
                                  ).ToList()
                            group a by a.ac.Code into pp
                            select new ProductWithMeterForFactorVM
            {
                Code = pp.FirstOrDefault().ac.Code,
                Name = pp.FirstOrDefault().ac.Name + " " + removeDuplicate(String.Join(", ", (pp.Select(x => x.cc.ProductCategoryType == 7 ? x.cc.Name : "")).ToArray())).Replace(",", ""),
                Price = pp.FirstOrDefault().ac.Price,
                ImageUrl = pp.FirstOrDefault().ac.ImageUrl,
                Id = pp.FirstOrDefault().ac.Id,
            })
                           .ToList();
            var sendPrice = await _context.Settings.SingleOrDefaultAsync(x => x.Key == "SendPrice");

            var vm = new SiteCartVM();

            if (user != null)
            {
                if (user.Phone != null)
                {
                    vm.IsProfileCompelete = true;
                }
            }
            var cart = Request.Cookies["cart"];

            if (cart != null)
            {
                vm.ProductIds = cart.Split("_").Select(x => int.Parse(x.Split("-")[0])).ToList();
                vm.Lengths    = cart.Split("_").Select(x => int.Parse(x.Split("-")[1])).ToList();
                vm.Products   = products.Where(x => vm.ProductIds.Contains(x.Id)).ToList();
                foreach (var item in vm.ProductIds)
                {
                    var l = vm.Lengths.ElementAt(vm.ProductIds.IndexOf(item));
                    vm.Products.Where(x => x.Id.Equals(item)).SingleOrDefault().Meter = l / 100;
                    double productPricePerMeter = vm.Products.Where(x => x.Id.Equals(item)).SingleOrDefault().Price;
                    vm.Price += productPricePerMeter * l / 100;
                }
                vm.SendPrice  = int.Parse(sendPrice.Value);
                vm.TotalPrice = vm.Price + vm.SendPrice;
            }
            return(vm);
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Cart()
        {
            ViewBag.P = @Request.Headers["Referer"].ToString();
            var categories = await _context.ProductCategories.ToListAsync();

            var user = _context.Users.SingleOrDefault(u => u.UserName == User.Identity.Name);



            var sendPrice = await _context.Settings.SingleOrDefaultAsync(x => x.Key == "SendPrice");

            var vm = new SiteCartVM();

            if (user != null)
            {
                if (user.PhoneNumber != null)
                {
                    vm.IsProfileCompelete = true;
                }
            }
            var cart = Request.Cookies["tempcart"];

            if (cart != null)
            {
                vm.ProductIds = cart.Split("_").Select(x => x.Split("-")[0]).ToList();
                vm.Count      = cart.Split("_").Select(x => int.Parse(x.Split("-")[1])).ToList();
                var products = _context.Products.Where(x => vm.ProductIds.Contains(x.Code)).ToLookup(p => p.Code, p => new ProductWithMeterForFactorVM
                {
                    Name     = p.Name,
                    Code     = p.Code,
                    Discount = p.Discount,
                    ImageUrl = p.ImageUrl,
                    Price    = p.Price,
                    Id       = p.Id,
                }).ToList();
                vm.Products = new List <ProductWithMeterForFactorVM>();
                foreach (IGrouping <string, ProductWithMeterForFactorVM> item in products)
                {
                    var x = item.FirstOrDefault();
                    vm.Products.Add(item.FirstOrDefault());
                }
                foreach (var item in vm.ProductIds)
                {
                    int count = vm.Count.ElementAt(vm.ProductIds.IndexOf(item));
                    vm.Products.Where(x => x.Code.Equals(item)).SingleOrDefault().Count = count;
                    var pr = vm.Products.Where(x => x.Code.Equals(item)).SingleOrDefault();
                    vm.Price += (pr.Price * count) - ((pr.Discount * pr.Price / 100) * pr.Count);
                }
                vm.SendPrice  = (sendPrice != null) ? int.Parse(sendPrice.Value) : 25000;
                vm.TotalPrice = vm.Price + vm.SendPrice;
            }
            return(PartialView(vm));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> SubmitBasket()
        {
            var user = _context.Users.SingleOrDefault(u => u.UserName == User.Identity.Name);

            if (user == null)
            {
                return(new JsonResult(new { status = 0, message = "پروفایل خود را تکمیل کنید" }));
            }
            var sendPrice = await _context.Settings.SingleOrDefaultAsync(x => x.Key == "SendPrice");

            var vm   = new SiteCartVM();
            var cart = Request.Cookies["tempcart"];
            var listOfFactorItems = new List <CartItem>();

            if (cart != null)
            {
                vm.ProductIds = cart.Split("_").Select(x => x.Split("-")[0]).ToList();
                vm.Count      = cart.Split("_").Select(x => int.Parse(x.Split("-")[1])).ToList();
                var products = _context.Products.Where(x => vm.ProductIds.Contains(x.Code)).ToLookup(p => p.Code, p => new ProductWithMeterForFactorVM
                {
                    Name     = p.Name,
                    Code     = p.Code,
                    Discount = p.Discount,
                    ImageUrl = p.ImageUrl,
                    Price    = p.Price,
                    Id       = p.Id,
                }).ToList();
                vm.Products = new List <ProductWithMeterForFactorVM>();
                foreach (IGrouping <string, ProductWithMeterForFactorVM> item in products)
                {
                    var x = item.FirstOrDefault();
                    vm.Products.Add(item.FirstOrDefault());
                }
                foreach (var item in vm.ProductIds)
                {
                    int count = vm.Count.ElementAt(vm.ProductIds.IndexOf(item));
                    vm.Products.Where(x => x.Code.Equals(item)).SingleOrDefault().Count = count;
                    var pr         = vm.Products.Where(x => x.Code.Equals(item)).SingleOrDefault();
                    var factorItem = new CartItem()
                    {
                        ProductId = pr.Id,
                        Price     = ((pr.Price) - (pr.Discount * pr.Price / 100)).ToString(),
                        UserName  = user.UserName,
                        Date      = DateTime.Now,
                        Quantity  = count,
                    };
                    listOfFactorItems.Add(factorItem);
                    vm.Price         += (pr.Price * count) - ((pr.Discount * pr.Price / 100) * pr.Count);
                    vm.DiscountPrice += (pr.Discount * pr.Price / 100) * pr.Count;
                }
                vm.SendPrice  = (sendPrice != null) ? int.Parse(sendPrice.Value) : 25000;
                vm.TotalPrice = vm.Price + vm.SendPrice;
            }

            else
            {
                return(new JsonResult(new { status = 0, message = "مشکلی در سبد خرید شما به وجود آمده است" }));
            }
            var factor = new ShoppingCart()
            {
                UserName        = user.UserName,
                Date            = DateTime.Now,
                Price           = vm.Price.ToString(),
                Address         = user.Address,
                CartItems       = listOfFactorItems,
                DiscountPercent = vm.DiscountPrice.ToString(),
                Name            = user.FirstName + " " + user.LastName,
                PaymentType     = PaymentType.Online,
                Phone           = user.Phone,
                PhoneNumber     = user.PhoneNumber,
                RequestCode     = RandomString(5),
                SendPrice       = vm.SendPrice.ToString(),
                Status          = RequestStatus.Confirmed,
            };
            await _context.CartItems.AddRangeAsync(listOfFactorItems);

            await _context.ShoppingCarts.AddRangeAsync(factor);

            await _context.SaveChangesAsync();

            return(new JsonResult(new { status = 1, message = "با موفقیت انجام شد" }));
        }