protected override bool DeleteDataItem(ItemChange change, ItemMetadata item, SyncTransferData data) { OutlookAppointment appItem = FindAppointment(item); if (appItem == null) { throw new System.Exception("Appointment for delete not found"); } appItem.Delete(); return(true); }
/// <summary> /// Преобразует иерархию объектов SyncTranferData в Outlook Appointment /// </summary> /// <param name="transferData">The transfer data.</param> /// <param name="appItem">The app item.</param> /// <returns></returns> private OutlookAppointment TransferData2AppointmentItem(SyncTransferData transferData, OutlookAppointment appItem) { ITransferDataSerializable serializer = new AppointmentSerializer(appItem); serializer.Deserialize(transferData); foreach (SyncTransferData child in transferData.Childrens) { if (child.SyncDataName == RecurrencePatternTransferData.DataName) { OutlookRecurrencePattern rPattern = appItem.GetRecurrencePattern(); serializer = new RecurrencePatternSerializer(rPattern); if (serializer != null) { serializer.Deserialize(child); } } else if (child.SyncDataName == RecipientTransferData.DataName) { serializer = new RecipientSerializer(); string recipientName = (string)serializer.Deserialize(child); if (string.IsNullOrEmpty(recipientName)) { OutlookRecipient recipient = appItem.AddRecipient(recipientName); } } } //Сохранем outlook appointment appItem.Save(); //Переносим exception if (appItem.IsRecurring) { OutlookRecurrencePattern rPattern = appItem.GetRecurrencePattern(); foreach (SyncTransferData child in transferData.Childrens) { AppointmentTransferData exception = child as AppointmentTransferData; if (exception != null) { OutlookAppointment appException = rPattern.GetOccurrence(exception.RecurrenceId); TransferData2AppointmentItem(child, appException); if (exception.DeletedException) { appException.Delete(); } } } } return(appItem); }