private static int?FindRoomIndex(List <HtmlNode> t3, string sigla) { if (t3 == null || t3.Count == 0) { return(null); } for (var i = 0; i < t3.Count; i++) { var t4 = t3[i]; if (t4 == null || t4.ChildNodes == null || t4.ChildNodes.Count < 2) { continue; } var t6 = HtmlUtil.GetElementsByTagAndClassName(t4, "td"); ; if (t6 == null || t6.Count < 2) { return(null); } var t7 = t6[1]; ; var t8 = HtmlUtil.GetElementsByTagAndClassName(t7, "b"); ; var t9 = t8[0].InnerHtml.Trim(); ; if (t9 == sigla) { return(i); } var found = StringUtil.CheckIfTheStringIsTheSameAndValidRoomNameInsideAText(sigla, t8[0]); if (found != null && found.Value) { return(i); } } return(null); }
private static async Task <List <HtmlNode> > GetDailySituationAsync(TelegramBotAbstract sender, MessageEventArgs e) { int day; int month; int year; var datetime = await DateTimeClass.AskDateAsync(e.Message.From.Id, "Scegli un giorno", "it", sender, e.Message.From.Username); if (datetime.Item2 != null) { throw datetime.Item2; return(null); } var d2 = datetime.Item1.GetDate(); if (d2 == null) { return(null); } day = d2.Value.Day; month = d2.Value.Month; year = d2.Value.Year; var sede = await AskUser.GetSedeAsync(sender, e); if (string.IsNullOrEmpty(sede)) { return(null); } var url = "https://www7.ceda.polimi.it/spazi/spazi/controller/OccupazioniGiornoEsatto.do?" + "csic=" + sede + "&categoria=tutte" + "&tipologia=tutte" + "&giorno_day=" + day + "&giorno_month=" + month + "&giorno_year=" + year + "&jaf_giorno_date_format=dd%2FMM%2Fyyyy&evn_visualizza="; var html = await Web.DownloadHtmlAsync(url, RequestCacheLevel.NoCacheNoStore); if (html.IsValid() == false) { return(null); } var doc = new HtmlDocument(); doc.LoadHtml(html.GetData()); ; var t1 = HtmlUtil.GetElementsByTagAndClassName(doc.DocumentNode, "", "BoxInfoCard", 1); ; var t3 = HtmlUtil.GetElementsByTagAndClassName(t1[0], "", "scrollContent"); return(t3); }
private static async Task SearchClassroomAsync(TelegramBotAbstract sender, MessageEventArgs e) { var question = new Language(new Dictionary <string, string> { { "it", "Nome dell'aula?" }, { "en", "Name of the room?" } }); var sigla = await AskUser.AskAsync(e.Message.From.Id, question, sender, e.Message.From.LanguageCode, e.Message.From.Username); var url = "https://www7.ceda.polimi.it/spazi/spazi/controller/RicercaAula.do?spazi___model" + "___formbean___RicercaAvanzataAuleVO___postBack=true&spazi___model___formbean___" + "RicercaAvanzataAuleVO___formMode=FILTER&evn_ricerca_avanzata=&spazi___model___formbean___" + "RicercaAvanzataAuleVO___sede=tutte&spazi___model___formbean___RicercaAvanzataAuleVO___sigla=" + sigla + "&spazi___model___formbean___RicercaAvanzataAuleVO___categoriaScelta=tutte&spazi" + "___model___formbean___RicercaAvanzataAuleVO___tipologiaScelta=tutte&spazi___model" + "___formbean___RicercaAvanzataAuleVO___iddipScelto=tutti&spazi___model___formbean___" + "RicercaAvanzataAuleVO___soloPreseElettriche_default=N&spazi___model___formbean___" + "RicercaAvanzataAuleVO___soloPreseDiRete_default=N"; var webReply = await Web.DownloadHtmlAsync(url, RequestCacheLevel.NoCacheNoStore); if (webReply == null || !webReply.IsValid()) { return; //todo: notify user that download failed } ; var doc = new HtmlDocument(); doc.LoadHtml(webReply.GetData()); var t1 = HtmlUtil.GetElementsByTagAndClassName(doc?.DocumentNode, "", "TableDati-tbody"); ; var t2 = t1?[0]; ; var t3 = HtmlUtil.GetElementsByTagAndClassName(t2, "tr"); ; var roomIndex = FindRoomIndex(t3, sigla); if (roomIndex == null) { return; //todo: send to the user "room not found" } ; var t4 = t3[roomIndex.Value]; ; var t5 = HtmlUtil.GetElementsByTagAndClassName(t4, "td"); ; if (t5.Count < 3) { return; //todo: send to the user "room not found" } var t6 = t5[2]; ; var t7 = HtmlUtil.GetElementsByTagAndClassName(t6, "a"); if (t7.Count < 1) { return; //todo: send to the user "room not found" } ; var t8 = t7[0]; ; var t9 = t8.Attributes; if (t9 == null) { return; //todo: send to the user "room not found" } var t10 = t9["href"]; if (t10 == null) { return; //todo: send to the user "room not found" } if (string.IsNullOrEmpty(t10.Value)) { return; //todo: send to the user "room not found" } var result = "https://www7.ceda.polimi.it/spazi/spazi/controller/" + t10.Value; var text2 = new Language(new Dictionary <string, string> { { "en", result } }); await SendMessage.SendMessageInPrivate(sender, e.Message.From.Id, e.Message.From.LanguageCode, e.Message.From.Username, text2, ParseMode.Html, null); }