public async Task OnGetAsync() { var user = await _UserManager.GetUserAsync(User); CheckoutCustomer customer = await _db .CheckoutCustomers .FindAsync(user.Email); Items = _db.CheckoutItems.FromSql( "SELECT Foods.ID, Foods.Price, " + "Foods.FoodName, " + "BasketItems.BasketID, BasketItems.Quantity " + "FROM Foods INNER JOIN BasketItems " + "ON Foods.ID = BasketItems.StockID " + "WHERE BasketID = {0}", customer.BasketID ).ToList(); Total = 0; foreach (var item in Items) { Total = Total + (item.Quantity * item.Price); } AmountPayable = (long)(Total * 100); }
public async Task <IActionResult> OnPostDeleteAsync(int itemID) { var user = await _UserManager.GetUserAsync(User); Order.Email = user.Email; CheckoutCustomer customer = await _db .CheckoutCustomers .FindAsync(user.Email); _db.BasketItems .FromSql("SELECT * From BasketItems " + "WHERE BasketID = {0}", customer.BasketID) .ToList(); var item = await _db.BasketItems.FindAsync(itemID, customer.BasketID); if (item != null) { _db.BasketItems.Remove(item); await _db.SaveChangesAsync(); } return(RedirectToPage()); }
public async Task <IActionResult> OnPostBuyAsync(int id) { var user = await _UserManager.GetUserAsync(User); CheckoutCustomer customer = await _db.CheckoutCustomers.FindAsync(user.Email); var item = _db.BasketItems.FromSql("SELECT * FROM BasketItems WHERE MenuID = {0} " + "AND BasketID = {1}", id, customer.BasketID).ToList().FirstOrDefault(); if (item == null) { CheckoutBasketItem newItem = new CheckoutBasketItem { BasketID = customer.BasketID, MenuID = id, Quantity = 1 }; _db.BasketItems.Add(newItem); await _db.SaveChangesAsync(); } else { item.Quantity = item.Quantity + 1; _db.Attach(item).State = EntityState.Modified; try { await _db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException e) { throw new Exception($"Basket not found!", e); } } return(RedirectToPage("/OrderMenu", "Added")); }
//add 1 quantity to item public async Task <IActionResult> OnPostAddAsync(int id) { var user = await _UserManager.GetUserAsync(User); CheckoutCustomer customer = await _db.CheckoutCustomers.FindAsync(user.Email); Items = _db.CheckoutItems.FromSql( "SELECT MenuItems.MenuID, MenuItems.Price, MenuItems.Name, MenuItems.Stock, BasketItems.BasketID, BasketItems.Quantity FROM MenuItems INNER JOIN BasketItems " + "ON MenuItems.MenuID = BasketItems.MenuID WHERE BasketID = {0}", customer.BasketID).ToList(); foreach (var item in Items) { IList <CheckoutBasketItem> itemsToAlter = _db.BasketItems.FromSql("SELECT * FROM BasketItems WHERE MenuID = {0} AND BasketID = {1} ", id, customer.BasketID).ToList(); foreach (var itemToAlter in itemsToAlter) { itemToAlter.Quantity = itemToAlter.Quantity + 1; _db.Attach(itemToAlter).State = EntityState.Modified; try { await _db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException e) { throw new Exception($"MenuItem {itemToAlter.MenuID} not found!", e); } return(RedirectToPage()); } } return(Page()); }
public async Task OnGetAsync() { var user = await _UserManager.GetUserAsync(User); CheckoutCustomer customer = await _db.CheckoutCustomers.FindAsync(user.Email); Items = _db.CheckoutItems.FromSql( "SELECT MenuItems.MenuID, MenuItems.Price, MenuItems.Name, MenuItems.Stock, BasketItems.BasketID, BasketItems.Quantity FROM MenuItems INNER JOIN BasketItems " + "ON MenuItems.MenuID = BasketItems.MenuID WHERE BasketID = {0}", customer.BasketID).ToList(); OrderTotal = 0; foreach (var item in Items) { //checks to see if item has gone out of stock since added to basket if (item.Stock <= 0) { IList <CheckoutBasketItem> itemsToDelete = _db.BasketItems.FromSql("SELECT * FROM BasketItems WHERE BasketID = {0} and MenuID = {1}", customer.BasketID, item.MenuID).ToList(); foreach (var itemToDelete in itemsToDelete) { _db.BasketItems.Remove(itemToDelete); await _db.SaveChangesAsync(); } } else { OrderTotal = OrderTotal + (item.Quantity * item.Price); } } AmountToPay = (long)(OrderTotal * 100); }
//pay public async Task <IActionResult> OnPostChargeAsync(string stripeEmail, string stripeToken, long amount) { var customers = new CustomerService(); var charges = new ChargeService(); var customer = customers.Create(new CustomerCreateOptions { Email = stripeEmail, SourceToken = stripeToken }); var charge = charges.Create(new ChargeCreateOptions { Amount = amount, Description = "J41564 Food Order Charge", Currency = "gbp", CustomerId = customer.Id }); var currentOrder = _db.OrderHistories.FromSql("SELECT * From OrderHistories").OrderByDescending(b => b.OrderNo).FirstOrDefault(); if (currentOrder == null) { Order.OrderNo = 1; } else { Order.OrderNo = currentOrder.OrderNo + 1; } var user = await _UserManager.GetUserAsync(User); Order.Email = user.Email; _db.OrderHistories.Add(Order); CheckoutCustomer checkoutCustomer = await _db.CheckoutCustomers.FindAsync(user.Email); var basketItems = _db.BasketItems.FromSql("SELECT * FROM BasketItems WHERE BasketID = {0}", checkoutCustomer.BasketID).ToList(); foreach (var item in basketItems) { MenuItem = await _db.MenuItems.FindAsync(item.MenuID); MenuItem.Stock -= item.Quantity; await _db.SaveChangesAsync(); Data.OrderItem orderItem = new Data.OrderItem { OrderNo = Order.OrderNo, MenuID = item.MenuID, Quantity = item.Quantity }; _db.OrderItems.Add(orderItem); _db.BasketItems.Remove(item); } await _db.SaveChangesAsync(); return(RedirectToPage("/Index", "Payment")); }
public async Task <IActionResult> OnPostBuyAsync(int itemID) { var currentOrder = _db.OrderHistories.FromSql("SELECT * From OrderHistories").OrderByDescending(b => b.OrderNo).FirstOrDefault(); if (currentOrder == null) { Order.OrderNo = 1; } else { Order.OrderNo = currentOrder.OrderNo + 1; } var user = await _UserManager.GetUserAsync(User); Order.Email = user.Email; _db.OrderHistories.Add(Order); CheckoutCustomer customer = await _db .CheckoutCustomers .FindAsync(user.Email); var basketItems = _db.BasketItems .FromSql("SELECT * From BasketItems " + "WHERE BasketID = {0}", customer.BasketID) .ToList(); Total = 0; foreach (var item in basketItems) { Data.OrderItem oi = new Data.OrderItem { OrderNo = Order.OrderNo, StockID = item.StockID, Quantity = item.Quantity }; _db.OrderItems.Add(oi); } await _db.SaveChangesAsync(); return(RedirectToPage("/Index")); }