public Book(string bookISBN, string bookTitle, int yearReleased, BookCateg bookCat, List <Author> listAuthors, int prodId, ProdCat prodCat, double unitPrice, int supplId, int qtyOnHand, bool prodStat) : base(prodId, bookTitle, prodCat, unitPrice, supplId, qtyOnHand, prodStat) { this.BookISBN = bookISBN; this.BookTitle = bookTitle; this.YearReleased = yearReleased; this.BookCat = bookCat; this.ListAuthors = listAuthors; }
private void btnBookFrmOk_Click(object sender, EventArgs e) { //time to create a new object //======================================================== string valueID, valueTitle, valueUnitPrice, valueSupplId, valueQOH; string valueISBN, valueYRelease; double unitPrice = 0; int valueProdCat; bool isDuplicate = false; valueID = txtProdID.Text.Trim(); valueTitle = txtbookTitle.Text.Trim(); valueISBN = txtbookISBN.Text.Trim().ToUpper(); valueProdCat = cmbBookCat.SelectedIndex; valueYRelease = txtyearReleased.Text.Trim(); valueUnitPrice = txtProdUPrc.Text.Trim(); //valueSupplId = txtProdSupId.Text.Trim(); valueQOH = txtProdQoH.Text.Trim(); Book prod = new Book(); if (!Product.isValidId(valueID, 4)) { MessageBox.Show("Product ID is not correct! \n" + "\n\nPlease provide valid id number...", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); txtProdID.Focus(); return; } if (valueTitle == "") { MessageBox.Show("Client Name could not be empty! \nPlease provide valid client name...", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); txtbookTitle.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 BookCateg bookCat = BookCateg.Other; switch (cmbBookCat.SelectedIndex) { case 0: bookCat = BookCateg.Text_Book; break; case 1: bookCat = BookCateg.Science_Fiction; break; case 2: bookCat = BookCateg.Satire; break; case 3: bookCat = BookCateg.Drama; break; case 4: bookCat = BookCateg.Action_Adventure; break; case 5: bookCat = BookCateg.Romance; break; case 6: bookCat = BookCateg.Mystery; break; case 7: bookCat = BookCateg.Horror; break; case 8: bookCat = BookCateg.Horror; break; default: bookCat = BookCateg.Self_help; break; } int supplId, qtyOH, yearRel; //creating an Authors Author myAuthor; List <Author> myListAuth = new List <Author>(); if (listBoxBookAuth.Items.Count > 0) { for (int i = 0; i < listBoxBookAuth.Items.Count; i++) { myAuthor = new Author(); string[] fields = listBoxBookAuth.Items[i].ToString().Split(','); myAuthor.AuthId = Convert.ToInt32(fields[0].Trim()); myAuthor.AuthFirstName = fields[1].ToString().Trim(); myAuthor.AuthLastName = fields[2].ToString().Trim(); myListAuth.Add(myAuthor); } prod.ListAuthors = myListAuth; } if (!(int.TryParse(valueYRelease, out yearRel)) || yearRel < dt.Year - 100 || yearRel > dt.Year) { MessageBox.Show("Wrong data in Release year! \n Please fix this value..."); return; } //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 = valueTitle; prod.BookCat = bookCat; prod.UnitPrice = unitPrice; prod.SupplId = supplId; prod.QtyOnHand = qtyOH; prod.ProdCat = ProdCat.Book; prod.ProdStatus = chkBookAct.Checked; prod.BookISBN = valueISBN; prod.BookTitle = valueTitle; prod.YearReleased = (Convert.ToInt32(valueYRelease)); 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); } //Product.SaveAllProducts(products); LoadItemsListView(); MessageBox.Show("Update successfull!", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }