public static OrderingIndexSnapshot GetOrderingIndexSnapshot(ElasticArchiveRecord entity, string unknowText = "") { var indexSnapShot = new OrderingIndexSnapshot { Darin = !string.IsNullOrEmpty(unknowText) ? unknowText : entity.WithinInfo, Dossiertitel = !string.IsNullOrEmpty(unknowText) ? unknowText : entity.Title, Hierarchiestufe = !string.IsNullOrEmpty(unknowText) ? unknowText : entity.Level, IdentifikationDigitalesMagazin = !string.IsNullOrEmpty(unknowText) ? unknowText : entity.PrimaryDataLink, Signatur = entity.ReferenceCode, VeId = entity.ArchiveRecordId, ZugaenglichkeitGemaessBga = entity.HasCustomProperty("zugänglichkeitGemässBga") ? entity.CustomFields.zugänglichkeitGemässBga : "", ZusaetzlicheInformationen = !string.IsNullOrEmpty(unknowText) ? unknowText : entity.Extent, ZeitraumDossier = !string.IsNullOrEmpty(unknowText) ? unknowText : entity.CreationPeriod?.Text, Schutzfristverzeichnung = !string.IsNullOrEmpty(unknowText) ? unknowText : entity.GetSchutzfristenVerzeichnung(), Publikationsrechte = !string.IsNullOrEmpty(unknowText) ? unknowText : entity.Publikationsrechte(), ZustaendigeStelle = !string.IsNullOrEmpty(unknowText) ? unknowText : entity.ZuständigeStelle(), Aktenzeichen = !string.IsNullOrEmpty(unknowText) ? unknowText : entity.Aktenzeichen() }; if (entity.Containers != null && entity.Containers.Any()) { indexSnapShot.BehaeltnisCode = !string.IsNullOrEmpty(unknowText) ? unknowText : string.Join("; ", entity.Containers.Select(c => c.ContainerCode)); indexSnapShot.Behaeltnistyp = !string.IsNullOrEmpty(unknowText) ? unknowText : string.Join("; ", entity.Containers.Select(c => c.ContainerType)); indexSnapShot.Standort = !string.IsNullOrEmpty(unknowText) ? unknowText : string.Join("; ", entity.Containers.Select(c => c.ContainerLocation)); } return(indexSnapShot); }
public void StoreDownloadReasonInHistory(ElasticArchiveRecord record, User user, UserAccess access, int reasonId) { using (var connection = new SqlConnection(connectionString)) { connection.Open(); using (var cmd = connection.CreateCommand()) { var bestandItem = record.ArchiveplanContext.FirstOrDefault(p => p.Level == "Bestand"); var bestandString = bestandItem == null ? string.Empty : bestandItem.RefCode + " " + bestandItem.Title; var teilbestandItem = record.ArchiveplanContext.FirstOrDefault(p => p.Level == "Teilbestand"); var teilbestandString = teilbestandItem == null ? string.Empty : teilbestandItem.RefCode + " " + teilbestandItem.Title; string zugaenglichkeitGemaessBga = record.HasCustomProperty("zugänglichkeitGemässBga") ? record.CustomFields.zugänglichkeitGemässBga : string.Empty; var asTokens = string.Join(", ", access.AsTokens); var ablieferndeStellen = string.Join(", ", user.AblieferndeStelleList.Select(a => a.Kuerzel)); cmd.CommandText = "INSERT INTO DownloadReasonHistory (UserId, DownloadedAt, ReasonId, VeId, " + "Signatur, Dossiertitel, Aktenzeichen, Entstehungszeitraum, Bestand, Teilbestand, Ablieferung, ZustaendigeStelleVe, " + "Schutzfristverzeichnung, ZugaenglichkeitGemaessBga, " + "FirstName, FamilyName, Organization, EmailAddress, RolePublicClient, AsAccessTokensUser, ZustaendigeStellenUser) " + "VALUES (@p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12, @p13, @p14, @p15, @p16, @p17, @p18, @p19, @p20, @p21)"; cmd.Parameters.Add(new SqlParameter { ParameterName = "p1", Value = access.UserId, SqlDbType = SqlDbType.NVarChar }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p2", Value = DateTime.Now, SqlDbType = SqlDbType.DateTime }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p3", Value = reasonId, SqlDbType = SqlDbType.Int }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p4", Value = ToDb(record.ArchiveRecordId), SqlDbType = SqlDbType.Int }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p5", Value = ToDb(record.ReferenceCode), SqlDbType = SqlDbType.NVarChar }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p6", Value = ToDb(record.Title), SqlDbType = SqlDbType.NVarChar }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p7", Value = ToDb(record.Aktenzeichen()), SqlDbType = SqlDbType.NVarChar }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p8", Value = ToDb(record.CreationPeriod.Text), SqlDbType = SqlDbType.NVarChar }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p9", Value = ToDb(bestandString), SqlDbType = SqlDbType.NVarChar }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p10", Value = ToDb(teilbestandString), SqlDbType = SqlDbType.NVarChar }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p11", Value = ToDb(record.Ablieferung()), SqlDbType = SqlDbType.NVarChar }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p12", Value = ToDb(record.ZuständigeStelle()), SqlDbType = SqlDbType.NVarChar }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p13", Value = ToDb(record.GetSchutzfristenVerzeichnung()), SqlDbType = SqlDbType.NVarChar }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p14", Value = ToDb(zugaenglichkeitGemaessBga), SqlDbType = SqlDbType.NVarChar }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p15", Value = ToDb(user.FirstName), SqlDbType = SqlDbType.NVarChar }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p16", Value = ToDb(user.FamilyName), SqlDbType = SqlDbType.NVarChar }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p17", Value = ToDb(user.Organization), SqlDbType = SqlDbType.NVarChar }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p18", Value = ToDb(user.EmailAddress), SqlDbType = SqlDbType.NVarChar }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p19", Value = ToDb(user.RolePublicClient), SqlDbType = SqlDbType.NVarChar }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p20", Value = ToDb(asTokens), SqlDbType = SqlDbType.NVarChar }); cmd.Parameters.Add(new SqlParameter { ParameterName = "p21", Value = ToDb(ablieferndeStellen), SqlDbType = SqlDbType.NVarChar }); cmd.ExecuteScalar(); } } }
private DossierDIP AddDossierData(IList <DossierDIP> dossierCollection, IList <ICmisExtensionElement> extensions, ElasticArchiveRecord dossierRecord, bool addDateiRefList, List <RepositoryFile> filesToIgnore) { Log.Verbose("Adding Dossier data with metadata: {extensions} and index record customfields {dossierRecord}", JsonConvert.SerializeObject(extensions), JsonConvert.SerializeObject(dossierRecord?.CustomFields)); var dossier = new DossierDIP { Aktenzeichen = string.IsNullOrEmpty(dossierRecord?.Aktenzeichen()) ? metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dossier/Dossier/Aktenzeichen") : dossierRecord.Aktenzeichen(), Zusatzmerkmal = string.IsNullOrEmpty(dossierRecord?.Zusatzmerkmal()) ? metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dossier/Dossier/Zusatzmerkmal") : dossierRecord.Zusatzmerkmal(), Titel = string.IsNullOrEmpty(dossierRecord?.Title) ? metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dossier/Dossier/Titel") : dossierRecord.Title, Inhalt = string.IsNullOrEmpty(dossierRecord?.WithinInfo) ? metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dossier/Dossier/Inhalt") : dossierRecord.WithinInfo, Id = metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:dossier/dossier@id"), Erscheinungsform = Enum.TryParse(metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dossier/Dossier/Erscheinungsform"), true, out ErscheinungsformDossier ef) ? ef : ErscheinungsformDossier.keineAngabe, Umfang = metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dossier/Dossier/Umfang"), FederfuehrendeOrganisationseinheit = metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dossier/Dossier/FederfuehrendeOrganisationseinheit"), Eroeffnungsdatum = metadataAccess.GetHistorischerZeitpunkt(extensions, "ARELDA:Dossier/Dossier/Eroeffnungsdatum"), Abschlussdatum = metadataAccess.GetHistorischerZeitpunkt(extensions, "ARELDA:Dossier/Dossier/Abschlussdatum"), Entstehungszeitraum = dossierRecord?.CreationPeriod == null ? metadataAccess.GetHistorischerZeitraum(extensions, "ARELDA:Dossier/Dossier/Entstehungszeitraum") : GetEntstehungszeitraum(dossierRecord.CreationPeriod), EntstehungszeitraumAnmerkung = string.IsNullOrEmpty(dossierRecord?.EntstehungszeitraumAnmerkung()) ? metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dossier/Dossier/EntstehungszeitraumAnmerkung") : dossierRecord.EntstehungszeitraumAnmerkung(), Klassifizierungskategorie = metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dossier/Dossier/Klassifizierungskategorie"), Datenschutz = bool.TryParse(metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dossier/Dossier/Datenschutz"), out var datenschutz) && datenschutz, Oeffentlichkeitsstatus = metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dossier/Dossier/Oeffentlichkeitsstatus"), OeffentlichkeitsstatusBegruendung = metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dossier/Dossier/OeffentlichkeitsstatusBegruendung"), SonstigeBestimmungen = metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dossier/Dossier/SonstigeBestimmungen"), // ToDO: In order to handle Vorgang we would need code that can handle collections. Currently we don't need that property. // Vorgang = metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dossier/Dossier/Vorgang"), Bemerkung = string.IsNullOrEmpty(dossierRecord?.ZusätzlicheInformationen()) ? metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:Dossier/Dossier/Bemerkung") : dossierRecord.ZusätzlicheInformationen(), DateiRef = addDateiRefList ? GetFilteredDateiRef(metadataAccess.GetExtendedPropertyValues(extensions, "ARELDA:Dossier/Dossier/DateiRef"), filesToIgnore) : null }; // Add optional data if (!string.IsNullOrEmpty(dossierRecord?.ReferenceCode)) { dossier.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Signatur", Value = dossierRecord.ReferenceCode }); } if (!string.IsNullOrEmpty(dossierRecord?.Level)) { dossier.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Stufe", Value = dossierRecord.Level }); } if (!string.IsNullOrEmpty(dossierRecord?.FormerReferenceCode)) { dossier.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Frühere Signaturen", Value = dossierRecord.FormerReferenceCode }); } if (dossierRecord?.ArchiveplanContext.Count > 0) { dossier.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Archivplankontext", Value = JsonConvert.SerializeObject(dossierRecord.ArchiveplanContext) }); } if (!string.IsNullOrEmpty(dossierRecord?.Land())) { dossier.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Land", Value = dossierRecord.Land() }); } if (!string.IsNullOrEmpty(dossierRecord?.Form())) { dossier.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Form", Value = dossierRecord.Form() }); } if (!string.IsNullOrEmpty(dossierRecord?.FrüheresAktenzeichen())) { dossier.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Früheres Aktenzeichen", Value = dossierRecord.FrüheresAktenzeichen() }); } if (!string.IsNullOrEmpty(dossierRecord?.PrimaryDataLink)) { dossier.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Identifikation digitales Magazin", Value = dossierRecord.PrimaryDataLink }); } if (dossierRecord?.CreationPeriod != null) { dossier.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "Entstehungszeitraum Anzeigetext", Value = dossierRecord.CreationPeriod.Text }); } var reihenfolge = metadataAccess.GetExtendedPropertyBagValue(extensions, "ARELDA:Dossier/Dossier/Zusatzdaten/Merkmal", "ReihenfolgeAnalogesDossier"); if (!string.IsNullOrEmpty(reihenfolge)) { dossier.zusatzDaten.Add(new ZusatzDatenMerkmal { Name = "ReihenfolgeAnalogesDossier", Value = reihenfolge }); } dossierCollection.Add(dossier); return(dossier); }