示例#1
0
        public IActionResult getRelatedItems(int ProductId)

        {
            var relatedTags = new List <RelatedTag>();
            var result      = from prt in db.ProductRelatedTagMap
                              where prt.ProductId == ProductId
                              join rt in db.RelatedTag on prt.RelatedTagId equals rt.Id
                              where rt.IsActive == true
                              select rt;

            relatedTags = result.ToList();
            var tags      = db.Tag.Where(x => x.IsActive == true).Include(x => x.ProductTags).ToList();
            var finaltags = new List <Tag>();

            foreach (var t in relatedTags)
            {
                finaltags.AddRange(tags.Where(x => x.Name.ToLower().Trim() == t.Name.ToLower().Trim()).ToList());
            }
            var final = new List <ProductTag>();
            var all   = db.ProductTag.Where(x => x.IsActive == true && x.IsApproved == true).ToList();

            foreach (var f in finaltags)
            {
                final.AddRange(all.Where(x => x.TagId == f.Id).ToList());
            }
            var finalpro = new List <ProductCatalogue>();

            final = final.Where(x => x.ProductId != ProductId).ToList();
            foreach (var l in final)
            {
                var one     = new ProductCatalogue();
                var variant = db.ProductVariantDetails.Where(x => x.IsActive == true && x.ProductId == l.ProductId).FirstOrDefault();
                var varlist = new List <ProductVariantDetail>();

                if (variant != null)
                {
                    varlist.Add(variant);

                    varlist                = DealHelper.calculateDeal(varlist, db);
                    varlist                = PriceIncrementHelper.calculatePrice(varlist, db);
                    variant                = varlist[0];
                    one.Id                 = l.ProductId;
                    one.Name               = db.Products.Where(x => x.Id == l.ProductId).FirstOrDefault().Name;
                    one.CostPrice          = variant.CostPrice;
                    one.Discount           = variant.Discount;
                    one.PriceAfterDiscount = variant.PriceAfterdiscount;
                    one.SellingPrice       = variant.Price;
                    var image = db.ProductImages.Where(x => x.IsActive == true && x.IsDefault == true && x.ProductVariantDetailId == variant.Id).Select(x => x.ImagePath150x150).FirstOrDefault();
                    one.Image150 = image == null?db.ProductImages.Where(x => x.IsActive == true && x.ProductVariantDetailId == variant.Id).Select(x => x.ImagePath150x150).FirstOrDefault() : image;

                    one.InStock         = variant.InStock;
                    one.VariantDetailId = variant.Id;
                    finalpro.Add(one);
                }
            }
            return(Ok(finalpro.Take(20).ToList()));
        }
示例#2
0
        public async Task <IActionResult> GetProductDetails(int Id, int variantId)
        {
            var data   = db.ProductVariantDetails.Where(x => x.Id == variantId && x.IsActive == true).Include(x => x.Product).FirstOrDefault();
            var result = new ProductDetail();

            result.Description            = data.Product.Description;
            result.Discount               = data.Discount;
            result.InStock                = data.InStock;
            result.Name                   = data.Product.Name;
            result.ProductId              = data.ProductId;
            result.ProductVariantDetailId = data.Id;
            result.SellingPrice           = data.Price;
            result.PriceAfterDiscount     = data.PriceAfterdiscount;
            result.VendorId               = data.Product.VendorId;
            result.ShipmentVendor         = data.Product.ShipmentVendor ?? false;
            result = DealHelper.calculateDealForProductDetail(result, db);
            result = PriceIncrementHelper.calculatePriceForProductDetail(result, db);
            return(Ok(result));
        }
示例#3
0
        public product7 allProducts(int Id, string name, int orderNumber)
        {
            var      eachPrd = new product7();
            product7 _prd    = new product7();

            try
            {
                var data = db.Products.Where(x => x.IsActive == true && x.IsEnable == true && x.Id == Id)
                           .Include(c => c.ProductVariantDetails)
                           .Include(x => x.RatingReviews)
                           .Include(x => x.ProductImages).OrderByDescending(x => x.Id).FirstOrDefault();
                if (data != null)
                {
                    eachPrd.listName  = name;
                    eachPrd.listOrder = orderNumber;
                    eachPrd.Id        = data.Id;
                    if (data.ProductImages.Count() != 0)
                    {
                        eachPrd.Url    = data.ProductImages?.FirstOrDefault().ImagePath;
                        eachPrd.Url150 = data.ProductImages?.FirstOrDefault().ImagePath150x150;
                        eachPrd.Url450 = data.ProductImages?.FirstOrDefault().ImagePath450x450;
                    }
                    eachPrd.Rating            = data.RatingReviews.Select(x => x.Rating).FirstOrDefault();
                    eachPrd.Description       = data.Description;
                    eachPrd.Name              = data.Name;
                    eachPrd.ShipmentVendor    = data.ShipmentVendor ?? false;
                    eachPrd.ShipmentTime      = data.ShipmentTime ?? 0;
                    eachPrd.ShipmentCost      = data.ShipmentCost ?? 0;
                    eachPrd.ProductCategoryId = data.ProductCategoryId;
                    if (data.ProductVariantDetails.Where(c => c.IsActive == true).Any(c => c.IsDefault == true))
                    {
                        eachPrd.LandingVariant = data.ProductVariantDetails.Where(c => c.IsActive == true).Where(c => c.IsDefault == true && c.IsActive == true).Select(d => new ProductVariantDetailModel
                        {
                            Id                 = d.Id,
                            Price              = d.Price,
                            Discount           = d.Discount,
                            PriceAfterdiscount = d.PriceAfterdiscount,
                            InStock            = d.InStock,
                        }).FirstOrDefault();
                    }
                    else
                    {
                        eachPrd.LandingVariant = data.ProductVariantDetails.Where(c => c.IsActive == true).Select(d => new ProductVariantDetailModel
                        {
                            Id                 = d.Id,
                            Price              = d.Price,
                            Discount           = d.Discount,
                            PriceAfterdiscount = d.PriceAfterdiscount,
                            InStock            = d.InStock,
                        }).FirstOrDefault();
                    }
                    if (eachPrd.LandingVariant != null)
                    {
                        eachPrd.SellingPrice       = eachPrd.LandingVariant.Price;
                        eachPrd.Discount           = eachPrd.LandingVariant.Discount;
                        eachPrd.PriceAfterdiscount = eachPrd.LandingVariant.PriceAfterdiscount;
                        eachPrd.InStock            = eachPrd.LandingVariant.InStock;

                        var img = data.ProductImages.Where(c => c.ProductId == eachPrd.Id && c.ProductVariantDetailId == eachPrd.LandingVariant.Id && c.IsActive == true).ToList();
                        if (img.Any(c => c.IsDefault == true))
                        {
                            eachPrd.Url    = img.Where(c => c.IsDefault == true).FirstOrDefault().ImagePath;
                            eachPrd.Url150 = img.Where(c => c.IsDefault == true).FirstOrDefault().ImagePath150x150;
                            eachPrd.Url450 = img.Where(c => c.IsDefault == true).FirstOrDefault().ImagePath450x450;
                        }
                        else
                        {
                            eachPrd.Url    = img.FirstOrDefault().ImagePath;
                            eachPrd.Url150 = img.FirstOrDefault().ImagePath150x150;
                            eachPrd.Url450 = img.FirstOrDefault().ImagePath450x450;
                        }
                    }


                    eachPrd.VariantDetailId = eachPrd.LandingVariant.Id;

                    eachPrd = DealHelper.calculateDealForProducts(eachPrd, db);
                    eachPrd = PriceIncrementHelper.calculatePriceForProducts(eachPrd, db);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            return(eachPrd);
        }
示例#4
0
        //for deals
        public List <product7> allProducts(List <int> variantId, int DealId)
        {
            var all = db.ProductVariantDetails.Where(x => x.IsActive == true && x.Product.IsActive == true && x.Product.IsEnable == true)
                      .Include(x => x.Product.ProductImages)
                      .Include(x => x.Product.RatingReviews)
                      .ToList();
            var result = new List <ProductVariantDetail>();

            foreach (var id in variantId)
            {
                var data = all.Where(x => x.Id == id).Select(X => new ProductVariantDetail()
                {
                    Id                 = X.Id,
                    IsActive           = X.IsActive,
                    IsDefault          = X.IsDefault,
                    Product            = X.Product,
                    Weight             = X.Weight,
                    Discount           = X.Discount,
                    CostPrice          = X.CostPrice,
                    InStock            = X.InStock,
                    Price              = X.Price,
                    PriceAfterdiscount = X.PriceAfterdiscount,
                    ProductId          = X.ProductId,
                    ProductImages      = X.ProductImages.Where(x => x.IsActive == true).ToList(),
                    ProductSKU         = X.ProductSKU,
                }).FirstOrDefault();
                if (data != null)
                {
                    result.Add(data);
                }
            }


            result = DealHelper.calculateDealonetime(result, DealId, db);
            result = PriceIncrementHelper.calculatePrice(result, db);

            var list = new List <product7>();

            foreach (var r in result)
            {
                var model = new product7();
                model.InStock                           = r.InStock;
                model.CostPrice                         = r.CostPrice;
                model.Discount                          = r.Discount;
                model.Id                                = r.ProductId;
                model.SellingPrice                      = r.Price;
                model.VariantDetailId                   = r.Id;
                model.LandingVariant.InStock            = r.InStock;
                model.LandingVariant.Id                 = r.Id;
                model.LandingVariant.Price              = r.Price;
                model.LandingVariant.PriceAfterdiscount = r.PriceAfterdiscount;
                model.Name                              = r.Product?.Name;
                model.ShipmentVendor                    = r.Product?.ShipmentVendor ?? false;
                model.ShipmentTime                      = r.Product?.ShipmentTime ?? 0;
                model.ShipmentCost                      = r.Product?.ShipmentCost ?? 0;
                model.PriceAfterdiscount                = r.PriceAfterdiscount;
                model.ProductCategoryId                 = Convert.ToInt32(r.Product?.ProductCategoryId);
                if (r.Product?.ProductImages.Where(x => x.IsActive == true).Count() != 0)
                {
                    model.Url    = r.Product?.ProductImages?.Where(x => x.IsActive == true).FirstOrDefault().ImagePath;
                    model.Url150 = r.Product?.ProductImages?.Where(x => x.IsActive == true).FirstOrDefault().ImagePath150x150;
                    model.Url450 = r.Product?.ProductImages?.Where(x => x.IsActive == true).FirstOrDefault().ImagePath450x450;
                }
                var rating = all.Where(x => x.Id == r.Id).Select(x => x.Product.RatingReviews).FirstOrDefault();
                model.Rating      = rating.Select(x => x.Rating).FirstOrDefault();
                model.Description = r.Product?.Description;
                list.Add(model);
            }
            return(list);
        }
示例#5
0
        public async Task <IActionResult> GetLikeProducts(string IpAddress, int UserId)


        {
            var list = new List <ProductTag>();

            if (UserId > 0)
            {
                var result = from log in db.UserLogs
                             where log.IsActive == true && log.UserId == UserId && log.Url.Contains("product-details")
                             join tags in db.ProductTag on log.ProductId equals tags.ProductId
                             join p in db.Products on tags.ProductId equals p.Id
                             select tags;
                list = await result.ToListAsync();
            }
            else
            {
                var result = from log in db.UserLogs
                             where log.IsActive == true && (log.UserId == null || log.UserId == 0) && log.IPAddress == IpAddress && log.Url.Contains("product-details")
                             join tags in db.ProductTag on log.ProductId equals tags.ProductId
                             join p in db.Products on tags.ProductId equals p.Id
                             select tags;
                list = result.ToList();
            }
            var ids = list.Select(x => x.ProductId).Distinct();

            list = new List <ProductTag>();
            foreach (var l in ids)
            {
                list.AddRange(db.ProductTag.Where(x => x.ProductId == l).ToList());
            }
            var alltags   = db.ProductTag.Where(x => x.IsActive == true).ToList();
            var finaltags = new List <ProductTag>();

            foreach (var l in list)
            {
                var get = alltags.Where(x => x.TagId == l.TagId && x.ProductId != l.ProductId).ToList();
                finaltags.AddRange(get);
            }
            var final = new List <ProductCatalogue>();

            foreach (var l in finaltags)
            {
                var one     = new ProductCatalogue();
                var variant = db.ProductVariantDetails.Where(x => x.IsActive == true && x.ProductId == l.ProductId).FirstOrDefault();
                var varlist = new List <ProductVariantDetail>();

                if (variant != null)
                {
                    varlist.Add(variant);

                    varlist                = DealHelper.calculateDeal(varlist, db);
                    varlist                = PriceIncrementHelper.calculatePrice(varlist, db);
                    variant                = varlist[0];
                    one.Id                 = l.ProductId;
                    one.Name               = db.Products.Where(x => x.Id == l.ProductId).FirstOrDefault().Name;
                    one.CostPrice          = variant.CostPrice;
                    one.Discount           = variant.Discount;
                    one.PriceAfterDiscount = variant.PriceAfterdiscount;
                    one.SellingPrice       = variant.Price;
                    var image = db.ProductImages.Where(x => x.IsActive == true && x.IsDefault == true && x.ProductVariantDetailId == variant.Id).Select(x => x.ImagePath150x150).FirstOrDefault();
                    one.Image150 = image == null?db.ProductImages.Where(x => x.IsActive == true && x.ProductVariantDetailId == variant.Id).Select(x => x.ImagePath150x150).FirstOrDefault() : image;

                    one.InStock         = variant.InStock;
                    one.VariantDetailId = variant.Id;
                    final.Add(one);
                }
            }
            return(Ok(final.Take(20).ToList()));
        }
示例#6
0
        public List <ProductCatalogue> getFilterProducts([FromBody] Filter filter, [FromQuery] int page, [FromQuery] int pagesize)
        {
            try
            {
                if (filter.SearchData == "undefined" || filter.SearchData == null)
                {
                    filter.SearchData = "";
                }
                var model    = new List <ProductCatalogue>();
                var products = db.Products.Where(x => x.IsActive == true && x.IsEnable == true && x.ProductCategory.IsShow == true);
                var prodIds  = db.HomeCategoryProduct.Where(x => x.IsActive == true && x.HomeCategoryId == filter.CategoryId).Select(x => x.ProductId).ToList();
                var prod     = new List <Product>();

                decimal minprice = 0;
                decimal maxprice = 0;

                if (filter.SelectedVariants.Count() > 0)
                {
                    foreach (var s in filter.SelectedVariants)
                    {
                        var result = new List <Product>();
                        foreach (var o in s.VariantOptionId)
                        {
                            var pro = from cv in db.CategoryVariants
                                      where s.CategoryId == cv.ProductCategoryId && s.VariantId == cv.VariantId
                                      join pvo in db.ProductVariantOptions on cv.Id equals pvo.CategoryVariantId
                                      join pvd in db.ProductVariantDetails on pvo.ProductVariantDetailId equals pvd.Id
                                      join p in products on pvd.ProductId equals p.Id
                                      where o == pvo.VariantOptionId &&
                                      cv.IsActive == true && pvo.IsActive == true && pvd.IsActive == true && p.IsActive == true
                                      select p;
                            result.AddRange(pro.ToList());
                        }
                        products = result.AsQueryable();
                    }
                }
                var variantsData = new List <ProductVariantDetail>();
                foreach (var p in prodIds)
                {
                    if (products.Any(x => x.Id == p))
                    {
                        prod.Add(products.Where(x => x.Id == p).Include(x => x.ProductVariantDetails).FirstOrDefault());
                    }
                }
                foreach (var item in prod)
                {
                    if (item.ProductVariantDetails == null)
                    {
                        item.ProductVariantDetails = db.ProductVariantDetails.Where(x => x.ProductId == item.Id && x.IsActive == true).ToList();
                    }
                    var data = item.ProductVariantDetails.Where(b => b.IsActive == true).ToList();
                    variantsData.AddRange(data);
                }
                //variantsData.OrderByDescending(x => x.Id);
                var priceListdata = new List <ProductVariantDetail>();
                var plist         = prod.ToList();
                var variantlist   = db.ProductVariantDetails.Where(x => x.IsActive == true).Include(x => x.Product).ToList();
                foreach (var p in plist)
                {
                    var list = variantlist.Where(x => x.ProductId == p.Id).ToList();
                    priceListdata.AddRange(list);
                }
                //pricefilter
                var minprice1 = priceListdata.Count() == 0 ? 0 : priceListdata.Min(x => x.Price);
                var maxprice1 = priceListdata.Count() == 0 ? 0 : priceListdata.Max(x => x.Price);
                var pricelist = PriceRange(maxprice1, minprice1);

                var list1 = new List <ProductVariantDetail>();
                minprice = filter.MinPrice != "" && filter.MinPrice != "0" ? Convert.ToDecimal(filter.MinPrice.Split('$')[1]) : 0;
                maxprice = filter.MaxPrice != "" && filter.MaxPrice != "0" ? Convert.ToDecimal(filter.MaxPrice.Split('$')[1]) : 0;
                if (maxprice == 0)
                {
                    list1 = variantsData.Where(x => x.Price >= minprice).ToList();
                }
                else
                {
                    list1 = variantsData.Where(x => x.Price >= minprice && x.Price < maxprice).ToList();
                }
                //search by name
                //var data11 =
                foreach (var l in list1)
                {
                    if (l.Product == null)
                    {
                        l.Product = db.Products.Where(x => x.Id == l.ProductId && x.IsActive == true && x.IsEnable == true).FirstOrDefault();
                    }
                }

                //get data for page
                var final = list1.OrderByDescending(x => x.Id).Skip((page - 1) * pagesize).Take(pagesize).ToList();
                var count = list1.Count();

                var ProductVariantOptions = db.ProductVariantOptions.Where(b => b.IsActive == true).ToList();
                var optionsList           = db.VariantOptions.Where(b => b.IsActive == true).Include(x => x.Variant).ToList();

                var variantsList = new List <ProductVariantDetail>();
                final = DealHelper.calculateDeal(final, db);
                final = PriceIncrementHelper.calculatePrice(final, db);

                foreach (var p in final)
                {
                    var pro = new ProductCatalogue();
                    pro.Id = p.ProductId;
                    //pro.Name = p.Product.Name;
                    var pdata = prod.Where(x => x.Id == p.ProductId).FirstOrDefault();
                    pro.Name                = pdata?.Name;
                    pro.ShipmentVendor      = pdata?.ShipmentVendor ?? false;
                    pro.ShipmentCost        = pdata?.ShipmentCost ?? 0;
                    pro.ShipmentTime        = pdata?.ShipmentTime ?? 0;
                    pro.Description         = pdata?.Description;
                    pro.ProductCategoryName = pdata?.ProductCategory?.Name;
                    pro.ProductCategoryId   = Convert.ToInt32(pdata?.ProductCategoryId);

                    pro.InStock = p.InStock;

                    pro.VariantDetailId    = p.Id;
                    pro.Discount           = p.Discount;
                    pro.SellingPrice       = p.Price;
                    pro.PriceAfterDiscount = p.PriceAfterdiscount;
                    //}


                    var selectedImage = new ProductImage();
                    selectedImage = db.ProductImages.Where(x => x.IsActive == true && x.IsDefault == true && x.ProductVariantDetailId == p.Id).FirstOrDefault();
                    if (selectedImage == null)
                    {
                        selectedImage = db.ProductImages.Where(x => x.IsActive == true && x.ProductVariantDetailId == pro.VariantDetailId).FirstOrDefault();
                    }
                    pro.Image    = selectedImage?.ImagePath;
                    pro.Image150 = selectedImage?.ImagePath150x150;
                    pro.Image450 = selectedImage?.ImagePath450x450;

                    var VariantOptionIds = ProductVariantOptions.Where(x => x.ProductVariantDetailId == pro.VariantDetailId && x.IsActive == true).ToList().Select(x => x.VariantOptionId);
                    foreach (var v in VariantOptionIds)
                    {
                        var data = optionsList.Where(x => x.Id == v && x.IsActive == true).FirstOrDefault().RemoveReferences();
                        pro.VariantOptions.Add(data);
                    }
                    pro.Rating    = db.RatingReviews.Where(x => x.IsActive == true && x.ReviewStatusId == 1 && x.ProductId == p.ProductId).FirstOrDefault()?.Rating;
                    pro.Count     = count;
                    pro.PriceList = pricelist;
                    pro.AvgRate   = AvgRating(p.Id);
                    pro.ActiveTo  = p.ActiveTo;
                    if (pdata != null)
                    {
                        model.Add(pro);
                    }
                }


                //rate
                model = model.Where(x => x.AvgRate >= filter.AvgRate).OrderByDescending(x => x.Id).ToList();
                //sorting
                if (filter.SortBy == "HighToLow")
                {
                    model = model.OrderByDescending(x => x.PriceAfterDiscount).ToList();
                }
                else if (filter.SortBy == "LowToHigh")
                {
                    model = model.OrderBy(x => x.PriceAfterDiscount).ToList();
                }
                if (model.Count == 0)
                {
                    var model1 = new ProductCatalogue();
                    model1.PriceList = pricelist;
                    model.Add(model1);
                }

                return(model);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#7
0
        public List <GetCart> GetCartByCustomerPromo(int CustomerId, string ip)
        {
            var carts   = new List <Cart>();
            var cart    = new Cart();
            var vendors = db.Users.Where(b => b.IsActive == true).ToList();

            if (CustomerId > 0)
            {
                carts = db.Carts.Where(x => x.UserId == CustomerId && x.IsActive == true && x.IsConvertToCheckout == false).Include(x => x.CartItems).ToList();
            }
            //else
            //{
            //    carts = db.Carts.Where(x => x.IpAddress == ip && x.IsActive == true && x.UserId == null && x.IsConvertToCheckout == false).Include(x => x.CartItems).ToList();
            //}
            //to add all cartitems in first cart
            if (carts.Count() > 1)
            {
                cart = carts[0];
                for (int i = 1; i < carts.Count(); i++)
                {
                    var items = db.CartItems.Where(x => x.CartId == carts[i].Id && x.CartId != cart.Id && x.IsActive == true).ToList();
                    foreach (var it in items)
                    {
                        it.CartId = cart.Id;
                    }
                    try
                    {
                        db.Entry(items).State = EntityState.Modified;
                        db.SaveChanges();
                        var allcarts = db.Carts.Where(x => x.IsActive == true && x.CartItems.Count() == 0).Include(x => x.CartItems).ToList();
                        //allcarts.RemoveAll(x => x.Id > 0);
                        db.Entry(allcarts).State = EntityState.Deleted;
                        db.SaveChanges();
                    }
                    catch (Exception ex)
                    { }
                }
            }
            else if (carts.Count() == 1)
            {
                cart = carts[0];
            }


            foreach (var c in cart.CartItems.Where(m => m.IsActive == true))
            {
                c.ProductVariantDetail = db.ProductVariantDetails.Where(x => x.IsActive == true && x.Id == c.ProductVariantDetailId)
                                         .Include(x => x.Product)
                                         .Include(x => x.ProductVariantOptions)
                                         .Include(x => x.ProductImages).FirstOrDefault().RemoveReferences();
            }


            var cartitems = new List <GetCart>();
            var newitems  = cart.CartItems.Where(x => x.IsActive == true).ToList();

            //newitems = DealHelper.calculateDeal(newitems, db);
            foreach (var c in newitems)
            {
                var model = new GetCart();
                model.AdditionalCost = cart.AdditionalCost;
                model.ProductId      = Convert.ToInt32(c.ProductVariantDetail?.ProductId);
                model.Id             = cart.Id;
                if (c.ProductVariantDetail?.ProductImages.Count > 0)
                {
                    model.Image150 = c.ProductVariantDetail?.ProductImages.Where(x => x.IsDefault == true && x.IsActive == true).FirstOrDefault() == null ?
                                     (c.ProductVariantDetail.ProductImages.Where(x => x.IsActive == true).FirstOrDefault().ImagePath150x150 == null? c.ProductVariantDetail.ProductImages.Where(x => x.IsActive == true).FirstOrDefault().ImagePath: c.ProductVariantDetail.ProductImages.Where(x => x.IsActive == true).FirstOrDefault().ImagePath150x150)
                        :(c.ProductVariantDetail.ProductImages.Where(x => x.IsDefault == true && x.IsActive == true).FirstOrDefault().ImagePath150x150 == null? c.ProductVariantDetail.ProductImages.Where(x => x.IsDefault == true && x.IsActive == true).FirstOrDefault().ImagePath: c.ProductVariantDetail.ProductImages.Where(x => x.IsDefault == true && x.IsActive == true).FirstOrDefault().ImagePath150x150);
                }
                model.InStock      = Convert.ToInt32(c.ProductVariantDetail?.InStock);
                model.SellingPrice = Convert.ToInt32(c.ProductVariantDetail.Price);
                var p     = Convert.ToInt32(db.ProductVariantDetails.Where(x => x.Id == c.ProductVariantDetailId).Include(x => x.Product.ProductCategory).FirstOrDefault().Product?.ProductCategory?.ParentId);
                var catid = getparentCat(p);
                model.Commission          = GetCommissionByCategoryId(catid);
                model.Discount            = Convert.ToInt32(c.ProductVariantDetail.Discount);
                model.IpAddress           = cart.IpAddress;
                model.IsConvertToCheckout = cart.IsConvertToCheckout;
                model.Name                   = c.ProductVariantDetail?.Product?.Name;
                model.OrderDate              = cart.OrderDate;
                model.OrderNumber            = cart.OrderNumber;
                model.UserId                 = cart.UserId;
                model.ProductVariantDetailId = c.ProductVariantDetailId;
                if (c.ProductVariantDetail?.ProductVariantOptions != null)
                {
                    foreach (var v in c.ProductVariantDetail?.ProductVariantOptions.Where(x => x.IsActive == true))
                    {
                        var variantid = v.VariantOptionId;
                        var variantop = new VariantOption();
                        variantop = db.VariantOptions.Where(x => x.IsActive == true && x.Id == variantid).Include(x => x.Variant).FirstOrDefault().RemoveReferences();
                        var variantmodel = new VariantOptionModel();
                        variantmodel.Id          = variantop.Id;
                        variantmodel.Name        = variantop.Name;
                        variantmodel.VariantId   = variantop.VariantId;
                        variantmodel.varientName = variantop.Variant?.Name;
                        model.VariantOptions.Add(variantmodel);
                    }
                }
                model.Quantity   = c.Quantity;
                model.CartItemId = c.Id;
                if (c.ProductVariantDetail?.Product.VendorId > 0)
                {
                    var vendor = vendors.Where(v => v.Id == c.ProductVariantDetail?.Product?.VendorId && v.RoleId == (int)RoleType.Vendor).FirstOrDefault();
                    if (vendor != null)
                    {
                        model.VendorName = vendor.DisplayName;
                    }
                }
                cartitems.Add(model);
            }

            cartitems = DealHelper.calculateDeal(cartitems, db);
            cartitems = PriceIncrementHelper.calculatePrice(cartitems, db);
            cartitems = SpinnerPromotion(cartitems, CustomerId);
            return(cartitems);


            var getCart = new List <GetCart>();

            return(getCart);
        }
示例#8
0
        public IActionResult CompareProducts(int?UserId, string IpAddress)
        {
            var productDetail     = new product1();
            var productDetaillist = new List <product1>();
            var obj            = new List <CompareProduct>();
            var productDetails = new ProductionSpecification();

            try
            {
                if (UserId > 0)
                {
                    obj = db.CompareProducts.Where(x => x.IsActive == true && x.UserId == UserId)
                          .Include(X => X.ProductVariantDetail)
                          .Include(X => X.ProductVariantDetail.Product)
                          .Include(X => X.ProductVariantDetail.Product.ProductImages)
                          .Include(x => x.ProductVariantDetail.Product.RatingReviews)
                          .Include(x => x.ProductVariantDetail.Product.ProductionSpecifications)
                          .Take(4)
                          .ToList();
                }
                else if (IpAddress != null)
                {
                    obj = db.CompareProducts.Where(x => x.IsActive == true && x.IpAddress == IpAddress)
                          .Include(X => X.ProductVariantDetail)
                          .Include(X => X.ProductVariantDetail.Product)
                          .Include(X => X.ProductVariantDetail.Product.ProductImages)
                          .Include(x => x.ProductVariantDetail.Product.RatingReviews)
                          .Include(x => x.ProductVariantDetail.Product.ProductionSpecifications)
                          .Take(4)
                          .ToList();
                }
                foreach (var item in obj)
                {
                    productDetail = new product1();
                    // productDetail.ProductSpecificationDescription = item.ProductVariantDetail.Product.ProductionSpecifications.Select(x => x.Description).FirstOrDefault();
                    // productDetail.ProductSpecificationHeading = item.ProductVariantDetail.Product.ProductionSpecifications.Select(x => x.HeadingName).FirstOrDefault();
                    foreach (var spec in item.ProductVariantDetail.Product.ProductionSpecifications)
                    {
                        productDetails             = new ProductionSpecification();
                        productDetails.HeadingName = item.ProductVariantDetail.Product.ProductionSpecifications.Select(x => x.Description).FirstOrDefault();
                        productDetails.Description = item.ProductVariantDetail.Product.ProductionSpecifications.Select(x => x.HeadingName).FirstOrDefault();
                    }

                    productDetail.ProductionSpecification.Add(productDetails);
                    productDetail.ProductId          = item.ProductVariantDetail.ProductId;
                    productDetail.VariantDetailId    = item.ProductVariantDetailId;
                    productDetail.CompareProductId   = item.Id;
                    productDetail.Name               = item.ProductVariantDetail.Product.Name;
                    productDetail.ShipmentVendor     = item.ProductVariantDetail.Product.ShipmentVendor ?? false;
                    productDetail.ShipmentTime       = item.ProductVariantDetail.Product.ShipmentTime ?? 0;
                    productDetail.ShipmentCost       = item.ProductVariantDetail.Product.ShipmentCost ?? 0;
                    productDetail.Description        = item.ProductVariantDetail.Product.Description.Length >= 255? item.ProductVariantDetail.Product.Description.Substring(0, 255): item.ProductVariantDetail.Product.Description;
                    productDetail.SellingPrice       = item.ProductVariantDetail.Price;
                    productDetail.Discount           = item.ProductVariantDetail.Discount;
                    productDetail.PriceAfterdiscount = item.ProductVariantDetail.PriceAfterdiscount;
                    productDetail.InStock            = item.ProductVariantDetail.InStock;
                    if (item.ProductVariantDetail.Product.ProductImages.Count > 0)
                    {
                        if (item.ProductVariantDetail.Product.ProductImages.Any(c => c.IsDefault == true))
                        {
                            productDetail.LandingImage150 = item.ProductVariantDetail.Product.ProductImages.Where(c => c.IsDefault == true && c.IsActive == true).FirstOrDefault().ImagePath150x150;
                        }
                        else
                        {
                            productDetail.LandingImage150 = item.ProductVariantDetail.Product.ProductImages.Where(c => c.IsActive == true).FirstOrDefault().ImagePath150x150;
                        }
                    }
                    var reviewCount = item.ProductVariantDetail.Product.RatingReviews.Where(X => X.Review != null).Count();
                    var ratingCount = item.ProductVariantDetail.Product.RatingReviews.Where(x => x.Rating > 0).Count();
                    var ratingSum   = item.ProductVariantDetail.Product.RatingReviews.Where(x => x.Rating > 0).Sum(x => x.Rating);

                    productDetail.ReviewCount = reviewCount;
                    if (ratingCount > 0 && ratingSum > 0)
                    {
                        var ratingAvg = Convert.ToSingle(ratingSum) / Convert.ToSingle(ratingCount);
                        productDetail.RatingAvg = ratingAvg;
                    }
                    if (productDetail.ReviewCount > 0 && productDetail.RatingAvg > 0)
                    {
                        productDetail.ReviewCount = 0;
                        productDetail.RatingAvg   = 0;
                    }
                    if (productDetail.LandingVariant == null)
                    {
                        productDetail.LandingVariant = new ProductVariantDetailModel();
                    }

                    productDetail.LandingVariant.Id = Convert.ToInt32(productDetail.VariantDetailId);
                    productDetaillist.Add(productDetail);
                }
                productDetaillist = DealHelper.calculateDealForProductsList(productDetaillist, db);
                productDetaillist = PriceIncrementHelper.calculatePriceForProductsList(productDetaillist, db);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.InnerException);
            }
            return(Ok(productDetaillist));
        }