Beispiel #1
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);
        }
 private async void ShowReminderModalPage(ReminderReadModel Reminder)
 {
     //Add handler for modal return
     Application.Current.ModalPopping += HandleModalPopping;
     _AddReminderModal = new AddReminder(Reminder);
     await Navigation.PushModalAsync(_AddReminderModal);
 }
Beispiel #3
0
        //For use elsewhere
        public static async Task <string> AddReminderToCalendar(ReminderReadModel reminderModel)
        {
            var calendar = await CheckCalendarExistanceAndCreation("Petminder", "Petminder");

            var start = reminderModel.StartDate + reminderModel.TimeLocal.TimeOfDay;
            var end   = reminderModel.StartDate + reminderModel.TimeLocal.TimeOfDay + TimeSpan.FromMinutes(15);
            var id    = await AddReminderToCalendar(reminderModel, calendar, start, end);

            LocalReminderModel localReminderModel = new LocalReminderModel();

            localReminderModel.calendarIds.Add(id);
            localReminderModel.databaseId = reminderModel.Id;

            AppendToReminderToLocal(localReminderModel);
            return(id);
        }
Beispiel #4
0
        //Interal Class method, does that actual work of adding to calendar
        private static async Task <string> AddReminderToCalendar(ReminderReadModel reminderModel, Calendar calendar, DateTime start, DateTime end)
        {
            CalendarEvent         calendarEvent = new CalendarEvent();
            CalendarEventReminder reminder      = new CalendarEventReminder();

            calendarEvent.Name        = reminderModel.Name;
            calendarEvent.Description = reminderModel.Message;
            calendarEvent.Start       = start;
            calendarEvent.End         = end;
            reminder.Method           = CalendarReminderMethod.Alert;
            reminder.TimeBefore       = TimeSpan.FromMinutes(15);
            IList <CalendarEventReminder> reminderList = new List <CalendarEventReminder>();

            reminderList.Add(reminder);
            calendarEvent.Reminders = reminderList;

            await CrossCalendars.Current.AddOrUpdateEventAsync(calendar, calendarEvent);

            var returnList = await CrossCalendars.Current.GetEventsAsync(calendar, start, end);

            return(returnList[0].ExternalID.ToString());
        }
Beispiel #5
0
        public AddReminder(ReminderReadModel reminderModel)
        {
            InitializeComponent();

            //List<Types> types = new List<Types>();
            //types.Add(new Types(0, "Appointment"));
            //types.Add(new Types(1, "Medicine"));
            //types.Add(new Types(2, "Exercise"));

            //IList<Types> source = types;

            submitReminder.Clicked += SubmitReminder_Clicked;

            TypePicker.Items.Add("Appointment");
            TypePicker.Items.Add("Medicine");
            TypePicker.Items.Add("Exercise");
            TypePicker.Items.Add("Other");
            TypePicker.SelectedIndex = 0;

            Frequency.Items.Add("Daily");
            Frequency.Items.Add("Weekly");
            Frequency.Items.Add("Monthly");

            //PetId = pet.Id;

            SetFrequencyVisible();

            if (reminderModel != null)
            {
                _update                 = true;
                Name.Text               = reminderModel.Name;
                Message.Text            = reminderModel.Message;
                Repeat.IsToggled        = reminderModel.Repeat;
                TypePicker.SelectedItem = reminderModel.Type;
                StartDate.Date          = reminderModel.StartDate;
                Time.Time               = reminderModel.TimeLocal.TimeOfDay;
                id = reminderModel.Id;
            }
        }
Beispiel #6
0
        public static async Task <bool> AddRepeatingReminderToCalendar(ReminderReadModel reminderModel)
        {
            try
            {
                var calendar = await CheckCalendarExistanceAndCreation("Petminder", "Petminder");

                var                frequency = reminderModel.Frequency;
                DateTime           dateTime;
                List <string>      externalIds = new List <string>();
                string             externalId;
                LocalReminderModel localReminderModel = new LocalReminderModel();

                dateTime = reminderModel.StartDate + reminderModel.TimeLocal.TimeOfDay;

                if (frequency == "Daily")
                {
                    var loopcount = DateTime.IsLeapYear(reminderModel.StartDate.Year) ? 366 : 365;

                    for (int i = 0; i < loopcount; i++)
                    {
                        externalId = await AddReminderToCalendar(reminderModel, calendar, dateTime, dateTime + TimeSpan.FromMinutes(15));

                        dateTime = dateTime.AddDays(1);
                        externalIds.Add(externalId);
                    }
                }
                else if (frequency == "Weekly")
                {
                    var loopcount = 52;

                    for (int i = 0; i < loopcount; i++)
                    {
                        externalId = await AddReminderToCalendar(reminderModel, calendar, dateTime, dateTime + TimeSpan.FromMinutes(15));

                        dateTime = dateTime.AddDays(7);
                        externalIds.Add(externalId);
                    }
                }
                else if (frequency == "Monthly")
                {
                    var loopcount = 12;

                    for (int i = 0; i < loopcount; i++)
                    {
                        externalId = await AddReminderToCalendar(reminderModel, calendar, dateTime, dateTime + TimeSpan.FromMinutes(15));

                        dateTime = dateTime.AddMonths(1);
                        externalIds.Add(externalId);
                    }
                }

                localReminderModel.databaseId  = reminderModel.Id;
                localReminderModel.calendarIds = externalIds;

                AppendToReminderToLocal(localReminderModel);
            }
            catch
            {
                return(false);
            }

            return(true);
        }
Beispiel #7
0
        private async void SubmitReminder_Clicked(object sender, EventArgs e)
        {
            RestClient          client   = new RestClient();
            HttpResponseMessage response = new HttpResponseMessage();

            ReminderCreateModel reminderModel = new ReminderCreateModel();

            reminderModel.Name      = Name.Text;
            reminderModel.Message   = Message.Text;
            reminderModel.Repeat    = Repeat.IsToggled;
            reminderModel.AccountId = UserInfo.AccountId;
            reminderModel.Complete  = false;
            reminderModel.Type      = TypePicker.SelectedItem.ToString();       //Since this object is just a string this is ok
            reminderModel.StartDate = StartDate.Date;
            reminderModel.Time      = DateTime.Today.ToLocalTime() + Time.Time; //Converting to local to add time offset

            if (string.IsNullOrEmpty(reminderModel.Name))
            {
                await ValidationAlert(nameof(Name));

                return;
            }
            if (string.IsNullOrEmpty(reminderModel.Message))
            {
                await ValidationAlert(nameof(Message));

                return;
            }

            if (reminderModel.Repeat)
            {
                reminderModel.Frequency = Frequency.SelectedItem.ToString();
            }

            ActivityIndicatorToggle(true);

            Device.BeginInvokeOnMainThread(async() =>
            {
                var body = JsonConvert.SerializeObject(reminderModel);

                if (_update)
                {
                    response = client.Put("api/reminders", id, UserInfo.Token, body);
                }
                else
                {
                    response = client.Post("api/reminders", "", UserInfo.Token, body);
                }

                if (response.StatusCode == System.Net.HttpStatusCode.Created)
                {
                    ReminderReadModel createdReminder = JsonConvert.DeserializeObject <ReminderReadModel>(response.Content.ReadAsStringAsync().Result);
                    if (reminderModel.Repeat == false)
                    {
                        await PetminderApp.Reminders.Reminders.AddReminderToCalendar(createdReminder);
                    }
                    else
                    {
                        await PetminderApp.Reminders.Reminders.AddRepeatingReminderToCalendar(createdReminder);
                    }
                    await Navigation.PopModalAsync();
                }
                else if (response.StatusCode == System.Net.HttpStatusCode.NoContent)
                {
                    var readResponse = client.Get($"api/reminders/{id}", UserInfo.Token);

                    if (readResponse.IsSuccessStatusCode)
                    {
                        var updatedReminder = JsonConvert.DeserializeObject <ReminderReadModel>(readResponse.Content.ReadAsStringAsync().Result);

                        if (updatedReminder.Repeat == false)
                        {
                            await PetminderApp.Reminders.Reminders.DeleteReminder(updatedReminder);
                            await PetminderApp.Reminders.Reminders.AddReminderToCalendar(updatedReminder);
                        }
                        else
                        {
                            await PetminderApp.Reminders.Reminders.DeleteReminder(updatedReminder);
                            await PetminderApp.Reminders.Reminders.AddRepeatingReminderToCalendar(updatedReminder);
                        }
                    }
                    await Navigation.PopModalAsync();
                }
                else
                {
                    if (_update)
                    {
                        await DisplayAlert("Update Error", "Please try again", "Ok");
                    }
                    else
                    {
                        await DisplayAlert("Creation Error", "Please try again", "Ok");
                    }
                }
            });
        }