Beispiel #1
0
        public static void Main(string[] args)
        {
            // Luodaan WilmaJson luokasta olio ja alustetaan se wilmapalvelimen Urlilla, salasanalla, käyttäjätunnuksella ja Wilma-avaimella.
            WilmaJson wilma = new WilmaJson(wilmaUrl: Properties.Settings.Default.wilmaUrl,
                                            passwd: Properties.Settings.Default.passwd,
                                            username: Properties.Settings.Default.username,
                                            companySpesificKey: Properties.Settings.Default.companySpesificKey);

            // Luodaan sessio.
            var firstContact = wilma.Login(string.Empty);
            // Kirjaudutaan
            string loginWCookiesResult = wilma.LoginWCookies(Properties.Settings.Default.wilmaUrl + "login");

            // Haetaan dataa parametrein.
            // Huone 149 = Ruokalakabinetti
            var result2 = wilma.Login("schedule/index_json?p=31.10.2018&f=31.12.2018&rooms=149");
            // Saatu tulos de-serialisoidaan poco-luokilla käsiteltäväksi tietorakenteeksi.
            WilmaClassResourse ruokalaKabinettiVaraukset = JsonConvert.DeserializeObject <WilmaClassResourse>(result2);

            // Tulostetaan ruudulle testimielessä.



            foreach (RecourceSchedule varaukset in ruokalaKabinettiVaraukset.RecourceSchedules)
            {
                Console.WriteLine(varaukset.PrimusName);
                foreach (Schedule varaus in varaukset.Schedule.OrderBy(x => x.DateTimes.FirstOrDefault()))
                {
                    foreach (var pvm in varaus.Dates)
                    {
                        Console.Write("Pvm: " + pvm + " " + varaus.Start + " - " + varaus.End);
                        Console.WriteLine(" " + varaus.Groups.FirstOrDefault().Caption);
                    }
                }
            }


            WilmaQuery          wilmaQuery    = new WilmaQuery(wilma);
            List <CareeriaRoom> kaikkiHuoneet = wilmaQuery.GetARoom();


            Console.ReadLine();
        }
Beispiel #2
0
        /// <summary>
        /// Selvitetään kaikki tilat Wilmasta ja muodostetaan niistä oliojoukko josta ilmenee tilan ominaisuudet.
        /// </summary>
        /// <returns></returns>
        public List <CareeriaRoom> GetARoom()
        {
            var roomlist         = new Dictionary <int, string>();
            var careeriaroomlist = new List <CareeriaRoom>();
            // Koko tämä vuosi
            int      year     = DateTime.Now.Year;
            DateTime firstDay = new DateTime(year, 1, 1);
            DateTime lastDay  = new DateTime(year, 12, 31);

            // TODO: Hardcoded - max. numero Primus korttien on nyt 700.
            for (int i = 0; i < 700; i++)
            {
                var result2 = wilmajson.Login("schedule/index_json?p=" + firstDay.Day + "." + firstDay.Month + "." + firstDay.Year + "&f=" + lastDay.Day + "." + lastDay.Month + "." + lastDay.Year + "&rooms=" + i);
                WilmaClassResourse huoneenVarauksetTaltaVuodelta = JsonConvert.DeserializeObject <WilmaClassResourse>(result2);
                foreach (RecourceSchedule varaukset in huoneenVarauksetTaltaVuodelta.RecourceSchedules)
                {
                    // Tilan ominaisuudet on koodattu tähän Caption kenttään. Formaatti:

                    /*
                     * Esimerkkejä AMT-ATK-1-C03-22
                     * AMT-NEU-2-Neuvotteluhuone B-12
                     * ASK-LII-1-Liikuntasali-0
                     * HER-ERI-3-Hoiva-20
                     * LOV-LUE-1-110-0
                     * PMT-TEO-1-C11-18
                     * POM-MUU-1-Iris-0
                     * Paikkakunta ASK Askola
                     * HER Helsinki
                     * KER Kerava
                     * LOV Loviisa
                     * AMT Porvoo, Ammattitie
                     * PMT Porvoo, Perämiehentie
                     * POM Porvoo, POMO-talo
                     * VAN Vantaa
                     * Tilatyyppi ATK Atk-luokka
                     * ERI Käytännön opetustilat, erikoisluokka
                     * KIE Kielistudio
                     * LII Liikuntatila
                     * LUE Luentotila
                     * MUU Muu tila
                     * NEU Neuvotteluhuone
                     * TEO Teorialuokka
                     * YKS Yksilöohjaustila
                     * Kerros 1 1. kerros
                     * 2
                     * 3
                     * 4
                     * 5
                     * Tilan nimi Virna Tilan nimi
                     * C06
                     * Mega
                     * Kapasiteetti 36 Tilaan mahtuma henkilömäärä*/
                    var nimi = varaukset.Schedule.FirstOrDefault()?.Groups.FirstOrDefault()?.Rooms.FirstOrDefault()?.Caption;
                    roomlist.Add(i, nimi);
                    CareeriaRoom careeriaRoom = CareeriaSpesific.ParseRoom(i, nimi);
                    if (careeriaRoom.PrimusCardNumber != -1)
                    {
                        careeriaroomlist.Add(careeriaRoom);
                    }
                }
            }

            return(careeriaroomlist);
        }