private static Reminder convertAppointmentItem(TaskItem appointmentItem) { Reminder r = new Reminder(); if (appointmentItem.UserProperties.Find(ASPEC_REMINDER_UUID) != null) { r.uuid = appointmentItem.UserProperties.Find(ASPEC_REMINDER_UUID).Value; } if (appointmentItem.UserProperties.Find(ASPEC_REMINDER_EMAIL_NOTIFICATION_VALUE) != null) { r.email_notification_value = appointmentItem.UserProperties.Find(ASPEC_REMINDER_EMAIL_NOTIFICATION_VALUE).Value; } if (appointmentItem.UserProperties.Find(ASPEC_REMINDER_EMAIL_NOTIFICATION_UNIT) != null) { r.email_notification_unit = appointmentItem.UserProperties.Find(ASPEC_REMINDER_EMAIL_NOTIFICATION_UNIT).Value; } r.reminder_type = "task"; r.subject = appointmentItem.Subject; if (appointmentItem.StartDate != null) { r.start_date = appointmentItem.StartDate.ToString("yyyy-MM-dd"); } if (appointmentItem.DueDate != null) { r.end_date = appointmentItem.DueDate.ToString("yyyy-MM-dd"); } ; r.priority_id = getPriorityID(appointmentItem.Importance); if (appointmentItem.Status == OlTaskStatus.olTaskNotStarted) { r.status_id = 0; } else if (appointmentItem.Status == OlTaskStatus.olTaskInProgress) { r.status_id = 1; } else if (appointmentItem.Status == OlTaskStatus.olTaskComplete) { r.status_id = 2; } else if (appointmentItem.Status == OlTaskStatus.olTaskWaiting) { r.status_id = 3; } else if (appointmentItem.Status == OlTaskStatus.olTaskDeferred) { r.status_id = 4; } r.notes = appointmentItem.Body; if (appointmentItem.CreationTime != null) { r.created_at = convertDateToASPECDate(appointmentItem.CreationTime.ToUniversalTime()); } if (appointmentItem.LastModificationTime != null) { r.updated_at = convertDateToASPECDate(appointmentItem.LastModificationTime.ToUniversalTime()); } return(r); }
private static TaskItem createOrUpdateReminder(TaskItem item, Reminder reminder) { if (reminder.is_deleted != null && reminder.is_deleted.CompareTo("0") != 0 && reminder.is_deleted.ToLower().CompareTo("false") != 0) { item.Delete(); return(null); } if (item.UserProperties.Find(ASPEC_REMINDER_UUID) == null) { item.UserProperties.Add(ASPEC_REMINDER_UUID, OlUserPropertyType.olText, true, true); } item.UserProperties[ASPEC_REMINDER_UUID].Value = reminder.uuid; if (item.UserProperties.Find(ASPEC_REMINDER_FLAG) == null) { item.UserProperties.Add(ASPEC_REMINDER_FLAG, OlUserPropertyType.olYesNo, true, true); } item.UserProperties[ASPEC_REMINDER_FLAG].Value = true; item.Subject = reminder.subject; if (reminder.start_date != null) { item.StartDate = DateTime.ParseExact(reminder.start_date, "yyyy-MM-dd", null); } if (reminder.end_date != null) { item.DueDate = DateTime.ParseExact(reminder.end_date, "yyyy-MM-dd", null); } if (reminder.priority_id != null) { item.Importance = getPriority(reminder.priority_id.Value).Value; } if (reminder.status_id == 0) { item.Status = OlTaskStatus.olTaskNotStarted; } else if (reminder.status_id == 1) { item.Status = OlTaskStatus.olTaskInProgress; } else if (reminder.status_id == 2) { item.Status = OlTaskStatus.olTaskComplete; } else if (reminder.status_id == 3) { item.Status = OlTaskStatus.olTaskWaiting; } else if (reminder.status_id == 4) { item.Status = OlTaskStatus.olTaskDeferred; } item.Body = reminder.notes; if (item.UserProperties.Find(ASPEC_REMINDER_EMAIL_NOTIFICATION_VALUE) == null) { item.UserProperties.Add(ASPEC_REMINDER_EMAIL_NOTIFICATION_VALUE, OlUserPropertyType.olText, true, true); } item.UserProperties[ASPEC_REMINDER_EMAIL_NOTIFICATION_VALUE].Value = reminder.email_notification_value; if (item.UserProperties.Find(ASPEC_REMINDER_EMAIL_NOTIFICATION_UNIT) == null) { item.UserProperties.Add(ASPEC_REMINDER_EMAIL_NOTIFICATION_UNIT, OlUserPropertyType.olText, true, true); } item.UserProperties[ASPEC_REMINDER_EMAIL_NOTIFICATION_UNIT].Value = reminder.email_notification_unit; item.Save(); return(item); }
private static AppointmentItem createOrUpdateReminder(AppointmentItem item, Reminder reminder) { if (reminder.is_deleted != null && reminder.is_deleted.CompareTo("0") != 0 && reminder.is_deleted.ToLower().CompareTo("false") != 0) { item.Delete(); return(null); } if (item.UserProperties.Find(ASPEC_REMINDER_UUID) == null) { item.UserProperties.Add(ASPEC_REMINDER_UUID, OlUserPropertyType.olText, true, true); } item.UserProperties[ASPEC_REMINDER_UUID].Value = reminder.uuid; if (item.UserProperties.Find(ASPEC_REMINDER_FLAG) == null) { item.UserProperties.Add(ASPEC_REMINDER_FLAG, OlUserPropertyType.olYesNo, true, true); } item.UserProperties[ASPEC_REMINDER_FLAG].Value = true; item.Subject = reminder.subject; if ((reminder.start_time == null && reminder.end_time == null) || (reminder.start_time != null && reminder.end_time != null && reminder.start_time.CompareTo("00:00") == 0 && reminder.end_time.CompareTo("00:00") == 0)) { item.AllDayEvent = true; DateTime start = DateTime.ParseExact(reminder.reminder_date + " 00:00", "yyyy-MM-dd HH:mm", null); DateTime end = start.AddDays(1); item.Start = start; item.End = end; } else if (reminder.start_time != null && reminder.end_time != null) { DateTime start = DateTime.ParseExact(reminder.reminder_date + " " + reminder.start_time + " UTC", "yyyy-MM-dd HH:mm UTC", CultureInfo.InvariantCulture); DateTime end = DateTime.ParseExact(reminder.reminder_date + " " + reminder.end_time + " UTC", "yyyy-MM-dd HH:mm UTC", CultureInfo.InvariantCulture);//"Z", "yyyy-MM-dd HH:mmK", null); item.StartUTC = (start < end) ? start : end; item.EndUTC = (start < end) ? end : start; } if (reminder.priority_id != null) { item.Importance = getPriority(reminder.priority_id.Value).Value; } item.Body = reminder.notes; if (item.UserProperties.Find(ASPEC_REMINDER_EMAIL_NOTIFICATION_VALUE) == null) { item.UserProperties.Add(ASPEC_REMINDER_EMAIL_NOTIFICATION_VALUE, OlUserPropertyType.olText, true, true); } item.UserProperties[ASPEC_REMINDER_EMAIL_NOTIFICATION_VALUE].Value = reminder.email_notification_value; if (item.UserProperties.Find(ASPEC_REMINDER_EMAIL_NOTIFICATION_UNIT) == null) { item.UserProperties.Add(ASPEC_REMINDER_EMAIL_NOTIFICATION_UNIT, OlUserPropertyType.olText, true, true); } item.UserProperties[ASPEC_REMINDER_EMAIL_NOTIFICATION_UNIT].Value = reminder.email_notification_unit; item.Save(); return(item); }
private static DateTime createOrUpdateReminder(Reminder reminder) { DateTime lastModified = DateTime.Now; Folder folder = getCalendarFolder( reminder.reminder_type != null && reminder.reminder_type.CompareTo("appointment") == 0 ? OlDefaultFolders.olFolderCalendar : OlDefaultFolders.olFolderTasks); String filter = "[" + ASPEC_REMINDER_FLAG + "] = True and [" + ASPEC_REMINDER_UUID + "] = '" + reminder.uuid + "'"; //MessageBox.Show(filter); Items events = getAppointments(folder, filter); Boolean updated = false; if (events != null) { for (int i = 1; i < events.Count + 1; i++) { if (events[i] is AppointmentItem) { AppointmentItem newItem = createOrUpdateReminder(events[i] as AppointmentItem, reminder); if (newItem != null) { lastModified = newItem.LastModificationTime; } updated = true; } else if (events[i] is TaskItem) { TaskItem newItem = createOrUpdateReminder(events[i] as TaskItem, reminder); if (newItem != null) { lastModified = newItem.LastModificationTime; } updated = true; } } } if (!updated) { if (reminder.reminder_type != null && reminder.reminder_type.CompareTo("appointment") == 0) { AppointmentItem newItem = createOrUpdateReminder(Globals.ThisAddIn.Application.CreateItem(OlItemType.olAppointmentItem) as AppointmentItem, reminder); if (newItem != null) { lastModified = newItem.LastModificationTime; } updated = true; } else if (reminder.reminder_type != null && reminder.reminder_type.CompareTo("task") == 0) { TaskItem newItem = createOrUpdateReminder(Globals.ThisAddIn.Application.CreateItem(OlItemType.olTaskItem) as TaskItem, reminder); if (newItem != null) { lastModified = newItem.LastModificationTime; } updated = true; } } return(lastModified); }