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); } } }
/// <summary> /// Loads necessary data and perfor initialisation checks /// </summary> private void InitialiseApp() { try { SetLicenseInfo(); var isDbUpgraded = AppUtility.UpdateSchema(); if (!isDbUpgraded) { AppUtility.MigrateXmlDataToDatabase(); ReminderUtility.ClearAllRemindersOnUpgrade(); BirthdayUtility.SaveLocalCards(); } UpdateLocalizedRes(); CheckFriendBirthdayFile(); } catch (Exception ex) { MessageBox.Show(AppResources.ErrAppInitialise, AppResources.ErrInitialiseTitle, MessageBoxButton.OK); AppLog.WriteToLog(DateTime.Now, "Error during initialisation. Error : " + ex.Message + ". Stack : " + ex.StackTrace, LogLevel.Error); NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative)); } }
private async void UploadImageToServer(String userId, String fileName, FileStream imageStream) { try { var service = new AzureStorageService(Services.AzureConnectionString, userId); var status = await service.SaveFileToBlob(fileName, imageStream); if (status.IsSuccess) { var url = Services.CardBaseUrl + userId + "/" + fileName; var newCard = new CardEntity { Url = url }; BirthdayUtility.AddBirthdayCard(newCard); var birthdays = DataContext as Birthdays; if (birthdays != null) { birthdays.BirthdayCards.Add(newCard); } } else { MessageBox.Show(status.ErrorMessage, AppResources.ErrAddCard, MessageBoxButton.OK); } } catch (Exception ex) { MessageBox.Show(ex.Message, AppResources.ErrAddCard, MessageBoxButton.OK); } }
private async Task SaveFriends() { try { var friendListTask = await DownloadFriends(App.AccessToken); friendListTask = App.IsTrial ? friendListTask.Take(100).ToList() : friendListTask; _savedFriendList = BirthdayUtility.GetFriendList(); if (!App.UserPreferences.ContactSync.FacebookSyncEnabled.HasValue || App.UserPreferences.ContactSync.FacebookSyncEnabled.Value) { //display status message StatusText.Text = AppResources.RetrievingFbFriend; foreach (var user in friendListTask) { //check if the friend exists already if (_savedFriendList != null && _savedFriendList.Count > 0 && _savedFriendList.Exists(f => !String.IsNullOrEmpty(f.FacebookId) && f.FacebookId.Equals(user.FacebookId, StringComparison.InvariantCultureIgnoreCase))) { UpdateExistingFriendToList(user, _savedFriendList.Find(x => !String.IsNullOrEmpty(x.FacebookId) && x.FacebookId.Equals(user.FacebookId, StringComparison.InvariantCultureIgnoreCase))); } else { BirthdayUtility.AddNewFriend(user); } } } //Save friend list to file StatusText.Text = AppResources.SaveBdays; //update the reminder list StatusText.Text = AppResources.CreateBdayReminder; ReminderUtility.UpdateCalendarEntries(); //BirthdayUtility.downloadProfileImages(isSync); //update last sync time in settings and app user preferences App.UserPreferences.ContactSync.LastSync = DateTime.Now; if (App.UserPreferences != null) { SettingsUtility.UpdateUserSettings(App.UserPreferences); } await BirthdayUtility.SyncCards(App.UserPreferences.UserDetails.FacebookId); //update card sync status App.UserPreferences.ContactSync.CardsSynced = true; if (App.UserPreferences != null) { SettingsUtility.UpdateUserSettings(App.UserPreferences); } } catch (Exception ex) { MessageBox.Show(ex.Message, AppResources.ErrBuildBdayList, MessageBoxButton.OK); NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative)); } }
protected override void OnNavigatedTo(NavigationEventArgs e) { try { if (NavigationContext.QueryString.TryGetValue(UriParameter.FriendId, out Parameter)) { Action = ActionType.Details; FriendEntity = BirthdayUtility.GetFriendDetailsById(Convert.ToInt32(Parameter)); DataContext = FriendEntity; var birthday = DateTime.Now; BirthdayText.Text = FriendEntity.Birthday.HasValue ? AppResources.BirthdayOnLabel + " : " + FriendEntity.Birthday.Value.ToString("dd MMM") : AppResources.BirthdayOnLabel + " : " + AppResources.NotKnownLabel; //update the UI based on the action UpdateUIForAction(Action); AutoEmailToggle.IsChecked = FriendEntity.SendAutoEmailOnBirthday; AutoEmailToggle.Content = (FriendEntity.SendAutoEmailOnBirthday) ? "Yes" : "No"; //format datetime to current culture BirthdayPicker.Value = new DateTime(birthday.Year, birthday.Month, birthday.Day, CultureInfo.CurrentCulture.Calendar); //add buttons to app bar AddAppBarButtons(FriendEntity); } else { Action = ActionType.Add; ActivateSaveButton(); } //remove backstack while (NavigationService.BackStack.Any() && !NavigationService.BackStack.ElementAt(0).Source.ToString().Contains("/MainPage.xaml")) { NavigationService.RemoveBackEntry(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error On Navigation", MessageBoxButton.OK); } }
private int AddNewFriend() { //gather friend details var friendDetails = new FriendEntity { Name = NameTextBox.Text, Birthday = (BirthdayPicker.Value.HasValue) ? BirthdayPicker.Value.Value : new DateTime?(), Email = EmailTextBox.Text, PhoneNumber = ContactTextBox.Text, SendAutoEmailOnBirthday = AutoEmailToggle.IsChecked != null && AutoEmailToggle.IsChecked.Value, ProfilePictureUrl = Constants.DefaultProfilePic, TypeOfContact = ContactType.Custom }; //write updated details to db return(BirthdayUtility.AddNewFriend(friendDetails)); }
private void DeleteClick(object sender, RoutedEventArgs e) { try { if (App.IsTrial) { //messagebox to prompt to buy var buyAppForDeleteMessageBox = new CustomMessageBox { Height = 300, Caption = AppResources.BuyFullVersion, Message = AppResources.BuyAppForDelete, LeftButtonContent = AppResources.BuyLabel, RightButtonContent = AppResources.LaterLabel, VerticalAlignment = VerticalAlignment.Center }; buyAppForDeleteMessageBox.Dismissed += BuyAppForDeleteMessageBoxDismissed; buyAppForDeleteMessageBox.Show(); return; } var menuItem = sender as MenuItem; if (menuItem != null) { var birthday = menuItem.DataContext as FriendBirthday; if (birthday != null) { BirthdayUtility.DeleteFriend(birthday.Id); } } BindDataContext(); } catch (Exception ex) { MessageBox.Show(ex.Message, AppResources.ErrDeleting, MessageBoxButton.OK); } }
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); }
private void BindDataContext() { var birthdays = BirthdayUtility.GetBirthdays(); LocalizeBirthdayText(birthdays); birthdays.AlphaGroupAllBirthdays = AlphaKeyGroup <FriendBirthday> .CreateGroups ( birthdays.AllBirthdays, Thread.CurrentThread.CurrentUICulture, f => f.Name, true ); BirthdayCardList.SelectedItems.Clear(); birthdays.BirthdayCards = new ObservableCollection <CardEntity>(); DataContext = birthdays; foreach (var card in BirthdayUtility.GetBirthdayCards()) { birthdays.BirthdayCards.Add(card); } }
private static async Task <List <FriendEntity> > DownloadFriends(String accessToken) { var facebookFriendList = new List <FriendEntity>(); var client = new Facebook.FacebookClient(accessToken); dynamic result = await client.GetTaskAsync("fql", new { q = "SELECT uid,name,pic_big,birthday_date FROM user WHERE uid in (SELECT uid2 FROM friend where uid1 = me());" }); //JArray resultsList = JObject.Parse(result.ToString())["data"]; var resultsList = result["data"]; for (var i = 0; i < resultsList.Count; i++) { try { var friendObject = resultsList[i]; var friend = new FriendEntity { FacebookId = friendObject.uid.ToString(), Name = friendObject.name, ProfilePictureUrl = friendObject.pic_big, Birthday = (friendObject.birthday_date == null) ? String.Empty : BirthdayUtility.FormatFBUserBirthday(friendObject.birthday_date.ToString()) }; facebookFriendList.Add(friend); } catch (Exception ex) { AppLog.WriteToLog(DateTime.Now, "Error getting friend data from object" + ex.Message + ex.StackTrace + ex.InnerException + ex.Data, LogLevel.Error); } } return(facebookFriendList); }
/// <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; } } }
private void DeleteAppBarClick(object sender, EventArgs e) { try { if (App.IsTrial) { //messagebox to prompt to buy var buyAppForDeleteMessageBox = new CustomMessageBox { Height = 300, Caption = AppResources.BuyFullVersion, Message = AppResources.BuyAppForDelete, LeftButtonContent = AppResources.BuyLabel, RightButtonContent = AppResources.LaterLabel, VerticalAlignment = VerticalAlignment.Center }; buyAppForDeleteMessageBox.Dismissed += BuyAppForDeleteMessageBoxDismissed; buyAppForDeleteMessageBox.Show(); return; } //display warning for confirmation var result = MessageBox.Show(AppResources.DeleteConfirmMessage, AppResources.DeleteLabel, MessageBoxButton.OKCancel); if (!result.Equals(MessageBoxResult.OK)) { return; } //check which list is active if (MainPagePanorama.SelectedItem.Equals(MostRecentPanorama)) { if (RecentBirthdayList != null && RecentBirthdayList.SelectedItems != null && RecentBirthdayList.SelectedItems.Count > 0) { foreach (FriendBirthday friend in RecentBirthdayList.SelectedItems) { BirthdayUtility.DeleteFriend(friend.Id); } } else { MessageBox.Show(AppResources.WarnSelectItem, AppResources.WarnTryAgain, MessageBoxButton.OK); } BindDataContext(); } else if (MainPagePanorama.SelectedItem.Equals(AllItemPanorama)) { if (AllBirthdayList != null && AllBirthdayList.SelectedItems != null && AllBirthdayList.SelectedItems.Count > 0) { foreach (FriendBirthday friend in AllBirthdayList.SelectedItems) { BirthdayUtility.DeleteFriend(friend.Id); } } else { MessageBox.Show(AppResources.WarnSelectItem, AppResources.WarnTryAgain, MessageBoxButton.OK); } BindDataContext(); } else if (MainPagePanorama.SelectedItem.Equals(BirthdayCardPanorama)) { //if image upload/delete is complete if (NetworkInterface.GetIsNetworkAvailable()) { if (BirthdayCardList != null && BirthdayCardList.SelectedItems != null && BirthdayCardList.SelectedItems.Count > 0) { var service = new AzureStorageService(Services.AzureConnectionString, App.UserPreferences.UserDetails.FacebookId); var items = BirthdayCardList.SelectedItems; var deletedCards = new List <int>(); if (items != null) { foreach (var cardEntity in items.Cast <CardEntity>()) { service.DeleteBlob(Path.GetFileName(cardEntity.Url)); deletedCards.Add(cardEntity.Id); } } var birthdays = DataContext as Birthdays; if (birthdays == null) { return; } var birthdayCards = birthdays.BirthdayCards; foreach (var cardId in deletedCards) { birthdayCards.Remove(birthdayCards.Single(c => c.Id == cardId)); } //remove entry fromm database BirthdayUtility.DeleteCards(deletedCards); } else { MessageBox.Show(AppResources.WarnSelectItem, AppResources.WarnTryAgain, MessageBoxButton.OK); } } else { MessageBox.Show(AppResources.WarnInternetMsg, AppResources.WarnNwTitle, MessageBoxButton.OK); } } } catch (Exception ex) { MessageBox.Show(ex.Message, AppResources.ErrDeleting, MessageBoxButton.OK); } }
/// <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; } }
public SelectCard() { InitializeComponent(); DataContext = BirthdayUtility.GetBirthdayCards(); }
private void SaveButtonClick(object sender, EventArgs e) { try { if (App.IsTrial) { //messagebox to prompt to buy var buyAppForSaveFriendMessageBox = new CustomMessageBox { Height = 300, Caption = AppResources.BuyFullVersion, Message = AppResources.BuyAppForAddFriend, LeftButtonContent = AppResources.BuyLabel, RightButtonContent = AppResources.LaterLabel, VerticalAlignment = VerticalAlignment.Center }; buyAppForSaveFriendMessageBox.Dismissed += BuyAppForSaveFriendBoxDismissed; buyAppForSaveFriendMessageBox.Show(); return; } if (String.IsNullOrEmpty(NameTextBox.Text) || !BirthdayPicker.Value.HasValue) { MessageBox.Show(AppResources.WarnNameBdayCompulsory, AppResources.WarnDtlsReq, MessageBoxButton.OK); return; } //display status message StatusText.Text = AppResources.SavingFrndDtls; ContentStackPanel.Opacity = 0.2; StatusPanel.Visibility = Visibility.Visible; int friendGuid; if (Action.Equals(ActionType.Add)) { friendGuid = AddNewFriend(); MessageBox.Show(AppResources.NewFrndCreatedMsg, AppResources.NewFrndAddedTitle, MessageBoxButton.OK); } else { friendGuid = UpdateFriend(); MessageBox.Show(AppResources.FrndDtlsUpdated, AppResources.FrndDtlsUpdatedTitle, MessageBoxButton.OK); } //change the app bar buttons FriendEntity = BirthdayUtility.GetFriendDetailsById(friendGuid); AddAppBarButtons(FriendEntity); //remove focus from textbox RemoveFocus(); } catch (Exception ex) { MessageBox.Show(ex.Message, AppResources.ErrSavingFrndDtls, MessageBoxButton.OK); } finally { //hide status screen StatusPanel.Visibility = Visibility.Collapsed; ContentStackPanel.Opacity = 1; } }