/// <summary> /// This function update elements of the ShoppingCard.xml file. /// </summary> /// <param name="shoppingCard">This parameter is a object of ShoppingCard class.</param> /// <returns> This function does not return a value </returns> public static void Update(ShoppingCard shoppingCard) { try { XDocument xDoc = XDocument.Load(@"data/ShoppingCard.xml"); XElement shoppingCardRootElement = xDoc.Root; foreach (XElement Card in shoppingCardRootElement.Elements()) { int i = 0; if (Card.Attribute("CustomerID").Value == shoppingCard.CustomerID) { Card.Element("PaymentAmount").Value = shoppingCard.PaymentAmount.ToString(); Card.Element("PaymentType").Value = shoppingCard.Type.ToString(); XElement itemToPurchaseRootElement = Card.Element("ItemToPurchaseList"); foreach (XElement item in itemToPurchaseRootElement.Elements()) { if (item.Element("id").Value == shoppingCard.itemsToPurchase[i].Product.ID1) { item.Element("name").Value = shoppingCard.itemsToPurchase[i].Product.Name; item.Element("price").Value = shoppingCard.itemsToPurchase[i].Product.Price.ToString(); item.Element("quantity").Value = shoppingCard.itemsToPurchase[i].Quantity.ToString(); break; } i++; } } xDoc.Save(@"data/ShoppingCard.xml"); } } catch (Exception e) { Console.WriteLine(e); } }
/// <summary> /// This function delete elements of the ShoppingCard.xml file. /// </summary> /// <param name="shoppingCard">This parameter is a object of ShoppingCard class.</param> /// <returns> This function does not return a value </returns> public static void Delete(ShoppingCard shoppingCard) { try { XDocument xDoc = XDocument.Load(@"data/ShoppingCard.xml"); XElement shoppingCardRootElement = xDoc.Root; foreach (XElement Card in shoppingCardRootElement.Elements()) { if (shoppingCard.CustomerID.ToString() == Card.FirstAttribute.Value) { Card.Element("PaymentAmount").Value = "0"; Card.Element("PaymentType").Value = "cash"; Card.Element("ItemToPurchaseList").Remove(); XElement item = new XElement("ItemToPurchaseList"); Card.Add(item); xDoc.Save(@"data/ShoppingCard.xml"); return; } } } catch (Exception e) { Console.WriteLine(e); } }
/// <summary> /// This function delete all of elements of the ShoppingCard.xml file. /// </summary> /// <param name="shoppingCard">This parameter is a object of ShoppingCard class.</param> /// <param name="index"> This parameter holds index of selected item.</param> /// <returns> This function does not return a value </returns> public static void Delete(ShoppingCard shoppingCard, int index) { try { XDocument xDoc = XDocument.Load(@"data/ShoppingCard.xml"); XElement shoppingCardRootElement = xDoc.Root; foreach (XElement Card in shoppingCardRootElement.Elements()) { if (shoppingCard.CustomerID.ToString() == Card.FirstAttribute.Value) { double deletedAmount = shoppingCard.itemsToPurchase[index].Product.Price * shoppingCard.itemsToPurchase[index].Quantity; Card.Element("PaymentAmount").Value = (shoppingCard.PaymentAmount - deletedAmount).ToString(); foreach (XElement item in Card.Element("ItemToPurchaseList").Elements()) { if (item.Element("id").Value == shoppingCard.itemsToPurchase[index].Product.ID1) { item.Remove(); xDoc.Save(@"data/ShoppingCard.xml"); return; } } } } } catch (Exception e) { Console.WriteLine(e); } }
/// <summary> /// This function save elements of the MyOrders.xml file. /// </summary> /// <param name="shoppingCard">This parameter is a object of ShoppingCard class.</param> /// <returns> This function does not return a value </returns> public static void SaveOrder(ShoppingCard shoppingCard) { try { XDocument xDoc = XDocument.Load(@"data/MyOrders.xml"); XElement rootElement = xDoc.Root; XElement newElementOrder = new XElement("Order"); XAttribute OrderAttribute = new XAttribute("CustomerID", shoppingCard.CustomerID); XAttribute orderID = new XAttribute("OrderID", (shoppingCard.OID).ToString()); XElement PaymentAmount = new XElement("PaymentAmount", shoppingCard.PaymentAmount); XElement PaymentType = new XElement("PaymentType", shoppingCard.Type); XElement OrderStatus = new XElement("OrderStatus", shoppingCard.Status); XElement CargoAmount = new XElement("CargoAmount", shoppingCard.CargoAmount); XElement ItemToPurchaseListElement = new XElement("ItemToPurchaseList"); for (int i = 0; i < shoppingCard.itemsToPurchase.Count; i++) { XElement newElementItemToPurchase = new XElement("ItemToPurchase"); XAttribute classType; XElement ID = new XElement("id", shoppingCard.itemsToPurchase[i].Product.ID1); XElement name = new XElement("name", shoppingCard.itemsToPurchase[i].Product.Name); XElement price = new XElement("price", shoppingCard.itemsToPurchase[i].Product.Price); XElement image = new XElement("image", UtilConvert.ImageToBase64(shoppingCard.itemsToPurchase[i].Product.Image, shoppingCard.itemsToPurchase[i].Product.Image.RawFormat)); XElement quantity = new XElement("quantity", shoppingCard.itemsToPurchase[i].Quantity); if (shoppingCard.itemsToPurchase[i].Product is Book) { classType = new XAttribute("classType", "Book"); } else if (shoppingCard.itemsToPurchase[i].Product is Magazine) { classType = new XAttribute("classType", "Magazine"); } else { classType = new XAttribute("classType", "MusicCD"); } newElementItemToPurchase.Add(classType, ID, name, price, image, quantity); ItemToPurchaseListElement.Add(newElementItemToPurchase); } newElementOrder.Add(OrderAttribute, orderID, PaymentAmount, PaymentType, OrderStatus, CargoAmount, ItemToPurchaseListElement); rootElement.Add(newElementOrder); xDoc.Save(@"data/MyOrders.xml"); } catch (Exception e) { Console.WriteLine(e); } }
/// <summary> /// This function save elements of the ShoppingCard.xml file. /// </summary> /// <param name="shoppingCard">This parameter is a object of ShoppingCard class.</param> /// <returns> This function does not return a value </returns> public static void Save(ShoppingCard shoppingCard) { try { XDocument xDoc = XDocument.Load(@"data/ShoppingCard.xml"); XElement rootElement = xDoc.Root; XElement newElementShoppingCard = new XElement("ShoppingCard"); XAttribute ShoppingCardAttribute = new XAttribute("CustomerID", shoppingCard.CustomerID); XElement PaymentAmount = new XElement("PaymentAmount", shoppingCard.PaymentAmount); XElement PaymentType = new XElement("PaymentType", shoppingCard.Type); XElement ItemToPurchaseListElement = new XElement("ItemToPurchaseList", shoppingCard.itemsToPurchase); newElementShoppingCard.Add(ShoppingCardAttribute, PaymentAmount, PaymentType, ItemToPurchaseListElement); rootElement.Add(newElementShoppingCard); xDoc.Save(@"data/ShoppingCard.xml"); } catch (Exception e) { Console.WriteLine(e); } }
/// <summary> /// This function update elements of the MyOrders.xml file. /// </summary> /// <param name="shoppingCard">This parameter is a object of ShoppingCard class.</param> /// <returns> This function does not return a value </returns> public static void UpdateOrder(ShoppingCard shoppingCard) { try { XDocument xDoc = XDocument.Load(@"data/MyOrders.xml"); XElement OrderRootElement = xDoc.Root; foreach (XElement order in OrderRootElement.Elements()) { if (order.Attribute("OrderID").Value == shoppingCard.OID.ToString()) { order.Element("OrderStatus").Value = shoppingCard.Status.ToString(); } xDoc.Save(@"data/MyOrders.xml"); } } catch (Exception e) { Console.WriteLine(e); } }
/// <summary> /// This function save elements of the ShoppingCard.xml file. /// </summary> /// <param name="shoppingCard">This parameter is a object of ShoppingCard class.</param> /// <param name="i">This parameter hold a last element.</param> /// <returns> This function does not return a value </returns> public static void Save(ShoppingCard shoppingCard, int i) { i--; XDocument xDoc = XDocument.Load(@"data/ShoppingCard.xml"); XElement shoppingCardRootElement = xDoc.Root; foreach (XElement Card in shoppingCardRootElement.Elements()) { if (Card.Attribute("CustomerID").Value == shoppingCard.CustomerID) { Card.Element("PaymentAmount").Value = shoppingCard.PaymentAmount.ToString(); XElement newElementItemToPurchase = new XElement("ItemToPurchase"); XAttribute classType; XElement ID = new XElement("id", shoppingCard.itemsToPurchase[i].Product.ID1); XElement name = new XElement("name", shoppingCard.itemsToPurchase[i].Product.Name); XElement price = new XElement("price", shoppingCard.itemsToPurchase[i].Product.Price); XElement image = new XElement("image", UtilConvert.ImageToBase64(shoppingCard.itemsToPurchase[i].Product.Image, shoppingCard.itemsToPurchase[i].Product.Image.RawFormat)); XElement quantity = new XElement("quantity", shoppingCard.itemsToPurchase[i].Quantity); if (shoppingCard.itemsToPurchase[i].Product is Book) { classType = new XAttribute("classType", "Book"); } else if (shoppingCard.itemsToPurchase[i].Product is Magazine) { classType = new XAttribute("classType", "Magazine"); } else { classType = new XAttribute("classType", "MusicCD"); } newElementItemToPurchase.Add(classType, ID, name, price, image, quantity); Card.Element("ItemToPurchaseList").Add(newElementItemToPurchase); } xDoc.Save(@"data/ShoppingCard.xml"); } }
/// <summary> /// This function signup button click operation. /// This function is used to sign up application. /// </summary> /// <returns> This function does not return a value </returns> private void btnSignUp_Click(object sender, EventArgs e) { Logger.GetLogger().WriteLog("Unknown user", btnSignUp.Text, DateTime.Now); if (!IsEmptyTextbox()) { MessageBox.Show("You have to fill all fields."); return; } else if (!IsValidEmail(txtMail.Text)) { MessageBox.Show("You can't use this mail adress." + Environment.NewLine + "Ex: [email protected]"); return; } foreach (Customer item in OceanBookStore.customerList) { if (item.Username == txtUsername.Text) { MessageBox.Show("This username is already taken."); return; } } string hashedPassword = UtilConvert.ComputeSha256Hash(txtPassword.Text); Customer customer = new Customer(txtName.Text, txtAddress.Text, txtMail.Text, txtUsername.Text, hashedPassword, UtilSave.registrationNo.ToString()); Customer.SaveCustomer(customer); OceanBookStore.customerList.Add(customer); ShoppingCard shoppingCard = new ShoppingCard(); shoppingCard.CustomerID = customer.CustomerId; UtilSave.Save(shoppingCard); StoreMainScreen.shoppingCards.Add(shoppingCard); MessageBox.Show("Your account was created!"); RefreshForm(); this.Hide(); OceanBookStore.loginScreen.Show(); }
/// <summary> /// This function loads the elements of the ShoppingCard.xml file. /// </summary> /// <param name="shoppingCardList">This parameter is a list of ShoppingCard class.</param> /// <returns> This function does not return a value </returns> public static void Load(List <ShoppingCard> shoppingCardList) { if (!File.Exists(@"data/ShoppingCard.xml")) { XmlTextWriter writer = new XmlTextWriter(@"data/ShoppingCard.xml", System.Text.Encoding.UTF8); writer.WriteStartDocument(true); writer.Formatting = Formatting.Indented; writer.Indentation = 2; writer.WriteStartElement("ShoppingCards"); writer.WriteEndElement(); writer.WriteEndDocument(); writer.Close(); return; } XDocument xDoc = XDocument.Load(@"data/ShoppingCard.xml"); XElement shoppingCardRootElement = xDoc.Root; NumberFormatInfo info = new NumberFormatInfo(); info.NumberDecimalSeparator = "."; foreach (XElement shoppingCard in shoppingCardRootElement.Elements()) { string customerID = shoppingCard.FirstAttribute.Value; double amount = Convert.ToDouble(shoppingCard.Element("PaymentAmount").Value, info); PaymentType type = PaymentType.cash; if (shoppingCard.Element("PaymentType").Value == "creditcard") { type = PaymentType.creditcard; } List <ItemToPurchase> tempitemsToPurchase = new List <ItemToPurchase>(); XElement itemToPurchaseRootElement = shoppingCard.Element("ItemToPurchaseList"); foreach (XElement item in itemToPurchaseRootElement.Elements()) { ItemToPurchase itemToPurchase = new ItemToPurchase(); string classType = item.FirstAttribute.Value; string ID = item.Element("id").Value; string name = item.Element("name").Value; double price = Convert.ToDouble(item.Element("price").Value, info); Image image = UtilConvert.Base64ToImage(item.Element("image").Value); Creator c; if (classType == "Book") { c = new BookFactory(name, ID, price, "", "", "", 0, image); itemToPurchase.Product = c.FactoryMethod(); } else if (classType == "Magazine") { c = new MagazineFactory(name, ID, price, "", Magazine_Type.Actual, image); itemToPurchase.Product = c.FactoryMethod(); } else { c = new MusicCdFactory(name, ID, price, "", MusicCD_Type.Country, image); itemToPurchase.Product = c.FactoryMethod(); } itemToPurchase.Quantity = Int32.Parse(item.Element("quantity").Value); tempitemsToPurchase.Add(itemToPurchase); } ShoppingCard shoppCard = new ShoppingCard(); shoppCard.itemsToPurchase = tempitemsToPurchase; shoppCard.PaymentAmount = amount; shoppCard.CustomerID = customerID; shoppCard.Type = type; shoppingCardList.Add(shoppCard); } }
/// <summary> /// This function loads the elements of the MyOrders.xml file. /// </summary> /// <param name="OrderList">This parameter is a list of ShoppingCard class.</param> /// <returns> This function does not return a value </returns> public static void LoadOrder(List <ShoppingCard> OrderList) { if (!File.Exists(@"data/MyOrders.xml")) { XmlTextWriter writer = new XmlTextWriter(@"data/MyOrders.xml", System.Text.Encoding.UTF8); writer.WriteStartDocument(true); writer.Formatting = Formatting.Indented; writer.Indentation = 2; writer.WriteStartElement("Orders"); writer.WriteEndElement(); writer.WriteEndDocument(); writer.Close(); return; } XDocument xDoc = XDocument.Load(@"data/MyOrders.xml"); XElement OrderRootElement = xDoc.Root; NumberFormatInfo info = new NumberFormatInfo(); info.NumberDecimalSeparator = "."; foreach (XElement order in OrderRootElement.Elements()) { string customerID = order.FirstAttribute.Value; double amount = Convert.ToDouble(order.Element("PaymentAmount").Value, info); PaymentType type = PaymentType.cash; if (order.Element("PaymentType").Value == "creditcard") { type = PaymentType.creditcard; } else if (order.Element("PaymentType").Value == "transfer") { type = PaymentType.transfer; } OrderStatus orderStatus = OrderStatus.canceled; if (order.Element("OrderStatus").Value == "received") { orderStatus = OrderStatus.received; } else if (order.Element("OrderStatus").Value == "shipped") { orderStatus = OrderStatus.shipped; } else if (order.Element("OrderStatus").Value == "waitForShip") { orderStatus = OrderStatus.waitForShip; } int cargoamount = Convert.ToInt32(order.Element("CargoAmount").Value); int oid = Convert.ToInt32(order.LastAttribute.Value); List <ItemToPurchase> tempitemsToPurchase = new List <ItemToPurchase>(); XElement itemToPurchaseRootElement = order.Element("ItemToPurchaseList"); foreach (XElement item in itemToPurchaseRootElement.Elements()) { ItemToPurchase itemToPurchase = new ItemToPurchase(); string id = item.Element("id").Value; string name = item.Element("name").Value; double price = Convert.ToDouble(item.Element("price").Value, info); int quantity = Convert.ToInt32(item.Element("quantity").Value); Image image = UtilConvert.Base64ToImage(item.Element("image").Value); Creator c; if (item.FirstAttribute.Value == "Book") { c = new BookFactory(name, id, price, "", "", "", 0, image); itemToPurchase.Product = c.FactoryMethod(); itemToPurchase.Quantity = quantity; tempitemsToPurchase.Add(itemToPurchase); } else if (item.FirstAttribute.Value == "Magazine") { c = new MagazineFactory(name, id, price, "", Magazine_Type.Actual, image); itemToPurchase.Product = c.FactoryMethod(); itemToPurchase.Quantity = quantity; tempitemsToPurchase.Add(itemToPurchase); } else { c = new MusicCdFactory(name, id, price, "", MusicCD_Type.Country, image); itemToPurchase.Product = c.FactoryMethod(); itemToPurchase.Quantity = quantity; tempitemsToPurchase.Add(itemToPurchase); } } ShoppingCard _order = new ShoppingCard(); _order.itemsToPurchase = tempitemsToPurchase; _order.PaymentAmount = amount; _order.CustomerID = customerID; _order.Type = type; _order.Status = orderStatus; _order.CargoAmount = cargoamount; _order.OID = oid; OrderList.Add(_order); } }