// Öppnar en inputbox som tillåter användaren att specifiera hur många exemplar // som ska läggas till för en produkt. // "Leverans från grossit" private void BTNAddStock_Click(object sender, EventArgs e) { Product product = GetSelectedProductFromListView(ListViewProducts); // Kolla så att en produkt valts. if (product != null) { string input = Interaction.InputBox("Specify stock increment amount for \"" + product.name + "\"", "Add stock", "1", -1, -1); if (int.TryParse(input, out int stock) && stock > 0) { if (!(product.stock + stock > 9999)) { product.stock += stock; productController.Update(product); BTNSearch.PerformClick(); } else { MessageBox.Show("Max stock is 9999"); } } } else { MessageBox.Show("Select a product to increment stock."); } }
// Tar bort en produkt. Kräver att användaren valt en produkt från listan först. private void BTNRemoveProduct_Click(object sender, EventArgs e) { Product product = GetSelectedProductFromListView(ListViewProducts); // Kolla så att användare valt en produkt från listan. if (product != null) { // Kontrollfunktion om produkten verkligen vill tas bort. Om stock > 0 måste användaren // bekräfta att produkten ska tas bort. Om stock <= 0 tas produkten bort direkt. if (product.stock > 0) { if (MessageBox.Show( "The product \"" + product.name + "\" still have units in stock. Are you sure you want to remove it?", "Confirm Removal", MessageBoxButtons.OKCancel) == DialogResult.OK) { RemoveProduct(product); BTNSearch.PerformClick(); } } else { RemoveProduct(product); BTNSearch.PerformClick(); } } else { MessageBox.Show("Select a product to remove."); } }
//--------------- Cashier Tab Interactives ---------------// // Denna funktion lägger till en produkt i carten. // Detta kräver att användaren vlat en produkt från listan först. private void BTNAddToCart_Click(object sender, EventArgs e) { try { ListViewItem selectedItem = ListViewProducts.SelectedItems[0]; ListViewItem cartItem = (ListViewItem)selectedItem.Clone(); int.TryParse(cartItem.SubItems[1].Text, out int id); Product selectedProduct = productController.GetById(id); // Kolla så att produkten finns i lagret, annars meddela användaren att den är s**t. if (selectedProduct.stock > 0) { ListViewCart.Items.Add(cartItem); cartProducts.Add(selectedProduct); ListProductsInCart(); selectedProduct.stock--; productController.Update(selectedProduct); BTNSearch.PerformClick(); } else { MessageBox.Show("Product is out of stock."); } } catch (ArgumentOutOfRangeException exc) { System.Diagnostics.Debug.WriteLine(exc.Message); MessageBox.Show("Select a product to add it to the cart."); } }
// Ger användaren bekräftelse på att köpet genomförts, och skapar ett kvitto med de köpta produkterna. private void BTNCheckout_Click(object sender, EventArgs e) { // Kolla först så att carten inte är tom. if (cartProducts.Count > 0) { double totalPrice = 0; string products = ""; foreach (Product product in cartProducts) { totalPrice += product.price; products += product.name + ": " + product.price.ToString() + " SEK" + "\n"; } DialogResult dR = MessageBox.Show(products + "\nTotal price: " + totalPrice.ToString() + " SEK", "Checkout", MessageBoxButtons.OKCancel); if (dR == DialogResult.OK) { MessageBox.Show("Get receipt?", "Receipt", MessageBoxButtons.OK); // Skapa kvitto Receipt receipt = new Receipt(); foreach (Product product in cartProducts) { receipt.products.Add(product); } receiptController.Add(receipt); // Töm carten. cartProducts.Clear(); // Uppdatera listan så att vi ser att stock i köpta produkter minskat. BTNSearch.PerformClick(); ListProductsInCart(); MessageBox.Show("Purchase done!"); } } else { MessageBox.Show("Cart is empty."); } }