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"));
        }
Пример #4
0
        //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());
        }
Пример #5
0
        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);
        }
Пример #6
0
        //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"));
        }