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); }
// [Authorize(Roles = "Admin,Customer")] public IActionResult CheckOutByCustomer(int CustomerId, string IpAddress, int?orderId = 0) { var checkouts = new List <Checkout>(); try { if (CustomerId > 0) { checkouts = db.Checkouts.Where(x => x.UserId == CustomerId && x.IsActive == true) .Include(x => x.CheckoutItems) .Include(x => x.User).ToList(); } //else //{ // checkouts = db.Checkouts.Where(x => x.IpAddress == IpAddress && x.IsActive == true).Include(x => x.CheckoutItems).OrderByDescending(x=>x.Id).ToList(); //} var productvarientdetails = db.ProductVariantDetails .Where(x => x.IsActive == true) .Include(x => x.Product) .Include(x => x.ProductVariantOptions) .Include(x => x.ProductImages).ToList(); if (orderId > 0) { checkouts = checkouts.Where(b => b.Id == orderId).ToList(); } foreach (var checkout in checkouts) { foreach (var c in checkout?.CheckoutItems.Where(m => m.IsActive == true)) { c.ProductVariantDetail = new ProductVariantDetail(); if (c.ProductVariantDetailId > 0) { c.ProductVariantDetail = productvarientdetails .Where(x => x.Id == c.ProductVariantDetailId). FirstOrDefault(); } } } var checkoutitems = new List <CheckOut>(); var vendors = db.Users.Where(b => b.IsActive == true).ToList(); var trackorders = db.TrackOrders.ToList(); var products = db.Products.Where(x => x.IsActive == true).ToList(); var varientoptions = db.VariantOptions.Where(x => x.IsActive == true).Include(x => x.Variant).ToList(); var return1 = db.Return.Where(x => x.IsActive == true).ToList(); foreach (var checkout in checkouts) { foreach (var c in checkout?.CheckoutItems.Where(x => x.IsActive == true)) { var model = new CheckOut(); if (model.SellerName == null && 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.SellerName = vendor.FirstName + " " + vendor.LastName; } } model.AdditionalCost = checkout.AdditionalCost; model.Id = checkout.Id; model.OrderStatus = trackorders.Where(x => x.OrderId == checkout.Id).FirstOrDefault()?.Status; if (c.ProductVariantDetail?.ProductImages.Count > 0 || c.ProductVariantDetail?.ProductImages != null) { model.Image = c.ProductVariantDetail?.ProductImages .Where(x => x.IsDefault == true && x.IsActive == true) .FirstOrDefault() == null?c.ProductVariantDetail?.ProductImages .Where(x => x.IsActive == true).FirstOrDefault() .ImagePath : c.ProductVariantDetail?.ProductImages .Where(x => x.IsDefault == true && x.IsActive == true) .FirstOrDefault().ImagePath; } model.IpAddress = checkout.IpAddress; if (c.ProductVariantDetail != null) { model.ProductId = products.Where(x => x.Id == c.ProductVariantDetail.ProductId).Select(x => x.Id).FirstOrDefault(); // model.IsConvertToCheckout = checkout.IsConvertToCheckout; if (c.ProductVariantDetail.Product?.Name != null) { model.Name = c.ProductVariantDetail.Product.Name; } } model.OrderDate = checkout.CheckoutDate; model.OrderNumber = checkout.InvoiceNumber; model.TotalAmount = checkout.TotalAmount; model.UserId = checkout.UserId; model.ProductVariantDetailId = c.ProductVariantDetailId; if (c.ProductVariantDetail != null) { foreach (var v in c.ProductVariantDetail?.ProductVariantOptions.Where(x => x.IsActive == true)) { var variantid = v.VariantOptionId; var variantop = new VariantOption(); variantop = varientoptions.Where(x => x.IsActive == true && x.Id == variantid).FirstOrDefault().RemoveReferences(); var variantmodel = new VariantOptionModel(); variantmodel.Id = variantop.Id; variantmodel.Name = variantop.Name; variantmodel.VariantId = variantop.VariantId; if (variantop.Variant?.Name != null) { variantmodel.varientName = variantop.Variant.Name; } model.VariantOptions.Add(variantmodel); } } model.SellingPrice = c.UnitPrice * c.Quantity; model.Discount = Convert.ToInt32(c.Discount + c.DealDiscount); // var PriceAfterDiscount = c.UnitPrice - (c.UnitPrice * model.Discount / 100); // model.PriceAfterDiscount = PriceAfterDiscount * c.Quantity; model.PriceAfterDiscount = c.Amount / c.Quantity; model.Quantity = c.Quantity; model.Amount = model.PriceAfterDiscount; model.TotalAmount = checkout.TotalAmount + checkout.ShippingPrice; model.checkoutItemId = c.Id; var data = return1.Where(x => x.CheckoutItemId == c.Id).FirstOrDefault(); if (data != null) { model.IsReturned = true; } else { model.IsReturned = false; } checkoutitems.Add(model); } } var items = checkoutitems.OrderByDescending(x => x.Id).GroupBy(x => x.OrderNumber).ToList(); return(Ok(items)); } catch (Exception ex) { throw ex; } // checkoutitems; }