private static void ClearOldReminders() { var reminders = ScheduledActionService.GetActions <Reminder>().ToArray(); //delete reminders if (reminders.Length > 0) { foreach (var reminder in reminders) { if (ScheduledActionService.Find(reminder.Name) != null) { ScheduledActionService.Remove(reminder.Name); } var friend = BirthdayUtility.GetFriendDetailsById(Convert.ToInt32(reminder.Name)); if (friend == null) { continue; } friend.IsReminderCreated = false; BirthdayUtility.UpdateFriendDetails(friend); //AppLog.writeToLog(DateTime.Now, reminder.Name + friend.UniqueId + friend.IsReminderCreated.ToString(), LogLevel.Error); } } }
private int UpdateFriend() { //gather friend details var friendDetails = DataContext as FriendEntity; if (friendDetails == null) { return(0); } friendDetails.Email = EmailTextBox.Text; friendDetails.PhoneNumber = ContactTextBox.Text; friendDetails.SendAutoEmailOnBirthday = AutoEmailToggle.IsChecked != null && AutoEmailToggle.IsChecked.Value; friendDetails.Name = NameTextBox.Text; friendDetails.Birthday = (BirthdayPicker.Value.HasValue) ? BirthdayPicker.Value.Value : new DateTime?(); //write updated details to file BirthdayUtility.UpdateFriendDetails(friendDetails); return(friendDetails.UniqueId); }
/// <summary> /// Delete old calendar entries and add new ones /// </summary> public static void UpdateCalendarEntries() { try { ClearOldReminders(); //add a dummy reminder to test in debug mode //#if DEBUG // if (ScheduledActionService.Find("DummyReminder") != null) // { // ScheduledActionService.Remove("DummyReminder"); // } // Reminder dummyReminder = new Reminder("DummyReminder"); // dummyReminder.BeginTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute + 1, 0); // dummyReminder.Title = AppResources.BirthdayLabel; // dummyReminder.Content = "Shahzad " + AppResources.BirthdayReminderMessage; // ScheduledActionService.Add(dummyReminder); //#endif //create new reminders var allBirthdays = BirthdayUtility.GetBirthdays().AllBirthdays; if (allBirthdays == null || !allBirthdays.Any()) { return; } var orderedBirthdayList = allBirthdays.Where(b => b.DaysAhead.HasValue && b.DaysAhead > 0) .OrderBy(b => b.DaysAhead) .ToList(); foreach (var birthday in orderedBirthdayList) { //check to see if the reminder aleady exists and the birthday has a value if (ScheduledActionService.Find(birthday.Id.ToString()) != null || !birthday.Birthday.HasValue) { continue; } //add a reminder var birthdayValue = birthday.Birthday.Value; var reminder = new Reminder(birthday.Id.ToString()) { BeginTime = GetBeginTime(birthdayValue), Content = birthday.Name + " " + AppResources.BirthdayReminderMessage, NavigationUri = new Uri("/FriendDetails.xaml?" + UriParameter.FriendId + "=" + birthday.Id, UriKind.Relative), Title = AppResources.BirthdayLabel }; ScheduledActionService.Add(reminder); //update friend details to reflect reminder created var friend = BirthdayUtility.GetFriendDetailsById(birthday.Id); if (friend == null) { continue; } friend.IsReminderCreated = true; BirthdayUtility.UpdateFriendDetails(friend); } } catch (InvalidOperationException ex) { if (!ex.Message.Contains("The maximum number of ScheduledActions of this type have already been added")) { throw; } } }
/// <summary> /// Retrieves list of recent birthdays /// </summary> /// <returns>List of friend</returns> private void GetRecentBirthdays() { try { var friendList = BirthdayUtility.GetFriendList(); var recentBirthdays = new List <FriendEntity>(); var todayBirthday = new List <FriendEntity>(); var weekBirthday = new List <FriendEntity>(); Settings = SettingsUtility.GetUserPreferences(); LoadLocalizedRes(); var notificationCount = 0; var isReminderExpired = false; foreach (var friend in friendList) { if (!friend.Birthday.HasValue || (friend.IsHidden.HasValue && friend.IsHidden.Value)) { continue; } var daysAhead = DateTimeUtility.GetTimeToEvent(friend.Birthday.Value); //if the birthday is today, add recent birthdays to list if (daysAhead == 0) { //if the birthday is today, raise a toast notification recentBirthdays.Add(friend); todayBirthday.Add(friend); notificationCount++; if (friend.LastToastRaisedYear < DateTime.Now.Year) { if (!Settings.ReminderNotification.LocalNotifications.HasValue || Settings.ReminderNotification.LocalNotifications.Value) { RaiseToast(friend.Name + " " + Resources.BdayTodayMsg, Resources.BdayTileLabel, new Uri("/FriendDetails.xaml?" + UriParameter.FriendId + "=" + friend.UniqueId, UriKind.Relative)); } //update the last notification raised year friend.LastToastRaisedYear = DateTime.Now.Year; BirthdayUtility.UpdateFriendDetails(friend); } } //if birthday is tomorrow if (daysAhead == 1) { recentBirthdays.Add(friend); notificationCount++; } //check if reminder for upcoming birthdays exist if (daysAhead > 0 && daysAhead < 7) { if (!friend.IsReminderCreated) { isReminderExpired = true; notificationCount++; } weekBirthday.Add(friend); } } //raise a toast notification if reminders have to be created if (isReminderExpired) { RaiseToast(Resources.UpdateBdayReminder, Resources.BdayTileLabel, new Uri("/StartChecks.xaml?" + UriParameter.Action + "=Toast", UriKind.Relative)); } //update shell tile UpdateTile(notificationCount, weekBirthday); BirthdayUtility.DownloadProfileImages("No"); //send an email - [[to be implemented later]] //if (settings.ReminderNotification.SendEmailReminders && !string.IsNullOrEmpty(settings.UserDetails.Email)) //{ // String emailText = getReminderEmailContent(todayBirthday); // sendEmail(settings.UserDetails.Email,emailText); //} ////wish via email //if (todayBirthday!=null && todayBirthday.Count>0) //{ // wishViaEmail(todayBirthday); //} } catch (Exception ex) { AppLog.WriteToLog(DateTime.Now, ex.Message + ". " + ex.StackTrace, LogLevel.Error); throw; } }