Ejemplo n.º 1
0
        /// <summary>
        /// </summary>
        /// <param name="syncProfile"></param>
        /// <param name="syncMetric"></param>
        /// <param name="sourceCalendarSpecificData"></param>
        /// <param name="destinationCalendarSpecificData"></param>
        /// <returns></returns>
        private bool UpdateEntries(CalendarSyncProfile syncProfile, SyncMetric syncMetric,
                                   IDictionary <string, object> sourceCalendarSpecificData,
                                   IDictionary <string, object> destinationCalendarSpecificData)
        {
            var isSuccess = true;

            if (CalendarSyncEngine.SourceAppointmentsToUpdate.Any())
            {
                CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.Line);
                //Update status for reading entries to update
                CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.EntriesToUpdate,
                                                             CalendarSyncEngine.SourceAppointmentsToUpdate.Count,
                                                             SourceCalendarService.CalendarServiceName);
                var updatedAppointments =
                    SourceCalendarService.UpdateCalendarEvents(CalendarSyncEngine.SourceAppointmentsToUpdate,
                                                               syncProfile.CalendarEntryOptions.HasFlag(CalendarEntryOptionsEnum.Description),
                                                               syncProfile.CalendarEntryOptions.HasFlag(CalendarEntryOptionsEnum.Reminders),
                                                               syncProfile.CalendarEntryOptions.HasFlag(CalendarEntryOptionsEnum.Attendees),
                                                               syncProfile.CalendarEntryOptions.HasFlag(CalendarEntryOptionsEnum.AttendeesToDescription),
                                                               sourceCalendarSpecificData).Result;
                isSuccess          = updatedAppointments.IsSuccess;
                CalendarSyncStatus =
                    StatusHelper.GetMessage(isSuccess
                        ? SyncStateEnum.UpdateEntriesSuccess
                        : SyncStateEnum.UpdateEntriesFailed);
                CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.Line);
                syncMetric.SourceMetric.UpdateCount       = CalendarSyncEngine.SourceAppointmentsToUpdate.Count;
                syncMetric.SourceMetric.UpdateFailedCount =
                    CalendarSyncEngine.SourceAppointmentsToUpdate.Count - updatedAppointments.Count;
            }

            if (CalendarSyncEngine.DestAppointmentsToUpdate.Any())
            {
                CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.Line);
                //Update status for reading entries to update
                CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.EntriesToUpdate,
                                                             CalendarSyncEngine.DestAppointmentsToUpdate.Count,
                                                             DestinationCalendarService.CalendarServiceName);
                var updatedAppointments =
                    DestinationCalendarService.UpdateCalendarEvents(CalendarSyncEngine.DestAppointmentsToUpdate,
                                                                    syncProfile.CalendarEntryOptions.HasFlag(CalendarEntryOptionsEnum.Description),
                                                                    syncProfile.CalendarEntryOptions.HasFlag(CalendarEntryOptionsEnum.Reminders),
                                                                    syncProfile.CalendarEntryOptions.HasFlag(CalendarEntryOptionsEnum.Attendees),
                                                                    syncProfile.CalendarEntryOptions.HasFlag(CalendarEntryOptionsEnum.AttendeesToDescription),
                                                                    destinationCalendarSpecificData).Result;
                isSuccess          = updatedAppointments.IsSuccess;
                CalendarSyncStatus =
                    StatusHelper.GetMessage(isSuccess
                        ? SyncStateEnum.UpdateEntriesSuccess
                        : SyncStateEnum.UpdateEntriesFailed);
                CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.Line);
                syncMetric.DestMetric.UpdateCount       = CalendarSyncEngine.DestAppointmentsToUpdate.Count;
                syncMetric.DestMetric.UpdateFailedCount =
                    CalendarSyncEngine.DestAppointmentsToUpdate.Count - updatedAppointments.Count;
            }

            return(isSuccess);
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     Delete appointments from source
        /// </summary>
        /// <param name="syncProfile"></param>
        /// <param name="sourceCalendarSpecificData"></param>
        /// <param name="syncCallback"></param>
        /// <returns>
        /// </returns>
        private bool DeleteSourceAppointments(CalendarSyncProfile syncProfile, SyncMetric syncMetric,
                                              IDictionary <string, object> sourceCalendarSpecificData, SyncCallback syncCallback)
        {
            if (syncProfile.SyncSettings.DisableDelete)
            {
                return(true);
            }
            //Updating entry isDeleteOperation status
            SyncStatus = StatusHelper.GetMessage(SyncStateEnum.Line);
            SyncStatus = StatusHelper.GetMessage(SyncStateEnum.ReadingEntriesToDelete,
                                                 SourceCalendarService.CalendarServiceName);
            //Getting appointments to isDeleteOperation
            CalendarSyncEngine.GetSourceEntriesToDelete(syncProfile, SourceAppointments, DestinationAppointments);
            var appointmentsToDelete = CalendarSyncEngine.SourceAppointmentsToDelete;

            //Updating Get entry isDeleteOperation status
            SyncStatus = StatusHelper.GetMessage(SyncStateEnum.EntriesToDelete, appointmentsToDelete.Count);
            if (appointmentsToDelete.Count == 0)
            {
                SyncStatus = StatusHelper.GetMessage(SyncStateEnum.Line);
                return(true);
            }

            //Updating isDeleteOperation status
            SyncStatus = StatusHelper.GetMessage(SyncStateEnum.DeletingEntries,
                                                 SourceCalendarService.CalendarServiceName);
            //Deleting entries
            var deletedAppointments =
                SourceCalendarService.DeleteCalendarEvents(appointmentsToDelete, sourceCalendarSpecificData).Result;
            var isSuccess = deletedAppointments.IsSuccess;

            //Update status if entries were successfully deleted
            SyncStatus =
                StatusHelper.GetMessage(isSuccess
                    ? SyncStateEnum.DeletingEntriesComplete
                    : SyncStateEnum.DeletingEntriesFailed);
            SyncStatus = StatusHelper.GetMessage(SyncStateEnum.Line);

            if (isSuccess)
            {
                syncMetric.SourceMetric.DeleteCount       = appointmentsToDelete.Count;
                syncMetric.SourceMetric.DeleteFailedCount = appointmentsToDelete.Count - deletedAppointments.Count;
                for (var index = 0; index < appointmentsToDelete.Count; index++)
                {
                    SourceAppointments.Remove(appointmentsToDelete[index]);
                }
            }
            return(isSuccess);
        }
Ejemplo n.º 3
0
        /// <summary>
        ///     Add appointments to source
        /// </summary>
        /// <param name="syncProfile"></param>
        /// <param name="syncMetric"></param>
        /// <param name="sourceCalendarSpecificData"></param>
        /// <returns>
        /// </returns>
        private bool AddSourceAppointments(CalendarSyncProfile syncProfile, SyncMetric syncMetric,
                                           IDictionary <string, object> sourceCalendarSpecificData)
        {
            //Update status for reading entries to add
            CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.ReadingEntriesToAdd,
                                                         SourceCalendarService.CalendarServiceName);
            //Get entries to add
            CalendarSyncEngine.GetSourceEntriesToAdd(syncProfile, SourceAppointments, DestinationAppointments);
            var appointmentsToAdd = CalendarSyncEngine.SourceAppointmentsToAdd;

            CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.EntriesToAdd, appointmentsToAdd.Count);
            if (appointmentsToAdd.Count == 0)
            {
                CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.Line);
                return(true);
            }
            CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.AddingEntries,
                                                         SourceCalendarService.CalendarServiceName);

            //Add entries to calendar
            var addedAppointments = SourceCalendarService.AddCalendarEvents(appointmentsToAdd,
                                                                            syncProfile.CalendarEntryOptions.HasFlag(CalendarEntryOptionsEnum.Description),
                                                                            syncProfile.CalendarEntryOptions.HasFlag(CalendarEntryOptionsEnum.Reminders),
                                                                            syncProfile.CalendarEntryOptions.HasFlag(CalendarEntryOptionsEnum.Attendees),
                                                                            syncProfile.CalendarEntryOptions.HasFlag(CalendarEntryOptionsEnum.AttendeesToDescription),
                                                                            sourceCalendarSpecificData)
                                    .Result;
            var isSuccess = addedAppointments.IsSuccess;

            //Update status if entries were successfully added
            CalendarSyncStatus =
                StatusHelper.GetMessage(isSuccess ? SyncStateEnum.AddEntriesComplete : SyncStateEnum.AddEntriesFailed);
            CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.Line);

            if (isSuccess)
            {
                syncMetric.SourceMetric.AddCount = appointmentsToAdd.Count;
                LoadSourceId(addedAppointments, DestinationAppointments.CalendarId);
                SourceAppointments.AddRange(addedAppointments);
                if (syncProfile.SyncMode == SyncModeEnum.TwoWay)
                {
                    var updateDestList = UpdateWithChildId(addedAppointments, DestinationAppointments);
                    CalendarSyncEngine.DestAppointmentsToUpdate.AddRangeCompareForUpdate(updateDestList);
                }
            }

            return(isSuccess);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// </summary>
        /// <param name="endDate"></param>
        /// <param name="skipPrivateEntries"></param>
        /// <param name="sourceCalendarSpecificData"></param>
        /// <param name="destinationCalendarSpecificData"></param>
        /// <param name="startDate"></param>
        /// <returns>
        /// </returns>
        private bool LoadAppointments(DateTime startDate, DateTime endDate, bool skipPrivateEntries,
                                      IDictionary <string, object> sourceCalendarSpecificData,
                                      IDictionary <string, object> destinationCalendarSpecificData)
        {
            //Update status
            CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.Line);
            CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.SourceReading,
                                                         SourceCalendarService.CalendarServiceName);

            //Get source calendar
            SourceAppointments =
                SourceCalendarService.GetCalendarEventsInRangeAsync(startDate, endDate, skipPrivateEntries,
                                                                    sourceCalendarSpecificData)
                .Result;
            if (SourceAppointments == null)
            {
                CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.SourceReadFailed);
                CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.Line);
                return(false);
            }
            //Update status
            CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.SourceRead,
                                                         SourceCalendarService.CalendarServiceName, SourceAppointments.Count);
            CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.Line);
            CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.DestReading,
                                                         DestinationCalendarService.CalendarServiceName);

            //Get destination calendar
            DestinationAppointments =
                DestinationCalendarService.GetCalendarEventsInRangeAsync(startDate, endDate, skipPrivateEntries,
                                                                         destinationCalendarSpecificData).Result;
            if (DestinationAppointments == null)
            {
                CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.DestReadFailed);
                CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.Line);
                return(false);
            }
            CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.DestRead,
                                                         DestinationCalendarService.CalendarServiceName, DestinationAppointments.Count);
            CalendarSyncStatus = StatusHelper.GetMessage(SyncStateEnum.Line);

            return(true);
        }