/// <summary> /// Gets the archive record from the indexRecords collection that matches the given dossier. /// </summary> /// <param name="folder">The folder.</param> /// <param name="indexRecords">The index records.</param> /// <returns>ElasticArchiveRecord.</returns> /// <exception cref="ArgumentOutOfRangeException">folder - Folder must be of type 'Dossier'</exception> private ElasticArchiveRecord GetArchiveRecordFromDossier(FolderInfo folder, List <ElasticArchiveRecord> indexRecords) { if (folder.FolderType != PackageFolderType.Dossier) { throw new ArgumentOutOfRangeException(nameof(folder), "Folder must be of type 'Dossier'"); } var extensions = folder.CmisFolder.GetExtensions(ExtensionLevel.Object); var packageId = metadataAccess.GetExtendedPropertyValue(extensions, "AIP-ID_Dossier-ID"); var archiveRecord = indexRecords.FirstOrDefault(a => a.PrimaryDataLink.Equals(packageId, StringComparison.InvariantCultureIgnoreCase)); if (archiveRecord != null) { Log.Verbose("Found archive record to dossier folder with id {id}. Archive record id is {ArchiveRecordId}", folder.Id, archiveRecord.ArchiveRecordId); } else { Log.Verbose("Unable to find archive record to dossier folder with id {id}.", folder.Id); } return(archiveRecord); }
public List <RepositoryFolder> GetFolders(string folderId) { var retVal = new List <RepositoryFolder>(); var folder = GetCmisFolder(folderId); if (folder != null) { var items = folder.GetChildren(); foreach (var item in items) { var subFolder = item as IFolder; if (subFolder != null) { var extensions = subFolder.GetExtensions(ExtensionLevel.Object); var isDossier = !string.IsNullOrEmpty(metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:dossier/dossier@id")); retVal.Add(GetRepositoryFolder(subFolder, extensions, isDossier)); } } } return(retVal); }