Esempio n. 1
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();
        }