Exemplo n.º 1
0
        /// <summary>
        /// Notifying function
        /// </summary>
        /// <param name="minuteRange">Acceptable disperse in minutes</param>
        /// <returns></returns>
        private async Task Notify(int minuteRange)
        {
            Debug.WriteLine(DateTime.Now);

            var ToastNotifier      = ToastNotificationManager.CreateToastNotifier();
            var ScheduledToastList = ToastNotifier.GetScheduledToastNotifications();

            ActiList = await ActiMan.GetItemsAsync(true);

            var ValidItems = ActiList.Where(x => Math.Abs((DateTime.Now.TimeOfDay - x.WhenNotify.TimeOfDay).TotalMinutes) < minuteRange)?.ToList();

            if (ValidItems == null)
            {
                return;
            }
            else if (ValidItems.Count == 0)
            {
                return;
            }


            foreach (var item in ValidItems)
            {
                if (!item.Notify || item.Secured || !item.NotifyDays.Contains(DateTime.Today.DayOfWeek))
                {
                    continue;
                }

                if ((!item.Dates.Contains(DateTime.Today)) && ((item.End >= DateTime.Today) && (item.Start <= DateTime.Today)))
                {
                    if (ScheduledToastList.Select(x => x.Id).Contains("Acti" + item.ID))
                    {
                        continue;
                    }

                    Notifications.SendNotification(new string[2] {
                        "Uncompleted activity", $"Activity {item.Name} isn't completed."
                    }, ToastTemplateType.ToastText02);

                    //if (NotifyQueue <= 5)
                    //{
                    //    NotifyQueue++;

                    //    Queue.Add(item);
                    //}
                }
            }

            defferal.Complete();
        }
Exemplo n.º 2
0
        protected override async void ShowModal(ShowModalActivationMsg obj)
        {
            var file = obj.Files[0];

            try
            {
                string fileXmlString = await FileIO.ReadTextAsync((IStorageFile)file);

                ItemTypeEnum?itemType = CategoryDecode(fileXmlString);

                MessageDialog importMoreItemsMessage = new MessageDialog("You are trying to import more than one item.\n\n" +
                                                                         "Import all items?", "Importing more items", MessageDialogButtonsEnum.YesNo);

                TextBlock itemSecuredMessage = new TextBlock()
                {
                    Text =
                        "One or more items are secured.\n\n" +
                        "Please, log in and repeat action.",
                    FontSize = 30
                };

                TextBlock importingMessage = new TextBlock()
                {
                    Text =
                        "Importing items\n\n" +
                        "Please wait.",
                    FontSize = 30
                };

                if (itemType == null)
                {
                    return;
                }

                switch (itemType)
                {
                case ItemTypeEnum.Activity:
                    var activityFile = DecodeItemFile <Activity>(fileXmlString);

                    ActivitiesManager actiMan = new ActivitiesManager();
                    await actiMan.GetItemsAsync();

                    App.ManaLoc.AddManager(actiMan, actiMan.ID);

                    if (activityFile != null)
                    {
                        foreach (var item in activityFile.Items)
                        {
                            item.ID = -1;

                            if (item.Secured)
                            {
                                item.Name        = Crypting.Decrypt(item.Name);
                                item.Description = Crypting.Decrypt(item.Description);
                            }
                        }
                    }
                    else
                    {
                        return;
                    }

                    if (activityFile.Items.Count(x => x.Secured) != 0 && !CustomSettings.IsUserLogged)
                    {
                        ModalWindow.SetVisibility(true, itemSecuredMessage);
                    }
                    else if (activityFile.Items.Count > 1)
                    {
                        if (await importMoreItemsMessage.ShowAsync() == MessageDialogResultEnum.Yes)
                        {
                            ModalWindow.SetVisibility(true, importingMessage, false);

                            actiMan = (ActivitiesManager)App.ManaLoc.GetManager(actiMan.ID);

                            await actiMan.AddItemRange(activityFile.Items.ToList()).ContinueWith((res) =>
                            {
                                Messenger.Send(new ItemAddSavedMsg()
                                {
                                    ItemType       = ItemTypeEnum.Activity,
                                    MoreItemsAdded = true
                                });
                            });

                            ModalWindow.SetVisibility(false, importingMessage, false);
                        }
                    }
                    else
                    {
                        ModalWindow.SetVisibility(true, new ActivityAdd(true, activityFile.Items[0]), false);
                    }
                    break;

                case ItemTypeEnum.Note:
                    var noteFile = DecodeItemFile <Note>(fileXmlString);

                    NotesManager noMan = new NotesManager();
                    await noMan.GetItemsAsync();

                    App.ManaLoc.AddManager(noMan, noMan.ID);

                    if (noteFile != null)
                    {
                        foreach (var item in noteFile.Items)
                        {
                            item.ID = -1;

                            if (item.Secured)
                            {
                                item.Name        = Crypting.Decrypt(item.Name);
                                item.Description = Crypting.Decrypt(item.Description);
                            }
                        }
                    }
                    else
                    {
                        return;
                    }

                    if (noteFile.Items.Count(x => x.Secured) != 0 && !CustomSettings.IsUserLogged)
                    {
                        ModalWindow.SetVisibility(true, itemSecuredMessage);
                    }
                    else if (noteFile.Items.Count > 1)
                    {
                        if (await importMoreItemsMessage.ShowAsync() == MessageDialogResultEnum.Yes)
                        {
                            ModalWindow.SetVisibility(true, importingMessage, false);

                            noMan = (NotesManager)App.ManaLoc.GetManager(noMan.ID);

                            await noMan.AddItemRange(noteFile.Items.ToList()).ContinueWith((res) =>
                            {
                                Messenger.Send(new ItemAddSavedMsg()
                                {
                                    ItemType       = ItemTypeEnum.Note,
                                    MoreItemsAdded = true
                                });
                            });

                            ModalWindow.SetVisibility(false, importingMessage, false);
                        }
                    }
                    else
                    {
                        ModalWindow.SetVisibility(true, new NoteAdd(true, noteFile.Items[0]), false);
                    }
                    break;

                default:
                    return;
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.Message);
            }
        }
Exemplo n.º 3
0
        private async Task CreateNotifications()
        {
            var ToastNotifier      = ToastNotificationManager.CreateToastNotifier();
            var ScheduledToastList = ToastNotifier.GetScheduledToastNotifications();

            ActiList = await ActiMan.GetItemsAsync(true);

            var ValidItems = ActiList.Where(x => (DateTime.Now.TimeOfDay - x.WhenNotify.TimeOfDay).TotalMinutes <= 0)?.Where(x => !ScheduledToastList.Select(y => y.Id).Contains("Acti" + x.ID)).ToList();

            if (ValidItems == null)
            {
                return;
            }
            else if (ValidItems.Count == 0)
            {
                return;
            }


            foreach (var item in ValidItems)
            {
                if (!item.Notify || item.Secured || !item.NotifyDays.Contains(DateTime.Today.DayOfWeek))
                {
                    break;
                }

                if ((!item.Dates.Contains(DateTime.Today)) && ((item.End >= DateTime.Today) && (item.Start <= DateTime.Today)))
                {
                    XmlDocument xml = Notifications.GetXml(new string[2] {
                        "Uncompleted activity", $"Activity {item.Name} isn't completed."
                    }, ToastTemplateType.ToastText02);

                    DateTime now = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, item.WhenNotify.Hour, item.WhenNotify.Minute, item.WhenNotify.Second);

                    if (now.Minute == DateTime.Now.Minute)
                    {
                        now.AddMinutes(1);
                    }

                    ScheduledToastNotification newScheduled = new ScheduledToastNotification(xml, now)
                    {
                        Id = "Acti" + item.ID
                    };

                    ToastNotificationManager.CreateToastNotifier().AddToSchedule(newScheduled);
                    //if (NotifyQueue <= 5)
                    //{
                    //    NotifyQueue++;

                    //    Queue.Add(item);
                    //}
                }

                if (item.Dates.Contains(DateTime.Today))
                {
                    var scheduledNotification = ToastNotificationManager.CreateToastNotifier().GetScheduledToastNotifications().FirstOrDefault(x => x.Id == "Acti" + item.ID);

                    if (scheduledNotification != null)
                    {
                        ToastNotificationManager.CreateToastNotifier().RemoveFromSchedule(scheduledNotification);
                    }
                }
            }

            defferal.Complete();
        }