private void WebBrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { switch (_step++) { case 0: DoLogin(); break; case 1: OutputDates dates = ReadDates(); StoreChanges(dates); WaitForPolling(); break; } }
private OutputDates ReadDates() { this.label.Text = "Reading the update timestamps..."; List <HtmlElement> tds = new List <HtmlElement>(wb.Document.GetElementsByTagName("td").Cast <HtmlElement>()); HtmlElement node = tds.Where(x => x.InnerText != null && x.InnerText.Equals("Última modificació")).FirstOrDefault(); OutputDates od = new OutputDates(); DateTime temp = DateTime.Now; int s = 0; //TODO: fix this node = node.Parent; while (s++ < 8 && node.NextSibling != null) { node = node.NextSibling; if (s % 2 > 0) { tds = new List <HtmlElement>(node.Children.Cast <HtmlElement>()); temp = DateTime.ParseExact((tds.Last().InnerText == null ? "01/01/1900 00:00" : tds.Last().InnerText), "dd/MM/yyyy HH:mm", System.Globalization.CultureInfo.InvariantCulture); switch (s) { case 1: od.Ratings = temp; break; case 3: od.Advertisements = temp; break; case 5: od.Lists = temp; break; case 7: od.Announcements = temp; break; } } } return(od); }
private void StoreChanges(OutputDates dates) { this.label.Text = "Storing changes..."; Output output = Output.Load(); bool updated = false; string msg = "New changes has been detected on {0} for {1}"; List <string> messages = new List <string>(); if (output.Dates.Ratings < dates.Ratings) { updated = true; output.Dates.Ratings = dates.Ratings; msg = string.Format(msg, dates.Ratings.ToString("dd/MM/yyyy HH:mm"), "ratings"); messages.Add(msg); } if (output.Dates.Advertisements < dates.Advertisements) { updated = true; output.Dates.Advertisements = dates.Advertisements; msg = string.Format(msg, dates.Advertisements.ToString("dd/MM/yyyy HH:mm"), "advertisements"); messages.Add(msg); } if (output.Dates.Lists < dates.Lists) { updated = true; output.Dates.Lists = dates.Lists; msg = string.Format(msg, dates.Lists.ToString("dd/MM/yyyy HH:mm"), "lists"); messages.Add(msg); } if (output.Dates.Announcements < dates.Announcements) { updated = true; output.Dates.Announcements = dates.Announcements; msg = string.Format(msg, dates.Announcements.ToString("dd/MM/yyyy HH:mm"), "announcements"); messages.Add(msg); } if (!updated) { output.Log.Add(string.Format("{0}: No changes detected.", DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"))); } else { string body = "<p>New changes has been detected into the applicant's desk: </p><ul>"; foreach (string m in messages) { output.Log.Add(string.Format("{0}: {1}", DateTime.Now, m)); body = string.Format("{0} <li>{1}</li>", body, m); } body = string.Format("{0}</ul><p>{1}</p>", body, "<a href='https://aplicacions.ensenyament.gencat.cat/pls/apex/f?p=2016001:12'>Check it here!</a>"); MailMessage mailMessage = new MailMessage() { From = new MailAddress(_settings.Mailing.From), IsBodyHtml = true, Body = body, Subject = "New changes has been detected into the applicant's desk." }; mailMessage.To.Add(_settings.Mailing.To); using (SmtpClient client = new SmtpClient(_settings.Mailing.SmtpServer)){ client.Port = _settings.Mailing.SmtpPort; client.Credentials = new NetworkCredential(_settings.Mailing.User, _settings.Mailing.Pass); client.EnableSsl = true; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.Send(mailMessage); } } while (output.Log.Count > _settings.Log.Entries) { output.Log.RemoveAt(0); } Output.Store(output); }