/// <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(); }
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); } }
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(); }