public bool AddToBasket(int product, int shop) { var userId = User.Identity.GetUserId(); using (var db = new UwtContext()) { var dbProduct = db.Products.Filter(shop).FirstOrDefault(p => p.Id == product); if (dbProduct == null) { return(false); } var basket = db.GetCurrentBasket(userId, shop); if (basket.BasketItems.FirstOrDefault(i => i.Product.Id == product) != null) { return(false); } db.BasketItems.Add(new BasketItem() { Amount = 1, Product = dbProduct, UnitPrice = dbProduct.DiscountedPrice(), DiscountedFrom = dbProduct.UnitPrice, Basket = basket }); db.SaveChanges(); return(true); } }
public static bool InBasket(this ProductViewModel product, string userId, int shop) { using (var db = new UwtContext()) { var basket = db.GetCurrentBasket(userId, shop); return(basket.BasketItems.FirstOrDefault(b => b.Product.Id == product.Id) != null); } }
public ActionResult Index(int shop, string deliveryaddress, string deliveryperson) { var userId = User.Identity.GetUserId(); using (var db = new UwtContext()) { var basket = db.GetCurrentBasket(userId, shop); if (basket != null) { basket.DeliveryAddress = deliveryaddress; basket.DeliveryPerson = deliveryperson; db.SaveChanges(); } return(RedirectToAction("Index", new { shop = shop })); } }
public ActionResult Index(int shop) { var userId = User.Identity.GetUserId(); using (var db = new UwtContext()) { var basket = db.GetCurrentBasket(userId, shop); if (basket != null) { ViewBag.Shop = Mapper.Map <ShopViewModel>(db.Shops.FirstOrDefault(s => s.Id == shop)); var model = Mapper.Map <BasketViewModel>(basket); model.BasketItems.ForEach(i => i.Product.Image = i.Product.Image.Replace("~", "")); return(View(model)); } return(HttpNotFound()); } }
public int BuyBasket(int shop) { var userId = User.Identity.GetUserId(); using (var db = new UwtContext()) { var basket = db.GetCurrentBasket(userId, shop); if (!basket.ReserveProducts(db)) { return(0); } var invoice = new Invoice { Basket = basket, DateCreated = DateTime.UtcNow }; db.Invoices.Add(invoice); db.SaveChanges(); return(invoice.Id); } }
public ActionResult Index(int?id, int?category, string search) { using (var db = new UwtContext()) { var shop = db.Shops.FirstOrDefault(s => s.Id == id); if (shop == null) { var shops = db.Shops.ToList().Select(Mapper.Map <ShopViewModel>).ToList(); return(View(shops)); } var model = Mapper.Map <ShopViewModel>(shop); var products = db.Products.Filter(model.Id).Where(p => category == null || p.Categories.FirstOrDefault(c => c.Id == category) != null).ToList().Select(Mapper.Map <ProductViewModel>).ToList(); if (User.Identity.IsAuthenticated) { var userId = User.Identity.GetUserId(); products.ForEach(p => p.InBasket = p.InBasket(userId, shop.Id)); ViewBag.BasketItemsCount = db.GetCurrentBasket(userId, shop.Id).BasketItems.Count; products.ForEach(p => p.MessageSent = db.Messages.Any(m => m.Sender.Id == userId && m.Product.Id == p.Id && m.DateRecieved > DateTime.UtcNow)); } ViewBag.Products = products; return(View("Shop", model)); } }
public bool UpdateBasketAmount(int product, int newAmount) { var userId = User.Identity.GetUserId(); using (var db = new UwtContext()) { var dbProduct = db.Products.IncludeAll().FirstOrDefault(p => p.Id == product); if (dbProduct == null) { return(false); } var basket = db.GetCurrentBasket(userId, dbProduct.Shop.Id); var item = basket.BasketItems.FirstOrDefault(i => i.Product.Id == product); if (item == null) { return(false); } item.Amount = newAmount; db.SaveChanges(); return(true); } }