コード例 #1
0
ファイル: acceuil.xaml.cs プロジェクト: Difegue/AREL-UWP
        private async void InitializeUserInfo()
        {
            Boolean isOnline = await API.IsOnlineAsync();

            if (isOnline)
            {
                //màj des données de l'utilisateur
                string infoUser = await API.GetInfoAsync("/api/me");

                ArelAPI.DataStorage.saveData("user", infoUser);

                //Récup du nom de l'utilisateur pour affichage
                string userName = API.GetUserFullName(ArelAPI.DataStorage.getData("user"), "Utilisateur d'AREL");
                HamburgerButton.Content = userName;

                UpdateLayout();
            }
        }
コード例 #2
0
        public async void Run(IBackgroundTaskInstance taskInstance)
        {
            Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
            BackgroundTaskDeferral _deferral = taskInstance.GetDeferral();

            ArelAPI.Connector API = new ArelAPI.Connector();

            Boolean canUpdate = true;
            Boolean isOnline  = await API.IsOnlineAsync();

            if (!isOnline) //Si le token n'est plus valide, on le rafraîchit avec le refreshToken
            {
                bool isReLogged = await API.RenewAccessTokenAsync();

                if (!isReLogged) //Si on peut rafraîchir le jeton, on continue, sinon on notifie l'utilisateur qu'il doit ré-entrer ses logins
                {
                    Show(new ToastContent()
                    {
                        Scenario = ToastScenario.Default,

                        Visual = new ToastVisual()
                        {
                            TitleText = new ToastText()
                            {
                                Text = "AREL - Synchronisation Planning"
                            },
                            BodyTextLine1 = new ToastText()
                            {
                                Text = "Vos identifiants ont expirés."
                            },
                            BodyTextLine2 = new ToastText()
                            {
                                Text = "Reconnectez-vous pour maintenir la synchronisation."
                            }
                        },
                    });

                    canUpdate = false;
                }
            }

            //On appelle la fonction de màj du calendrier windows qui est dans Planning.xaml.cs
            if (canUpdate)
            {
                API.UpdateWindowsCalendar(DateTime.Now.ToString("yyyy-MM-dd"),
                                          DateTime.Now.AddDays(14).ToString("yyyy-MM-dd"),
                                          API.GetUserFullName(ArelAPI.DataStorage.getData("user"), "Mon Planning AREL"));
            }

            //On re-enregistre la tâche si le paramètre est présent
            if (bool.Parse(ArelAPI.DataStorage.getData("backgroundTask")))
            {
                var         builder       = new BackgroundTaskBuilder();
                TimeTrigger hourlyTrigger = new TimeTrigger(120, false); //On rafraîchit le planning toutes les 2 heures.

                builder.Name           = "ARELSyncPlanningTask";
                builder.TaskEntryPoint = "SyncTask.ARELPlanningBackgroundTask";
                builder.SetTrigger(hourlyTrigger);
                builder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));

                builder.Register();
            }

            _deferral.Complete();
        }
コード例 #3
0
        //Récupère les données du noeud XML du cours et appelle ajoutCours pour le dessiner à l'écran
        private async Task <bool> ComputeCoursAsync(System.Xml.XmlNode node, Grid planningGrid)
        {
            string prof     = "";
            string salle    = "";
            string matiere  = "";
            string matiere2 = "";
            string debut    = "";
            string fin      = "";
            string couleur  = "";

            foreach (System.Xml.XmlNode node02 in node)
            {
                //ecrire(node02.Name);
                if (node02.Name == "teacherLogin")
                {
                    prof = node02.InnerText;
                }
                if (node02.Name == "label")
                {
                    matiere = node02.InnerText;
                }
                if (node02.Name == "departmentColor")
                {
                    couleur = node02.InnerText;
                }
                if (node02.Name == "beginDate")
                {
                    debut = node02.InnerText;
                }
                if (node02.Name == "endDate")
                {
                    fin = node02.InnerText;
                }
                if (node02.Name == "roomLabel")
                {
                    salle = node02.InnerText;
                }
            }

            string idRel    = node.ChildNodes[2].InnerText;
            string idProf   = node.ChildNodes[3].InnerText;
            string profName = node.ChildNodes[4].InnerText;

            //Récup nom complet prof et rel...si on a accès à l'API parce que je les sauvegarde pas dans les données de l'appli
            Boolean isOnline = await API.IsOnlineAsync();

            if (isOnline)
            {
                string xmlr = await API.GetInfoAsync("/api/rels/" + idRel);

                matiere2 = API.getRelName(xmlr, matiere);
                matiere  = "(" + matiere + ")";

                string xmlj = await API.GetInfoAsync("/api/users/" + idProf);

                prof = API.GetUserFullName(xmlj, profName);
            }

            if (prof != "" && matiere != "" && debut != "" && fin != "" && couleur != "" && salle != "")
            {
                AddCours(matiere2, matiere, prof, salle, debut, fin, couleur, planningGrid);
            }

            return(true);
        }
コード例 #4
0
        private async void ManualSync(object sender, RoutedEventArgs e)
        {
            //On montre un spinner pour l'amusement
            SpinnerSync.IsActive = true;

            //update manuelle: On chope les cours des 2 dernières + des 2 prochaines semaines
            API.UpdateWindowsCalendar(DateTime.Now.AddDays(-14).ToString("yyyy-MM-dd"), DateTime.Now.AddDays(14).ToString("yyyy-MM-dd"), API.GetUserFullName(ArelAPI.DataStorage.getData("user"), "Mon Planning AREL"));

            //On montre le calendrier
            await Windows.ApplicationModel.Appointments.AppointmentManager.ShowTimeFrameAsync(DateTime.Now, new TimeSpan(125, 0, 0));

            SpinnerSync.IsActive = false;
        }