/// <summary> /// Checks the server for new, updated and deleted items and returns them. /// </summary> /// <returns>A collection with all new, updated and deleted items on serverside.</returns> public AppointmentSyncCollection GetUpdates() { AppointmentSyncCollection returnCollection = new AppointmentSyncCollection(); List <CalDavElement> responseListCalDav = GetAllItemsFromServer(); //Check for new and updated items foreach (var remoteitem in responseListCalDav) { String foundETag = _localStorage.FindEtag(remoteitem.Guid); if (foundETag == null) { returnCollection.AddList.Add(CalDavElementToAppointmentItemConverter.Convert(remoteitem)); _localStorage.WriteEntry(remoteitem.Guid, remoteitem.ETag, remoteitem.Url); } else if (foundETag != remoteitem.ETag) { returnCollection.UpdateList.Add(CalDavElementToAppointmentItemConverter.Convert(remoteitem)); _localStorage.EditETag(remoteitem.Guid, remoteitem.ETag); } } ; //Check for deleted items Boolean deleted; OutlookAppointment deletedAppointment = new OutlookAppointment(); List <String> guidsToDelete = new List <String>(); foreach (var localitem in _localStorage.GetAll()) { deleted = true; foreach (var remoteitem in responseListCalDav) { if (remoteitem.Guid.Equals(localitem.Key)) { deleted = false; } } if (deleted) { deletedAppointment.SyncID = localitem.Key; returnCollection.DeleteList.Add(deletedAppointment); guidsToDelete.Add(localitem.Key); } } foreach (var item in guidsToDelete) { _localStorage.DeleteEntry(item); } return(returnCollection); }