private void saveButton_Click(object sender, EventArgs e)
 {
     try
     {
         if (MainScreen.ModifyPart)
         {
             if (inhousePart)
             {
                 Part updatedPart = new Inhouse(Convert.ToInt32(idtextBox.Text), nametextBox.Text,
                                                Convert.ToDecimal(pricetextBox.Text), Convert.ToInt32(maxtextBox.Text),
                                                Convert.ToInt32(mintextBox.Text), Convert.ToInt32(invtextBox.Text),
                                                Convert.ToInt32(variabletextBox.Text));
                 Inventory.UpdatePart(updatedPart);
             }
             else
             {
                 Part updatedPart = new Outsourced(Convert.ToInt32(idtextBox.Text), nametextBox.Text,
                                                   Convert.ToDecimal(pricetextBox.Text), Convert.ToInt32(maxtextBox.Text),
                                                   Convert.ToInt32(mintextBox.Text), Convert.ToInt32(invtextBox.Text),
                                                   (variabletextBox.Text));
                 Inventory.UpdatePart(updatedPart);
             }
         }
         else
         {
             if (inhousePart)
             {
                 Part newPart = new Inhouse(Convert.ToInt32(idtextBox.Text), nametextBox.Text,
                                            Convert.ToDecimal(pricetextBox.Text), Convert.ToInt32(maxtextBox.Text),
                                            Convert.ToInt32(mintextBox.Text), Convert.ToInt32(invtextBox.Text),
                                            Convert.ToInt32(variabletextBox.Text));
                 Inventory.AddPart(newPart);
             }
             else
             {
                 Part newPart = new Outsourced(Convert.ToInt32(idtextBox.Text), nametextBox.Text,
                                               Convert.ToDecimal(pricetextBox.Text), Convert.ToInt32(maxtextBox.Text),
                                               Convert.ToInt32(mintextBox.Text), Convert.ToInt32(invtextBox.Text),
                                               (variabletextBox.Text));
                 Inventory.AddPart(newPart);
                 Inventory.PartId++;
             }
         }
         this.Hide();
         MainScreen mainScreen = new MainScreen();
         mainScreen.Show();
     }
     catch (Exception exception)
     {
         MessageBox.Show($"Failed to save: {exception.Message}");
     }
 }
        public static void PopulateFormTables()
        {
            //create products and parts
            ProductId = 1;
            PartId    = 1;
            Product prod1 = new Product(ProductId, "Prod 1", 10.10M, 100, 1, 10);

            ProductId++;
            Product prod2 = new Product(ProductId, "Prod 2", 20.20M, 200, 2, 20);

            ProductId++;
            Product prod3 = new Product(ProductId, "Prod 3", 30.30M, 300, 3, 30);

            ProductId++;
            Product prod4 = new Product(ProductId, "Prod 4", 40.40M, 400, 4, 40);

            ProductId++;
            Part part1 = new Inhouse(PartId, "Part 1", 10.10M, 100, 1, 10, 10);

            PartId++;
            Part part2 = new Inhouse(PartId, "Part 2", 20.20M, 200, 2, 20, 20);

            PartId++;
            Part part3 = new Outsourced(PartId, "Part 3", 30.30M, 300, 3, 30, "Company 1");

            PartId++;
            Part part4 = new Outsourced(PartId, "Part 4", 40.40M, 400, 4, 40, "Company 2");

            PartId++;

            //add new objects to binding lists
            AddProduct(prod1);
            AddProduct(prod2);
            AddProduct(prod3);
            AddProduct(prod4);
            AddPart(part1);
            AddPart(part2);
            AddPart(part3);
            AddPart(part4);

            //associate parts and products
            prod1.AssociatedParts.Add(part1);
            prod1.AssociatedParts.Add(part2);
            prod2.AssociatedParts.Add(part3);
            prod2.AssociatedParts.Add(part4);
            prod3.AssociatedParts.Add(part1);
            prod3.AssociatedParts.Add(part2);
            prod4.AssociatedParts.Add(part3);
            prod4.AssociatedParts.Add(part4);
        }
 public void populateFields()
 {
     idtextBox.Text    = Inventory.CurrentPart.PartId.ToString();
     nametextBox.Text  = Inventory.CurrentPart.Name;
     invtextBox.Text   = Inventory.CurrentPart.InStock.ToString();
     pricetextBox.Text = Inventory.CurrentPart.Price.ToString();
     mintextBox.Text   = Inventory.CurrentPart.Min.ToString();
     maxtextBox.Text   = Inventory.CurrentPart.Max.ToString();
     if (Inventory.CurrentPart is Inhouse)
     {
         Inhouse currentPart = (Inhouse)Inventory.CurrentPart;
         variabletextBox.Text       = currentPart.MachineId.ToString();
         inhousePart                = true;
         inhouseradioButton.Checked = true;
     }
     else
     {
         Outsourced currentPart = (Outsourced)Inventory.CurrentPart;
         variabletextBox.Text          = currentPart.CompanyName;
         inhousePart                   = false;
         outsourcedradioButton.Checked = true;
     }
 }