public Software(string softName, SoftCat softCateg, OSTypeCat osCateg, int prodId, ProdCat prodCat, double unitPrice, int supplId, int qtyOnHand, bool prodStat) : base(prodId, softName, prodCat, unitPrice, supplId, qtyOnHand, prodStat) { this.ProdName = softName; this.SoftCateg = softCateg; this.OsCateg = osCateg; }
private void btnSoftFrmOk_Click(object sender, EventArgs e) { //time to create a new object //======================================================== string valueID, valueSwName, valueUnitPrice, valueSupplId, valueQOH; //string valueSwCat, valueSwOS; double unitPrice = 0; int valueSwCat, valueSwOS; //bool prodStatus = true; bool isDuplicate = false; valueID = txtProdID.Text.Trim(); valueSwName = txtSwName.Text.Trim(); valueSwCat = cmbSwCat.SelectedIndex; valueSwOS = cmbSwOS.SelectedIndex; valueUnitPrice = txtProdUPrc.Text.Trim(); valueSupplId = txtProdSupId.Text.Trim(); valueQOH = txtProdQoH.Text.Trim(); Software prod = new Software(); if (!Product.isValidId(valueID, 4)) { MessageBox.Show("Product ID is not correct! \n" + "\n\nPlease provide valid client id number...", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); txtProdID.Focus(); return; } if (valueSwName == "") { MessageBox.Show("Client Name could not be empty! \nPlease provide valid client name...", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); txtSwName.Focus(); return; } try { unitPrice = Convert.ToDouble(valueUnitPrice); } catch (Exception ex) { MessageBox.Show("Unit Price is not correct! \n" + ex.Message + "\n\nPlease provide valid number...", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); unitPrice = 0; txtProdUPrc.Focus(); return; } //valueProdCat - set correct SoftCat softCat = SoftCat.Other; switch (cmbSwCat.SelectedIndex) { case 0: softCat = SoftCat.OperationSystem; break; case 1: softCat = SoftCat.GraphicsDesign; break; case 2: softCat = SoftCat.TextEditor; break; case 3: softCat = SoftCat.AudioVideoPlay; break; case 4: softCat = SoftCat.AudioVedeoEdit; break; default: softCat = SoftCat.Other; break; } OSTypeCat osType = OSTypeCat.Windows; switch (cmbSwOS.SelectedIndex) { case 0: osType = OSTypeCat.Windows; break; case 1: osType = OSTypeCat.MacOS; break; case 2: osType = OSTypeCat.Linux; break; case 3: osType = OSTypeCat.iOS; break; case 4: osType = OSTypeCat.Android; break; default: osType = OSTypeCat.Windows; //default choise break; } int supplId, qtyOH; //valueSupplId -- loading correct supplier info try { string[] fields = cmbSuppId.Text.Split(','); valueSupplId = fields[0]; supplId = Convert.ToInt32(valueSupplId); } catch (Exception) { valueSupplId = "0"; supplId = Convert.ToInt32(valueSupplId); } //checking all cases and go for an object creation: if ((prod != null) && (int.TryParse(valueSupplId, out supplId)) && (int.TryParse(valueQOH, out qtyOH))) { //all ok so go ahead and assign the values to the object fields prod.ProdId = Convert.ToInt32(valueID); prod.ProdName = valueSwName; prod.SoftName = valueSwName; prod.SoftCateg = softCat; prod.OsCateg = osType; prod.UnitPrice = unitPrice; prod.SupplId = supplId; prod.QtyOnHand = qtyOH; prod.ProdCat = ProdCat.Software; prod.ProdStatus = chkSoftAct.Checked; List <Product> products = Product.XMLLoadAllProducts(); if (products == null) { products = new List <Product>(); } Product prodDup = new Product(); foreach (Product prodItem in products) { if (prodItem.ProdId == prod.ProdId) { isDuplicate = true; //if id is already in use - return true = id duplicate found! // so may be we want to update the account information? DialogResult answer = MessageBox.Show("This ID is already in use: " + valueID + " \nfor: " + prodItem.ProdName + "\n" + "\nDo you want to update this item information?", "Confirmation on Update", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (answer == DialogResult.Yes) { //continuing update process: prodDup = prodItem; isDuplicate = true; } else { isDuplicate = false; return; } } } if (isDuplicate) { products.Remove(prodDup); //removing old version of updated product from the local list } products.Add(prod); //adding updated product to the local list if (UpdateGlobalProdList(products)) { //_globProdList.Sort(); _globProdList = _globProdList.OrderBy(o => o.ProdId).ToList(); Product.SaveAllProducts(_globProdList); MessageBox.Show("Update successfull!", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } LoadItemsListView(); } }