Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }