private static void BusinessSpecificMetadataSample() { string GROUP_ID = $"gr-{Guid.NewGuid().ToString()}"; string STRING_FIELD_ID = $"f-{Guid.NewGuid().ToString()}"; string DOUBLE_FIELD_ID = $"f-{Guid.NewGuid().ToString()}"; string LONG_FIELD_ID = $"f-{Guid.NewGuid().ToString()}"; //Create a business-specific metadata group MetadataGroupInfo newGroup = new MetadataGroupInfo(GROUP_ID, "BSM Group Name", "BSM Group Description"); MetadataGroupInfo savedGroup = client.PutBsmGroup(newGroup); Console.WriteLine( $"Created new group: GroupId={savedGroup.GroupId}, GroupDescription={savedGroup.GroupDescription}, GroupName={savedGroup.GroupName}"); Console.WriteLine(); //Create a new string field with predefined values "value 1", "value 2" and "value 3" MetadataFieldInfo newFieldStr = new MetadataFieldInfo(STRING_FIELD_ID, "BSM Field String", "BSM Field Description", FieldType.String, new List <object>() { "value 1", "value 2", "value 3" }); MetadataFieldInfo savedFieldStr = client.PutBsmField(GROUP_ID, newFieldStr); Console.WriteLine( $"Created new field: FieldId={savedFieldStr.FieldId}, FieldType={savedFieldStr.FieldType}, FieldName={savedFieldStr.FieldName}, FieldValues={string.Join(",", savedFieldStr.FieldValues)}"); Console.WriteLine(); //Create a new long field with predefined values 1 and 2 MetadataFieldInfo newFieldLong = new MetadataFieldInfo(LONG_FIELD_ID, "BSM Field Long", "BSM Field Description", FieldType.Long, new List <object>() { 1L, 2L }); MetadataFieldInfo savedFieldLong = client.PutBsmField(GROUP_ID, newFieldLong); Console.WriteLine( $"Created new field: FieldId={savedFieldLong.FieldId}, FieldType={savedFieldLong.FieldType}, FieldName={savedFieldLong.FieldName}, FieldValues={string.Join(",", savedFieldLong.FieldValues)}"); //Create a new double field with no predefined values MetadataFieldInfo newFieldDouble = new MetadataFieldInfo(DOUBLE_FIELD_ID, "BSM Field Double", "BSM Field Description", FieldType.Double); MetadataFieldInfo savedFielDouble = client.PutBsmField(GROUP_ID, newFieldDouble); Console.WriteLine( $"Created new field: FieldId={newFieldDouble.FieldId}, FieldType={newFieldDouble.FieldType}, FieldName={newFieldDouble.FieldName}"); Console.WriteLine(); //Update string field - add new field value, remove an old one savedFieldStr.FieldValues.Add("value 4"); savedFieldStr.FieldValues.Remove("value 3"); MetadataFieldInfo updatedField = client.PutBsmField(GROUP_ID, savedFieldStr); Console.WriteLine( $"Updated field: FieldId={updatedField.FieldId}, FieldType={updatedField.FieldType}, FieldName={updatedField.FieldName}, FieldValues={string.Join(",", updatedField.FieldValues)}"); Console.WriteLine(); //Get the business-specific metadata registry for a specific group BusinessSpecificMetadataInfo metadataInfo = client.BsmRegistry(GROUP_ID); Console.WriteLine("BusinessSpecificMetadataInfo:"); //Print the registry for this group foreach (MetadataGroupInfo groupInfo in metadataInfo.Groups) { Console.WriteLine( $"GroupInfo: GroupId={groupInfo.GroupId}, GroupName={groupInfo.GroupName}"); foreach (MetadataFieldInfo fieldInfo in groupInfo.Fields) { Console.WriteLine( $" ---- FieldInfo: FieldId={fieldInfo.FieldId}, FieldType={fieldInfo.FieldType}, FieldName={fieldInfo.FieldName}"); } } Console.WriteLine("--------------------------------------------------------------------------"); Console.WriteLine(); //Create an Arkiv, Arkivdel and one Mappe //Set VirksomhetsspesifikkeMetadata for the Mappe var arkivskaper = new Arkivskaper("B67", "Jack Smith"); var arkiv = new Arkiv("Arkiv - VirksomhetsspesifikkeMetadata Example"); var arkivdel = new Arkivdel("Arkivdel - VirksomhetsspesifikkeMetadata Example"); var mappe = new Mappe("Mappe with VirksomhetsspesifikkeMetadata"); //Add three meta-data fields to the Mappe: mappe.VirksomhetsspesifikkeMetadata.AddBsmFieldValues(GROUP_ID, STRING_FIELD_ID, "value 1", "value 2"); mappe.VirksomhetsspesifikkeMetadata.AddBsmFieldValues(GROUP_ID, DOUBLE_FIELD_ID, 1.2); mappe.VirksomhetsspesifikkeMetadata.AddBsmFieldValues(GROUP_ID, LONG_FIELD_ID, 2L); var transactionResponse = client.Transaction() .Save(arkiv) .Save(arkivskaper) .Link(arkiv.LinkArkivskaper(arkivskaper)) .Save(arkivdel) .Link(arkivdel.LinkArkiv(arkiv)) .Save(mappe) .Link(mappe.LinkArkivdel(arkivdel)) .Commit(); //Get the saved Mappe mappe = transactionResponse.Saved[mappe.Id] as Mappe; //Print the VirksomhetsspesifikkeMetadata of the Mappe Console.WriteLine("Added VirksomhetsspesifikkeMetadata to folder:"); BsmGroupsMap groupsMap = mappe.VirksomhetsspesifikkeMetadata; foreach (var groupId in groupsMap.Keys) { BsmFieldsMap fieldsMap = mappe.VirksomhetsspesifikkeMetadata[groupId]; foreach (var fieldId in fieldsMap.Keys) { BsmFieldValues values = fieldsMap[fieldId]; Console.WriteLine( $"GroupId={groupId}, FieldId={fieldId}, ValueType={values.Type}, Values=[{string.Join(",", values.Values)}]"); } } Console.WriteLine(); //Update the VirksomhetsspesifikkeMetadata of the Mappe //Add one more string value to the string field //To add a new field value, simply add it to the set of values of the particular field //Use the "AddBsmFieldValues" method, if you want to override the existing set of values with a new one mappe.VirksomhetsspesifikkeMetadata[GROUP_ID][STRING_FIELD_ID].Values.Add("value 4"); //Remove one of the values of the double field mappe.VirksomhetsspesifikkeMetadata.DeleteBsmFieldValue(GROUP_ID, DOUBLE_FIELD_ID, 2.6); //Completely remove the long field mappe.VirksomhetsspesifikkeMetadata.DeleteBsmField(GROUP_ID, LONG_FIELD_ID); //It is also possible to remove a whole group: //mappe.VirksomhetsspesifikkeMetadata.DeleteBsmGroup(groupIdentfier); transactionResponse = client.Transaction() .Save(mappe) .Commit(); //Make query to fetch the Mappe QueryResponse <Mappe> queryResponse = client.Query <Mappe>("id=@id", 1) .AddQueryParam("@id", mappe.Id) .Execute(); mappe = queryResponse.Results.First(); //Print the new VirksomhetsspesifikkeMetadata Console.WriteLine("Updated VirksomhetsspesifikkeMetadata of folder:"); groupsMap = mappe.VirksomhetsspesifikkeMetadata; foreach (var groupId in groupsMap.Keys) { BsmFieldsMap fieldsMap = mappe.VirksomhetsspesifikkeMetadata[groupId]; foreach (var fieldId in fieldsMap.Keys) { BsmFieldValues values = fieldsMap[fieldId]; Console.WriteLine( $"GroupId={groupId}, FieldId={fieldId}, ValueType={values.Type}, Values=[{string.Join(",", values.Values)}]"); } } Console.WriteLine(); //Delete field client.DeleteBsmField(GROUP_ID, LONG_FIELD_ID); Console.WriteLine($"Deleted field with FieldId={LONG_FIELD_ID}"); Console.WriteLine(); //Delete folder client.Transaction().Delete(mappe).Commit(); Console.WriteLine($"Deleted folder"); Console.WriteLine(); //Delete group client.DeleteBsmGroup(GROUP_ID); Console.WriteLine($"Deleted group with GroupId={GROUP_ID}"); Console.WriteLine(); }
private static void ArchiveSample() { Console.WriteLine($"Archive example {Environment.NewLine}"); //Create a new Arkiv with an Arkivskaper //Create a new Arkivdel in the Arkiv var newArkivskaper = new Arkivskaper("B7-23-W5", "John Smith"); var newArkiv = new Arkiv("Arkiv"); var newArkivdel = new Arkivdel("2007/8"); var transactionResponse = client.Transaction() .Save(newArkiv) .Save(newArkivskaper) .Save(newArkivdel) .Link(newArkiv.LinkArkivskaper(newArkivskaper)) .Link(newArkivdel.LinkArkiv(newArkiv)) .Commit(); var arkiv = transactionResponse.Saved[newArkiv.Id] as Arkiv; Console.WriteLine( $"Created Arkiv: Id={arkiv.Id}, Arkivstatus={arkiv.Arkivstatus.Code}, OpprettetDato={arkiv.OpprettetDato}"); var arkivdel = transactionResponse.Saved[newArkivdel.Id] as Arkivdel; Console.WriteLine($"Created Arkivdel: Id={arkivdel.Id}, Arkivdelstatus={arkivdel.Arkivdelstatus.Code}"); //Get all available values for the Mappetype code list var mappetypeList = client.CodeLists("Mappe", "mappetype").First(); if (mappetypeList.Values.Count == 0) { Console.WriteLine( "Can not create an instance of Mappe because there are not available values in the Mappetype code list!"); return; } var mappetypeCode = mappetypeList.Values.First().Code; //Create a new Mappe var newMappe = new Mappe("Barnehage Tilbud") { Beskrivelse = "Mappe Beskrivelse", Mappetype = new Mappetype(mappetypeCode) }; transactionResponse = client.Transaction() .Save(newMappe) .Link(newMappe.LinkArkivdel(arkivdel)) .Commit(); var mappe = transactionResponse.Saved[newMappe.Id] as Mappe; Console.WriteLine($"Created Mappe: Id={mappe.Id}, Tittel: {mappe.Tittel}"); //Create a child Mappe in the Mappe var newBarnMappe = new Mappe("Tilbud (Smith, John)"); var savedObjects = client.Transaction() .Save(newBarnMappe) .Link(newBarnMappe.LinkForelderMappe(mappe)) .Commit() .Saved; var barnMappe = savedObjects[newBarnMappe.Id] as Mappe; Console.WriteLine( $"Created a new Mappe (Id={barnMappe.Id}, Tittel={barnMappe.Tittel}) in Mappe with Id {mappe.Id}"); //Find all children of the Mappe var queryResults = client.Query <Mappe>("refForelderMappe.id=@forelderMappeId", 10) .AddQueryParam("@forelderMappeId", mappe.Id) .Execute(); Console.WriteLine($"Found {queryResults.Results.Count()} Mappe objects in Mappe with Id {mappe.Id}"); //Create a new Basisregistrering in the child Mappe //Link one Korrespondansepart to the Basisregistrering var newBasisregistrering = new Basisregistrering("Tilbud (Smith, John, Godkjent)"); var newKorrespondansepart = new Korrespondansepart(Korrespondanseparttype.MOTTAKER, "John Smith"); savedObjects = client.Transaction() .Save(newBasisregistrering) .Save(newKorrespondansepart) .Link(newBasisregistrering.LinkMappe(barnMappe)) .Link(newBasisregistrering.LinkKorrespondansepart(newKorrespondansepart)) .Commit() .Saved; var basisregistrering = savedObjects[newBasisregistrering.Id] as Basisregistrering; Console.WriteLine( $"Created Basisregistrering: Id={basisregistrering.Id}, Tittel={basisregistrering.Tittel}"); //Upload a file Dokumentfil dokumentfil; using (var inputStream = File.OpenRead(testDoc)) { dokumentfil = client.Upload(inputStream, "godkjenning.pdf"); } Console.WriteLine($"Uploaded file {testDoc}"); //Get available values for the Dokumenttype code list var dokumenttypeList = client.CodeLists("Dokument", "dokumenttype").First(); if (dokumenttypeList.Values.Count == 0) { Console.WriteLine( "Can not create an instance of Dokument because there are not available values in the Dokumenttype code list!"); return; } var dokumenttypeCode = dokumenttypeList.Values.First().Code; //Create a new Dokument and Dokumentversjon using the uploaded file //Link the Dokument to the Basisregistrering var newDokument = new Dokument(new Dokumenttype(dokumenttypeCode), "Tilbud (Smith, John, Godkjent)", TilknyttetRegistreringSom.HOVEDDOKUMENT); var newDokumentversjon = new Dokumentversjon(Variantformat.PRODUKSJONSFORMAT, ".pdf", dokumentfil); savedObjects = client.Transaction() .Save(newDokument) .Link(newDokument.LinkRegistrering(basisregistrering)) .Save(newDokumentversjon) .Link(newDokumentversjon.LinkDokument(newDokument)) .Commit() .Saved; var dokumentversjon = savedObjects[newDokumentversjon.Id] as Dokumentversjon; Console.WriteLine( $"Created Dokumentversjon: Id={dokumentversjon.Id}, Versjonsnummer: {dokumentversjon.Versjonsnummer}, Filstoerrelse: {dokumentversjon.Filstoerrelse}"); }