예제 #1
0
        private async void writeSalle(object sender, SelectionChangedEventArgs e)
        {
            //On vide la liste des salles qu'on a
            salleList.Clear();

            //On récupère le campus sélectionné et on le sauvegarde en tant que pref. de l'utilisateur
            Campus c = (Campus)campusSelection.SelectedItem;

            ArelAPI.DataStorage.saveData("favCampus", c.getId());

            //On récupère les salles du campus sélectionné -- On regarde d'abord si il y a un cache pour la session en cours, sinon on récupère de l'API.

            String xmlSalles = ArelAPI.DataStorage.getData("salles" + c.getId());

            if (xmlSalles == null || xmlSalles == "" || xmlSalles == "\r\n")
            {
                Boolean isOnline = await API.IsOnlineAsync();

                if (isOnline)
                {
                    xmlSalles = await API.GetInfoAsync("/api/campus/rooms?siteId=" + c.getId());

                    //On sauvegarde les salles pour que la recherche ne retape pas dans l'API à chaque fois
                    ArelAPI.DataStorage.saveData("salles" + c.getId(), xmlSalles);
                }
                else
                {
                    salleGrid.Visibility        = Visibility.Collapsed;
                    NoInternetSplash.Visibility = Visibility.Visible;
                    ComboBoxes.Visibility       = Visibility.Collapsed;
                    UpdateLayout();
                }
            }

            System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); //creation d'une instance xml
            doc.LoadXml(xmlSalles);                                    //chargement de la variable

            //On récupère les salles et on peuple notre tableau de salles
            foreach (System.Xml.XmlNode room in doc.GetElementsByTagName("room"))
            {
                /*Stucture xml d'une salle donnée par l'api :
                 * <label>
                 * <bookable>
                 * <capacity>
                 * <tables>
                 * <assignedTo>
                 * <description>
                 * <connected>
                 * <campusId>
                 */
                string nom = room.ChildNodes[0].InnerText;

                string desc;
                if (room.ChildNodes[5].InnerText == "Pas de description") //Pourquoi lorsque y'a pas de description ils le précisent,
                {
                    desc = room.ChildNodes[4].InnerText;                  //alors que quand la salle est assignée à personne le tag est juste vide ?
                }
                else
                {
                    desc = room.ChildNodes[5].InnerText; //Un peu de cohérence bordel
                }
                bool   bookable = (room.ChildNodes[1].InnerText == "true");
                string tbl      = room.ChildNodes[3].InnerText;
                string cap      = room.ChildNodes[2].InnerText;

                if (nom != "???")
                {
                    salleList.Add(new Salle(nom, desc, bookable, tbl, cap));
                }
            }
        }