public AddPurchaseUi(PurchaseUiController purchaseUiController2)
        {
            InitializeComponent();
            purchaseUiController = purchaseUiController2;

            ClearAllErrorLabel();
            codeTextBox.Text = purchaseUiController.GeneratePurchaseCodeBeforeSubmit();

            supplierComboBox.DropDownStyle = ComboBoxStyle.DropDownList;
            supplierComboBox.DataSource    = _supplierManager.GetAllSupplierForComboBox();

            categoryComboBox.DropDownStyle = ComboBoxStyle.DropDownList;
            categoryComboBox.DataSource    = _categoryManager.GetAllCategoryForComboBox();

            //int categoryId = Convert.ToInt32(categoryComboBox.SelectedValue);

            //productComboBox.DropDownStyle = ComboBoxStyle.DropDownList;
            //productComboBox.DataSource = _productManager.GetAllProductForComboBox(categoryId);
        }
        private void addButton_Click(object sender, EventArgs e)
        {
            Purchase purchase = new Purchase();

            purchase.InvoiceNo = billNoTextBox.Text;

            bool isFound = false;

            //check unique invoice in purchases list
            foreach (var itemPurchase in purchaseUiController._purchases)
            {
                if (itemPurchase.InvoiceNo == billNoTextBox.Text)
                {
                    isFound = true;
                    break;
                }
            }

            if (isFound)
            {
                invoiceNoErrorLabel.Text = @"Invoice no. already exist in current purchase list!";
                billNoTextBox.Focus();
                return;
            }
            if (_purchaseManager.UniquePurchaseCode(purchase))
            {
                invoiceNoErrorLabel.Text = @"Invoice no. already exist in database!";
                billNoTextBox.Focus();
                return;
            }

            if (String.IsNullOrEmpty(billNoTextBox.Text))
            {
                invoiceNoErrorLabel.Text = @"Invoice no. required !";
                billNoTextBox.Focus();
                return;
            }

            if (Convert.ToInt32(supplierComboBox.SelectedValue) == 0)
            {
                supplierComboBoxErrorLabel.Text = @"Select a supplier !";
                supplierComboBox.Focus();
                return;
            }

            if (Convert.ToInt32(categoryComboBox.SelectedValue) == 0)
            {
                categoryComboboxerrorLabel.Text = @"Select a category !";
                categoryComboBox.Focus();
                return;
            }

            if (Convert.ToInt32(productComboBox.SelectedValue) == 0)
            {
                productComboBoxErrorLabel.Text = @"Select a product";
                productComboBox.Focus();
                return;
            }

            if (String.IsNullOrEmpty(quantityTextBox.Text))
            {
                quantityErrorLabel.Text = @"Quantity is required !";
                quantityTextBox.Focus();
                return;
            }

            if (String.IsNullOrEmpty(unitPriceTextBox.Text))
            {
                UnitPriceErrorLabel.Text = @"Unit price is required !";
                unitPriceTextBox.Focus();
                return;
            }

            if (String.IsNullOrEmpty(mrpTextBox.Text))
            {
                mrpErrorLabel.Text = @"MRP is required !";
                mrpTextBox.Focus();
            }

            if (String.IsNullOrEmpty(remarksTextBox.Text))
            {
                remarkErrorLabel.Text = @"Remark is required !";
                remarksTextBox.Focus();
                return;
            }


            if (addButton.Text == "Add")
            {
                purchase.Date             = purchaseDateTimePicker.Text;
                purchase.InvoiceNo        = billNoTextBox.Text;
                purchase.SupplierId       = Convert.ToInt32(supplierComboBox.SelectedValue);
                purchase.ProductId        = Convert.ToInt32(productComboBox.SelectedValue);
                purchase.Code             = codeTextBox.Text;
                purchase.ManufacturedDate = manufacturedDateTimePicker.Text;
                purchase.ExpireDate       = expireDateTimePicker.Text;
                purchase.Quantity         = Convert.ToInt32(quantityTextBox.Text);
                purchase.UnitPrice        = Convert.ToDouble(unitPriceTextBox.Text);

                purchase.TotalPrice = Convert.ToDouble(totalPriceTextBox.Text);
                purchase.MRP        = Convert.ToDouble(mrpTextBox.Text);
                purchase.Remarks    = remarksTextBox.Text;


                purchaseUiController._purchases.Add(purchase);
            }
            else
            {
                int index = 0;
                foreach (var itemPurchase in purchaseUiController._purchases)
                {
                    if (itemPurchase.Code == codeTextBox.Text)
                    {
                        purchase = purchaseUiController._purchases.ElementAt(index);
                        break;
                    }
                    index++;
                }

                purchase.Date             = purchaseDateTimePicker.Text;
                purchase.InvoiceNo        = billNoTextBox.Text;
                purchase.SupplierId       = Convert.ToInt32(supplierComboBox.SelectedValue);
                purchase.ProductId        = Convert.ToInt32(productComboBox.SelectedValue);
                purchase.Code             = codeTextBox.Text;
                purchase.ManufacturedDate = manufacturedDateTimePicker.Text;
                purchase.ExpireDate       = expireDateTimePicker.Text;
                purchase.Quantity         = Convert.ToInt32(quantityTextBox.Text);
                purchase.UnitPrice        = Convert.ToDouble(unitPriceTextBox.Text);

                purchase.TotalPrice = Convert.ToDouble(totalPriceTextBox.Text);
                purchase.MRP        = Convert.ToDouble(mrpTextBox.Text);
                purchase.Remarks    = remarksTextBox.Text;

                MessageBox.Show(@"Updated successfully");
                addButton.Text = @"Add";

                //after update close the form
                Close();
            }

            ClearAllTextBox();

            //purchaseUiController.purchaseDataGridView.DataSource = null;
            //purchaseUiController.purchaseDataGridView.DataSource = _purchases;
            purchaseUiController.ShowAllPurchase();


            //get next purchase code
            codeTextBox.Text = purchaseUiController.GeneratePurchaseCodeBeforeSubmit();
        }