Ejemplo n.º 1
0
        //This code is going to be insane pls no
        public static async Task <bool> AddMissingReminders(List <ReminderReadModel> reminders)
        {
            var calendar = await CheckCalendarExistanceAndCreation("Petminder", "Petminder");

            AppDataReadWrite dataWriter = new AppDataReadWrite("Reminders.json");
            var localReminders          = JsonConvert.DeserializeObject <List <LocalReminderModel> >(dataWriter.ReadStringFromFile());

            var calendarEvents = await CrossCalendars.Current.GetEventsAsync(calendar, DateTime.MinValue, DateTime.MaxValue);

            foreach (var reminder in reminders)
            {
                if (localReminders != null)
                {
                    var exists = localReminders.FirstOrDefault(p => p.databaseId == reminder.Id);
                    if (exists == null)
                    {
                        if (reminder.Repeat)
                        {
                            await AddRepeatingReminderToCalendar(reminder);
                        }
                        else
                        {
                            await AddReminderToCalendar(reminder);
                        }
                    }
                }
            }

            return(true);
        }
Ejemplo n.º 2
0
        private static void CleanUpFinishedReminders(List <ReminderReadModel> reminders)
        {
            RestClient       client     = new RestClient();
            AppDataReadWrite dataWriter = new AppDataReadWrite("Reminders.json");
            var strLocalReminders       = dataWriter.ReadStringFromFile();

            var localReminders = JsonConvert.DeserializeObject <List <LocalReminderModel> >(strLocalReminders);

            foreach (ReminderReadModel reminder in  reminders)
            {
                if (reminder.StartDate < DateTime.Now && reminder.Repeat == false)
                {
                    client.Delete("api/reminders", UserInfo.Token, reminder.Id);
                    reminder.Complete = true;

                    if (localReminders != null)
                    {
                        localReminders.RemoveAll(p => p.databaseId == reminder.Id);
                    }
                }
            }

            if (reminders != null)
            {
                reminders.RemoveAll(p => p.Complete == true);
            }

            dataWriter.WriteStringToFile(JsonConvert.SerializeObject(localReminders));
        }
Ejemplo n.º 3
0
        //General Delete Reminder Event
        public static async Task <bool> DeleteReminder(ReminderReadModel reminderModel)
        {
            CalendarEvent calendarEvent;
            var           calendar = await CheckCalendarExistanceAndCreation("Petminder", "Petminder");

            AppDataReadWrite dataWriter = new AppDataReadWrite("Reminders.json");
            var strLocalReminders       = dataWriter.ReadStringFromFile();

            var localReminders = JsonConvert.DeserializeObject <List <LocalReminderModel> >(strLocalReminders);

            if (localReminders != null)
            {
                var reminderToDelete = localReminders.FirstOrDefault(p => p.databaseId == reminderModel.Id);

                if (reminderToDelete != null)
                {
                    //Remove from local storage json file first since sync process will clean up if the delete process is interrupted
                    localReminders.RemoveAll(p => p.databaseId == reminderModel.Id);
                    dataWriter.WriteStringToFile(JsonConvert.SerializeObject(localReminders));

                    foreach (string externalId in reminderToDelete.calendarIds)
                    {
                        calendarEvent = await CrossCalendars.Current.GetEventByIdAsync(externalId);

                        if (calendarEvent != null)
                        {
                            await CrossCalendars.Current.DeleteEventAsync(calendar, calendarEvent);
                        }
                    }
                }
            }

            return(true);
        }
Ejemplo n.º 4
0
        private static void AppendToReminderToLocal(LocalReminderModel localReminderModel)
        {
            AppDataReadWrite dataWriter = new AppDataReadWrite("Reminders.json");
            var localReminders          = JsonConvert.DeserializeObject <List <LocalReminderModel> >(dataWriter.ReadStringFromFile());

            if (localReminders == null)
            {
                localReminders = new List <LocalReminderModel>();
            }

            localReminders.Add(localReminderModel);

            dataWriter.WriteStringToFile(JsonConvert.SerializeObject(localReminders));
        }
Ejemplo n.º 5
0
        //This cleans up any events that get missed by other delete processes.
        //Needed in case other delete processes are intreruppted and dont restard. ie app is closed
        public static async Task <bool> CleanCalendarAndLocalStorage(List <ReminderReadModel> reminders)
        {
            if (reminders != null)
            {
                //Get Calendar and all events on it
                var calendar = await CheckCalendarExistanceAndCreation("Petminder", "Petminder");

                var calendarEvents = await CrossCalendars.Current.GetEventsAsync(calendar, DateTime.MinValue, DateTime.MaxValue);

                var listCalendarEvents = calendarEvents.ToList <CalendarEvent>();

                AppDataReadWrite dataWriter = new AppDataReadWrite("Reminders.json");
                var strLocalReminders       = dataWriter.ReadStringFromFile();

                var localReminders = JsonConvert.DeserializeObject <List <LocalReminderModel> >(strLocalReminders);

                // Cleans Local Storage
                if (localReminders != null)
                {
                    foreach (LocalReminderModel localReminder in localReminders)
                    {
                        var exists = await CrossCalendars.Current.GetEventByIdAsync(localReminder.calendarIds.First());

                        if (exists == null)
                        {
                            localReminder.toBeRemoved = true;
                        }
                        else
                        {
                            var reminder = reminders.FirstOrDefault(p => p.Id == localReminder.databaseId);

                            if (reminder == null)
                            {
                                localReminder.toBeRemoved = true;
                            }
                        }
                    }

                    //Remove bad data and write bad to local storage
                    localReminders.RemoveAll(p => p.toBeRemoved == true);
                    dataWriter.WriteStringToFile(JsonConvert.SerializeObject(localReminders));



                    List <string> validExternalIds = new List <string>();

                    //Combine all valid calendar events into one list
                    foreach (var localreminder in localReminders)
                    {
                        validExternalIds.InsertRange(0, localreminder.calendarIds);
                    }

                    //Loop through list
                    foreach (var validId in validExternalIds)
                    {
                        //Remove if valid
                        listCalendarEvents.RemoveAll(p => p.ExternalID == validId);
                    }

                    //Clean up calendar
                    foreach (var listCalendarEvent in listCalendarEvents)
                    {
                        await CrossCalendars.Current.DeleteEventAsync(calendar, listCalendarEvent);
                    }
                }
                else
                {
                    if (listCalendarEvents.Count > 0)
                    {
                        foreach (CalendarEvent calendarEvent in listCalendarEvents)
                        {
                            await CrossCalendars.Current.DeleteEventAsync(calendar, calendarEvent);
                        }
                    }
                }
            }

            return(true);
        }