public static void GetVouchersFromXml() { XElement root = XElement.Load(App.xmlPath); foreach (XElement elem in root.Descendants("Voucher")) { VoucherRecord vouch = new VoucherRecord(); DateTime d; try { d = DateTime.Parse(elem.Attribute("Date").Value, CultureInfo.InvariantCulture); } catch (Exception) { d = DateTime.ParseExact(elem.Attribute("Date").Value, "dd-MM-yy HH:mm", CultureInfo.InvariantCulture); } vouch.Date = d; vouch.Voucher = elem.Attribute("Voucher").Value; vouch.Number = elem.Attribute("Number").Value; vouch.Status = elem.Attribute("Status").Value; if (vouch.Status == "Not Sent") { App.VoucherRecords.Insert(0, vouch); } else { App.VoucherRecords.Add(vouch); } } }
public static void SaveToXml(VoucherRecord record) { XElement root = XElement.Load(App.xmlPath); root.Element("Rynga").Element("Vouchers").AddFirst(new XElement("Voucher", new XAttribute("Date", record.Date), new XAttribute("Voucher", record.Voucher), new XAttribute("Number", record.Number), new XAttribute("Status", record.Status))); root.Save(App.xmlPath); }
public static void UpdateXml(VoucherRecord newRecord) { XElement root = XElement.Load(App.xmlPath); XElement record = root.Descendants("Voucher"). Where(new Func <XElement, bool>(elem => elem.Attribute("Voucher").Value == newRecord.Voucher)).First(); record.SetAttributeValue("Date", newRecord.Date); record.SetAttributeValue("Number", newRecord.Number); record.SetAttributeValue("Status", newRecord.Status); root.Save(App.xmlPath); }
void worker_DoWork(object sender, DoWorkEventArgs e) { Thread.Sleep(5000); webBrowser.Invoke(new Action(() => { App.Status.Messages = webBrowser.Document.GetElementById("smspointsId").InnerText; } )); EventWaitHandle.OpenExisting("vouchersResetEvent").WaitOne(); if (App.Status.IsError) { e.Cancel = true; return; } else if (!loggedIn) { App.Status.RiseError("Messages not sent,\nTry to send manually"); e.Cancel = true; return; } App.Status.Brush = System.Windows.Media.Brushes.Turquoise; App.Status.Status = "Sending messages...."; for (int i = 0; i < vouchersQuantity; i++) { webBrowser.Invoke(new Action(() => { App.VoucherRecords[i].Number = Number; App.VoucherRecords[i].Date = DateTime.Now; HtmlElement elem = webBrowser.Document.GetElementById("number"); elem.SetAttribute("value", Number); webBrowser.Document.InvokeScript("joinContacts"); elem = webBrowser.Document.GetElementById("w2smessage"); elem.SetAttribute("value", App.VoucherRecords[i].Voucher); elem = webBrowser.Document.GetElementById("send-button"); elem.InvokeMember("click"); App.VoucherRecords[i].Status = "Sent"; VoucherRecord.UpdateXml(App.VoucherRecords[i]); string[] smsCount = App.Status.Messages.Split(new char[] { ' ' }, 2); App.Status.Messages = (int.Parse(smsCount[0]) - 1).ToString() + " " + smsCount[1]; } )); Thread.Sleep(4000); } }
void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { try { App.Status.IsError = false; switch (step) { case "step1": HtmlElement elem; HtmlDocument doc = webBrowser.Document; if (doc.Body.InnerText.Contains("Logout")) { App.Status.Status = "Already Logged in"; step = "step2"; return; } App.Status.Status = "Logging..."; HtmlElement loginForm = doc.Forms[1]; elem = loginForm.GetElementsByTagName("INPUT")[0]; elem.SetAttribute("value", Username); elem = loginForm.GetElementsByTagName("INPUT")[1]; elem.SetAttribute("value", Password); loginForm.InvokeMember("submit"); step = "step2"; break; case "step2": if (webBrowser.Document.Url.AbsolutePath.Contains("buy_credit")) { App.Status.Status = "Logged on."; webBrowser.Navigate("https://www.rynga.com/reseller_options/generate_vouchers"); step = "step3"; } else { step = "step1"; } break; case "step3": if (webBrowser.Document.Url.AbsolutePath.Contains("generate_vouchers")) { step = "step4"; goto step4; } else if (webBrowser.Document.Url.AbsolutePath.Contains("validate")) { App.Status.Status = "Generating Vouchers..."; HtmlElement pincodeElem; pincodeElem = webBrowser.Document.GetElementById("pincode"); pincodeElem.SetAttribute("value", Pincode); webBrowser.Document.Forms[0].InvokeMember("submit"); step = "step4"; } break; case "step4": step4: if (webBrowser.Document.Url.AbsolutePath.Contains("generate_vouchers")) { HtmlElement formVoucher = webBrowser.Document.Forms[voucherCredit]; HtmlElement elemVoucher = formVoucher.GetElementsByTagName("INPUT")[0]; elemVoucher.SetAttribute("value", vouchersQuantity.ToString()); step = "step5"; formVoucher.InvokeMember("submit"); } break; case "step5": if (webBrowser.Document.Url.AbsolutePath.Contains("voucher_details")) { HtmlElement divVouchers = webBrowser.Document.GetElementById("page-local-agents-agent-details"); HtmlElementCollection voucherElements = divVouchers.GetElementsByTagName("DIV")[1].GetElementsByTagName("H3"); for (int i = 0; i < vouchersQuantity; i++) { VoucherRecord vouch = new VoucherRecord(DateTime.Now, voucherElements[i].InnerText, "", "Not Sent"); App.VoucherRecords.Insert(0, vouch); VoucherRecord.SaveToXml(vouch); } App.Status.Status = "Vouchers Generated"; webBrowser.Dispose(); EventWaitHandle.OpenExisting("vouchersResetEvent").Set(); } break; default: break; } } catch { App.Status.RiseError("Error generating vouchers!"); webBrowser.Dispose(); EventWaitHandle.OpenExisting("vouchersResetEvent").Set(); } }