internal static void Initialize(BoatChartersDbContext db) { db.Database.Migrate(); if (db.Products.Count() == 0) { db.Products.Add(new Yacht { Name = "Helia 450", Description = "bla bla", Image = "/images/cat1.jpg", Size = 45, PriceHighSeason = 11000m, PriceOffSeason = 5000m, Year = 2015, AirCond = false, Cabins = 4 }); db.Products.Add(new Yacht { Name = "Helia 400", Description = "bla bla bla", Image = "/images/cat2.jpg", Size = 40, PriceHighSeason = 9000m, PriceOffSeason = 4000m, Year = 2015, AirCond = false, Cabins = 3 }); db.SaveChanges(); } }
public IActionResult Book(int id, [FromForm] DateTime dateFrom, [FromForm] DateTime dateTo) { Guid cartId; Cart cart = null; if (Request.Cookies.ContainsKey("cartId")) { if (Guid.TryParse(Request.Cookies["cartId"], out cartId)) { //https://docs.microsoft.com/en-us/ef/core/querying/related-data cart = _context.Carts .Include(carts => carts.CartItems) .ThenInclude(cartitems => cartitems.Yacht) .FirstOrDefault(x => x.CookieIdentifier == cartId); } } if (cart == null) { cart = new Cart(); cartId = Guid.NewGuid(); cart.CookieIdentifier = cartId; _context.Carts.Add(cart); Response.Cookies.Append("cartId", cartId.ToString(), new Microsoft.AspNetCore.Http.CookieOptions { Expires = DateTime.UtcNow.AddYears(100) }); } CartItem item = cart.CartItems.FirstOrDefault(x => x.Yacht.ID == id); if (item == null) { item = new CartItem(); item.Yacht = _context.Products.Find(id); cart.CartItems.Add(item); } item.DatesFrom = dateFrom; item.DatesTo = dateTo; cart.LastModified = DateTime.Now; _context.SaveChanges(); return(RedirectToAction("Index", "Cart")); }
public async Task <IActionResult> Remove(int id) { Guid cartId; Cart cart = null; if (Request.Cookies.ContainsKey("cartId")) { if (Guid.TryParse(Request.Cookies["cartId"], out cartId)) { cart = await _context.Carts .Include(carts => carts.CartItems) .ThenInclude(cartitems => cartitems.Yacht) .FirstOrDefaultAsync(x => x.CookieIdentifier == cartId); } } CartItem item = cart.CartItems.FirstOrDefault(x => x.ID == id); cart.LastModified = DateTime.Now; _context.CartItems.Remove(item); _context.SaveChanges(); return(RedirectToAction("Index")); }