//載入購物車 public ActionResult LoadCart() { //會員 if (Session["IsLogin"] != null || Request.Cookies["IsLogin"] != null) { List <CartItem> cart; int uid = int.Parse(Request.Cookies["upid"].Value); var usercart = db.Carts.Where(c => c.UserID == uid); if (usercart.Count() > 0) { //把db.cart內容回傳cart> cart = ProductMethod.Cart(uid).ToList(); return(Json(cart, JsonRequestBehavior.AllowGet)); } else { return(Json(0, JsonRequestBehavior.AllowGet)); } } //非會員 else { if (Session["cart"] != null) { return(Json((List <CartItem>)Session["cart"], JsonRequestBehavior.AllowGet)); } else { List <CartItem> empty = new List <CartItem>(); return(Json(empty, JsonRequestBehavior.AllowGet)); } } }
public ActionResult Detail() { if (Session["recent"] != null) { List <int> recent = (List <int>)Session["recent"]; List <CartItem> citems = new List <CartItem>(); CartItem citem; foreach (var pd in recent) { decimal sprice; string activityname; if (db.ActivityProducts.Where(a => a.ProductID == pd).Count() > 0) { sprice = db.ActivityProducts.Where(a => a.ProductID == pd && a.Activity.EndDate >= DateTime.Now).FirstOrDefault().Activity.DiscountMethod.Discount; activityname = db.ActivityProducts.Where(a => a.ProductID == pd && a.Activity.EndDate >= DateTime.Now).FirstOrDefault().Activity.ActivityName; } else { sprice = 0; activityname = null; } citem = new CartItem() { ProductID = pd, ProductName = db.Products.Find(pd).ProductName, UnitPrice = db.Products.Find(pd).UnitPrice, SUnitPrice = Convert.ToInt32(Math.Floor(sprice * db.Products.Find(pd).UnitPrice)), ActivityName = activityname }; citems.Add(citem); } ViewBag.recent = citems.ToList(); } ViewBag.paymethod = db.PayMethods.ToList(); if (Session["IsLogin"] != null || Request.Cookies["IsLogin"] != null) { List <CartItem> cart; int uid = int.Parse(Request.Cookies["upid"].Value); var usercart = db.Carts.Where(c => c.UserID == uid).ToList(); if (usercart.Count() > 0) { cart = ProductMethod.Cart(uid); Session.Add("check", cart); return(View(cart)); } else { cart = new List <CartItem>(); return(View(cart)); } } else { return(RedirectToAction("Index", "Login", new { area = "Members" })); } }
public static IEnumerable <ProductCell> ClassifyResult(SearchFilters searchFilters) { FancyStoreEntities db = new FancyStoreEntities(); IQueryable <ProductColor> preproducts = db.ProductColors.AsQueryable(); var products = ProductMethod.CreateProductCells(preproducts).OrderBy(c => c.ProductID); IEnumerable <ProductCell> result; result = products.Where(p => p.ProductName.Contains(searchFilters.Keyword)); if (result.Count() > 0) { if (searchFilters.CategorySID != null) { result = result.Where(p => searchFilters.CategorySID.Contains(p.CategorySID)); } if (searchFilters.ColorID != null) { result = result.Where(p => searchFilters.ColorID.Contains(p.ColorID)); } if (searchFilters.SizeID != null) { switch (searchFilters.SizeID.Count) { case 1: result = result.Where(p => p.SizeID.Contains(searchFilters.SizeID[0])); break; case 2: result = result.Where(p => p.SizeID.Contains(searchFilters.SizeID[0]) || p.SizeID.Contains(searchFilters.SizeID[1])); break; case 3: result = result.Where(p => p.SizeID.Contains(searchFilters.SizeID[0]) || p.SizeID.Contains(searchFilters.SizeID[1]) || p.SizeID.Contains(searchFilters.SizeID[2])); break; case 4: result = result.Where(p => p.SizeID.Contains(searchFilters.SizeID[0]) || p.SizeID.Contains(searchFilters.SizeID[1]) || p.SizeID.Contains(searchFilters.SizeID[2]) || p.SizeID.Contains(p.SizeID[3])); break; } } if (searchFilters.MaxSunitPrice != 0) { result = result.Where(p => p.SUnitPrice >= searchFilters.MinSunitPrice && p.SUnitPrice <= searchFilters.MaxSunitPrice); } if (searchFilters.ActivityID != 0) { var activityname = db.Activities.Where(a => a.ActivityID == searchFilters.ActivityID && a.EndDate >= DateTime.Now).FirstOrDefault().ActivityName; result = result.Where(p => p.ActivityName == activityname); } } return(result); }
public ActionResult GetProduct(int id = 0, int orderid = 1, int page = 1) { var preproducts = db.ProductColors.Where(p => p.Product.ActivityProducts.Where(a => a.Activity.EndDate >= DateTime.Now).FirstOrDefault().Activity.ActivityID == id && p.Product.ActivityProducts.Where(a => a.Activity.EndDate >= DateTime.Now).FirstOrDefault().Activity.ActivityName != null); var products = ProductMethod.CreateProductCells(preproducts); int pages = products.Count(); var orderresult = ProductMethod.SetCellsByOrder(products, orderid).Skip((page - 1) * 16).Take(16); return(Json(new { pages = pages, datas = orderresult.ToList() }, JsonRequestBehavior.AllowGet)); }
//塊狀商品展示 public ActionResult GetProduct(int id = 1, int sid = 0, int orderid = 1, int page = 1) { IQueryable <ProductColor> preproducts = (sid != 0) ? db.ProductColors.Where(p => p.Product.CategorySID == sid) : db.ProductColors.Where(p => p.Product.CategorySmall.CategoryMID == id); var products = ProductMethod.CreateProductCells(preproducts); int pages = products.Count(); var orderresult = ProductMethod.SetCellsByOrder(products, orderid).Skip((page - 1) * 16).Take(16); return(Json(new { pages = pages, datas = orderresult.ToList() }, JsonRequestBehavior.AllowGet)); }
public ActionResult ChangeQty(int id, int cid, int sid, int qty) { List <CartItem> cart; int uid = int.Parse(Request.Cookies["upid"].Value); var sameitem = db.Carts.Where(c => c.UserID == uid && c.ProductID == id && c.ProductColorID == cid && c.ProductSizeID == sid).First(); sameitem.Quantity = qty; db.Entry(sameitem).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); cart = ProductMethod.Cart(uid); return(Json(cart, JsonRequestBehavior.AllowGet)); }
public ActionResult RemoveCart(int id, int cid, int sid) { List <CartItem> cart; int uid = int.Parse(Request.Cookies["upid"].Value); var cartitem = db.Carts.Where(c => c.UserID == uid && c.ProductID == id && c.ProductColorID == cid && c.ProductSizeID == sid).First(); db.Carts.Remove(cartitem); db.SaveChanges(); var usercart = db.Carts.Where(c => c.UserID == uid).ToList(); if (usercart.Count() > 0) { //把db.cart內容回傳cart> cart = ProductMethod.Cart(uid); return(Json(cart, JsonRequestBehavior.AllowGet)); } else { return(Json(0, JsonRequestBehavior.AllowGet)); } }
//取得商品詳細資料 public ActionResult GetProductDetail(int id = 1, int?colorid = 0) { //瀏覽過的紀錄 if (Session["recent"] != null) { List <int> recent = (List <int>)Session["recent"]; if (recent.Contains(id)) { } else { recent.Add(id); } Session["recent"] = recent; } else { List <int> recent = new List <int>(); recent.Add(id); Session.Add("recent", recent); } var product = db.Products.Find(id); ProductDetail prodcutDisplay; ViewBag.categorymid = product.CategorySmall.CategoryMID; ViewBag.categorymname = product.CategorySmall.CategoryMiddle.CategoryMName; ViewBag.categorysname = product.CategorySmall.CategorySName; prodcutDisplay = new ProductDetail() { ProductID = product.ProductID, ProductName = product.ProductName, Desctiption = product.Desctiption, CategorySID = product.CategorySID, UnitPrice = product.UnitPrice, WashingName = db.ProductWashings.Where(w => w.ProductID == id).Select(w => w.Washing.WashingName).ToArray(), Colors = db.ProductColors.Where(c => c.ProductID == id).AsEnumerable().Select(c => new Color { ColorID = c.ColorID, ColorName = c.Color.ColorName, R = c.Color.R, G = c.Color.G, B = c.Color.B }).ToList(), Sizes = db.ProductSizes.Where(s => s.ProductID == id).AsEnumerable().Select(s => new Size { SizeID = s.SizeID, SizeName = s.Size.SizeName }).ToList() }; var inactivity = db.ActivityProducts.Where(a => a.ProductID == id && a.Activity.EndDate >= DateTime.Now).ToList(); if (inactivity.Count() > 0) { ViewBag.activityname = inactivity.FirstOrDefault().Activity.ActivityName; prodcutDisplay.SUnitPrice = Convert.ToInt32(Math.Floor(inactivity.First().Activity.DiscountMethod.Discount *product.UnitPrice)); } ViewBag.colorid = (colorid == 0) ? db.ProductColors.Where(c => c.ProductID == id).Select(c => c.ColorID).First() : colorid; var images = db.ProductPhotoes.Where(p => p.ProductID == id).Take(10); List <string> imgs = new List <string>(); foreach (var image in images) { var img = Convert.ToBase64String(image.Photo.Photo1); imgs.Add(img); } ViewBag.images = imgs; if (Session["IsLogin"] != null || Request.Cookies["IsLogin"] != null) { int uid = int.Parse(Request.Cookies["upid"].Value); var fav = db.MyFavorites.Where(f => f.UserID == uid && f.ProductID == id).ToList(); ViewBag.fav = (fav.Count > 0) ? 1 : 0; } else { ViewBag.fav = 0; } var products = db.Products.Where(p => p.ProductID != id && p.CategorySID == prodcutDisplay.CategorySID).OrderBy(x => Guid.NewGuid()).Take(10).ToList(); List <CartItem> citems = new List <CartItem>(); CartItem citem; foreach (var pd in products) { decimal discountpercent = (db.ActivityProducts.Where(a => a.ProductID == pd.ProductID && a.Activity.EndDate >= DateTime.Now).Count() > 0) ? db.ActivityProducts.Where(a => a.ProductID == pd.ProductID && a.Activity.EndDate >= DateTime.Now).FirstOrDefault().Activity.DiscountMethod.Discount : 0; string activityname = (db.ActivityProducts.Where(a => a.ProductID == pd.ProductID && a.Activity.EndDate >= DateTime.Now).Count() > 0) ? db.ActivityProducts.Where(a => a.ProductID == pd.ProductID && a.Activity.EndDate >= DateTime.Now).FirstOrDefault().Activity.ActivityName : null; citem = new CartItem() { ProductID = pd.ProductID, ProductName = pd.ProductName, UnitPrice = pd.UnitPrice, SUnitPrice = Convert.ToInt32(Math.Floor(discountpercent * pd.UnitPrice)), ActivityName = activityname }; citems.Add(citem); } ViewBag.recommend = citems.ToList(); var evaluation = ProductMethod.LoadEvaluation(id); if (evaluation.Count > 0) { int score = evaluation.Sum(e => e.Grade) / evaluation.Count; ViewBag.score = score; } ViewBag.evaluation = evaluation.ToList(); return(View(prodcutDisplay)); }
//加入購物車 public ActionResult AddCart(CartItem item) { List <CartItem> cart; item.ProductName = db.Products.Find(item.ProductID).ProductName; item.ColorName = db.Colors.Find(item.ColorID).ColorName; item.SizeName = db.Sizes.Find(item.SizeID).SizeName; //會員 if (Session["IsLogin"] != null || Request.Cookies["IsLogin"] != null) { int uid = int.Parse(Request.Cookies["upid"].Value); int pcid = db.ProductColors.Where(c => c.ProductID == item.ProductID && c.ColorID == item.ColorID).First().ProductColorID; int psid = db.ProductSizes.Where(c => c.ProductID == item.ProductID && c.SizeID == item.SizeID).First().ProductSizeID; var sameitem = db.Carts.Where(c => c.UserID == uid && c.ProductID == item.ProductID && c.ProductColorID == pcid && c.ProductSizeID == psid).ToList(); //購物車內已有相同款式商品 if (sameitem.Count() > 0) { sameitem.First().Quantity += item.OrderQTY; db.Entry(sameitem.First()).State = System.Data.Entity.EntityState.Modified; } //購物車內無相同款式 else { Cart cartitem = new Cart() { UserID = uid, ProductID = item.ProductID, ProductColorID = pcid, ProductSizeID = psid, Quantity = item.OrderQTY, UnitPrice = item.UnitPrice }; db.Carts.Add(cartitem); } db.SaveChanges(); //把db.cart內容回傳cart> cart = ProductMethod.Cart(uid); return(Json(cart, JsonRequestBehavior.AllowGet)); } //非會員 else { ////已有購物車(非購買第一件商品) //if (Session["cart"] != null) //{ // cart = (List<CartItem>)Session["cart"]; // var incart = cart.Where(c => c.ProductID == item.ProductID && c.ColorID == item.ColorID && c.SizeID == item.SizeID).ToList(); // //購物車內已有相同款式商品 // if (incart.Count() > 0) // { // incart.First().OrderQTY += item.OrderQTY; // } // //購物車內無相同款式 // else // { // cart.Add(item); // } // Session.Add("cart", cart); //} ////尚未產生購物車(購買第一項商品) //else //{ // //建立購物車 // cart = new List<CartItem>(); // //加入商品 // cart.Add(item); // Session.Add("cart", cart); //} return(Json("notmember", JsonRequestBehavior.AllowGet)); } }