Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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}");
        }