Exemple #1
0
        private void SendOppdatering()
        {
            var receiverId = appSettings.FiksIOConfig.SendToAccountId;                                                               // Receiver id as Guid
            var senderId   = appSettings.FiksIOConfig.FiksIoAccountId;                                                               // Sender id as Guid

            var konto = client.Lookup(new LookupRequest("KOMM:0825", "no.ks.fiks.gi.arkivintegrasjon.oppdatering.forenklet.v1", 3)); //TODO for å finne receiverId
            //Prosess også?

            var messageRequest = new MeldingRequest(
                mottakerKontoId: receiverId,
                avsenderKontoId: senderId,
                meldingType: "no.ks.fiks.gi.arkivintegrasjon.oppdatering.basis.oppdatersaksmappe.v1");                       // Message type as string
                                                                                                                             //Se oversikt over meldingstyper på https://github.com/ks-no/fiks-io-meldingstype-katalog/tree/test/schema

            //Konverterer OppdaterSaksmappe til arkivmelding xml
            var inng         = MessageSamples.GetOppdaterSaksmappeAnsvarligPaaFagsystemnoekkel("Fagsystem X", "1234", "Testing Testesen", "id343463346");
            var arkivmelding = ArkivmeldingFactory.GetArkivmelding(inng);
            var payload      = ArkivmeldingSerializeHelper.Serialize(arkivmelding);

            //Lager FIKS IO melding
            var payloads = new List <IPayload> {
                new StringPayload(payload, "oppdatersaksmappe.xml")
            };

            //Sender til FIKS IO (arkiv løsning)
            var msg = client.Send(messageRequest, payloads).Result;

            Console.WriteLine("Melding OppdaterSaksmappeAnsvarligPaaFagsystemnoekkel " + msg.MeldingId.ToString() + " sendt..." + msg.MeldingType);
            Console.WriteLine(payload);
        }
Exemple #2
0
        private void OnReceivedMelding(object sender, MottattMeldingArgs mottatt)
        {
            //Se oversikt over meldingstyper på https://github.com/ks-no/fiks-io-meldingstype-katalog/tree/test/schema

            // Process the message
            var arkivmeldingXmlSchemaSet = new XmlSchemaSet();

            arkivmeldingXmlSchemaSet.Add("http://www.arkivverket.no/standarder/noark5/arkivmelding/v2", Path.Combine("Schema", "arkivmelding.xsd"));
            arkivmeldingXmlSchemaSet.Add("http://www.arkivverket.no/standarder/noark5/metadatakatalog/v2", Path.Combine("Schema", "metadatakatalog.xsd"));

            var sokXmlSchemaSet = new XmlSchemaSet();

            sokXmlSchemaSet.Add("http://www.arkivverket.no/standarder/noark5/sok", Path.Combine("Schema", "sok.xsd"));

            var xmlValidationErrorOccured = false;

            if (ArkivintegrasjonMeldingTypeV1.IsBasis(mottatt.Melding.MeldingType))
            {
                var validationResult         = new List <List <string> >();
                var deserializedArkivmelding = new arkivmelding();
                Console.WriteLine($"Melding {mottatt.Melding.MeldingId} {mottatt.Melding.MeldingType} mottas...");

                //TODO håndtere meldingen med ønsket funksjonalitet
                if (mottatt.Melding.HasPayload)
                { // Verify that message has payload
                    IAsicReader reader = new AsiceReader();
                    using (var inputStream = mottatt.Melding.DecryptedStream.Result)
                        using (var asice = reader.Read(inputStream))
                        {
                            foreach (var asiceReadEntry in asice.Entries)
                            {
                                using (var entryStream = asiceReadEntry.OpenStream())
                                {
                                    if (asiceReadEntry.FileName.Contains(".xml")) //TODO regel på navning? alltid arkivmelding.xml?
                                    {
                                        //TODO validere arkivmelding og evt sende feil om den ikke er ok for arkivering
                                        validationResult = new XmlValidation().ValidateXml(
                                            entryStream,
                                            arkivmeldingXmlSchemaSet
                                            );
                                        if (validationResult[0].Count > 0)
                                        {
                                            xmlValidationErrorOccured = true;
                                        }
                                        var          newEntryStream = asiceReadEntry.OpenStream();
                                        StreamReader reader1        = new StreamReader(newEntryStream);
                                        string       text           = reader1.ReadToEnd();
                                        deserializedArkivmelding = ArkivmeldingSerializeHelper.DeSerialize(text);
                                        Console.WriteLine(text);
                                    }
                                    else
                                    {
                                        Console.WriteLine($"Mottatt vedlegg: {asiceReadEntry.FileName}");
                                    }
                                }
                            }
                            // Check that all digests declared in the manifest are valid
                            if (asice.DigestVerifier.Verification().AllValid)
                            {
                                // Do something
                            }
                            else
                            {
                                // Handle error
                            }
                        }
                    if (xmlValidationErrorOccured) // Ugyldig forespørsel
                    {
                        var ugyldigforespørsel = new Ugyldigforespørsel
                        {
                            ErrorId       = Guid.NewGuid().ToString(),
                            Feilmelding   = "Feilmelding:\n" + string.Join("\n ", validationResult[0]),
                            CorrelationId = Guid.NewGuid().ToString()
                        };
                        mottatt.SvarSender.Ack(); // Ack message to remove it from the queue
                        var errorMessage = mottatt.SvarSender.Svar(FeilmeldingMeldingTypeV1.Ugyldigforespørsel, JsonConvert.SerializeObject(ugyldigforespørsel), "ugyldigforespørsel.json").Result;
                        Console.WriteLine($"Svarmelding {errorMessage.MeldingId} {errorMessage.MeldingType} sendt");
                    }
                    else
                    {
                        mottatt.SvarSender.Ack(); // Ack message to remove it from the queue
                        var svarmsg = mottatt.SvarSender.Svar(ArkivintegrasjonMeldingTypeV1.Mottatt).Result;
                        Console.WriteLine($"Svarmelding {svarmsg.MeldingId} {svarmsg.MeldingType} sendt...");
                        Console.WriteLine("Melding er mottatt i arkiv ok ......");
                    }
                }
                else   // Ugyldig forespørsel
                {
                    var ugyldigforespørsel = new Ugyldigforespørsel
                    {
                        ErrorId       = Guid.NewGuid().ToString(),
                        Feilmelding   = "Meldingen mangler innhold",
                        CorrelationId = Guid.NewGuid().ToString()
                    };

                    mottatt.SvarSender.Ack(); // Ack message to remove it from the queue
                    var svarmsg = mottatt.SvarSender.Svar(FeilmeldingMeldingTypeV1.Ugyldigforespørsel, JsonConvert.SerializeObject(ugyldigforespørsel), "ugyldigforespørsel.json").Result;
                    Console.WriteLine($"Svarmelding {svarmsg.MeldingId} {svarmsg.MeldingType} sendt");
                }

                if (!xmlValidationErrorOccured)
                {
                    var kvittering = new arkivmelding();
                    kvittering.tidspunkt = DateTime.Now;
                    var type = deserializedArkivmelding?.Items?[0]?.GetType();

                    if (type == typeof(saksmappe))
                    {
                        var mp = new saksmappe();
                        mp.systemID          = new systemID();
                        mp.systemID.Value    = Guid.NewGuid().ToString();
                        mp.saksaar           = DateTime.Now.Year.ToString();
                        mp.sakssekvensnummer = new Random().Next().ToString();

                        kvittering.Items = new List <saksmappe>()
                        {
                            mp
                        }.ToArray();
                    }
                    else if (type == typeof(journalpost))
                    {
                        var jp = new journalpost();

                        jp.systemID             = new systemID();
                        jp.systemID.Value       = Guid.NewGuid().ToString();
                        jp.journalaar           = DateTime.Now.Year.ToString();
                        jp.journalsekvensnummer = new Random().Next().ToString();
                        jp.journalpostnummer    = new Random().Next(1, 100).ToString();

                        kvittering.Items = new List <journalpost>()
                        {
                            jp
                        }.ToArray();
                    }
                    //TODO simulerer at arkivet arkiverer og nøkler skal returneres

                    string payload = ArkivmeldingSerializeHelper.Serialize(kvittering);

                    var svarmsg2 = mottatt.SvarSender.Svar(ArkivintegrasjonMeldingTypeV1.Kvittering, payload, "arkivmelding.xml").Result;
                    Console.WriteLine("$Svarmelding {svarmsg2.MeldingId} {svarmsg2.MeldingType} sendt...");
                    Console.WriteLine("Arkivering er ok ......");
                }
            }
            else if (ArkivintegrasjonMeldingTypeV1.IsSok(mottatt.Melding.MeldingType))
            {
                var validationResult = new List <List <string> >();
                Console.WriteLine("Melding " + mottatt.Melding.MeldingId + " " + mottatt.Melding.MeldingType + " mottas...");

                //TODO håndtere meldingen med ønsket funksjonalitet

                if (mottatt.Melding.HasPayload)
                { // Verify that message has payload
                    IAsicReader reader = new AsiceReader();
                    using (var inputStream = mottatt.Melding.DecryptedStream.Result)
                        using (var asice = reader.Read(inputStream))
                        {
                            foreach (var asiceReadEntry in asice.Entries)
                            {
                                using (var entryStream = asiceReadEntry.OpenStream())
                                {
                                    if (asiceReadEntry.FileName.Contains(".xml")) //TODO regel på navning? alltid arkivmelding.xml?
                                    {
                                        validationResult = new XmlValidation().ValidateXml(
                                            entryStream,
                                            sokXmlSchemaSet
                                            );
                                        if (validationResult[0].Count > 0)
                                        {
                                            xmlValidationErrorOccured = true;
                                        }
                                        var reader1 = new StreamReader(entryStream);
                                        var text    = reader1.ReadToEnd();
                                        Console.WriteLine("Søker etter: " + text);
                                    }
                                    else
                                    {
                                        Console.WriteLine("Mottatt vedlegg: " + asiceReadEntry.FileName);
                                    }
                                }
                            }
                        }
                    if (xmlValidationErrorOccured)
                    {
                        var ugyldigforespørsel = new Ugyldigforespørsel
                        {
                            ErrorId       = Guid.NewGuid().ToString(),
                            Feilmelding   = "Feilmelding:\n" + string.Join("\n ", validationResult[0]),
                            CorrelationId = Guid.NewGuid().ToString()
                        };
                        var errorMessage = mottatt.SvarSender.Svar(FeilmeldingMeldingTypeV1.Ugyldigforespørsel, JsonConvert.SerializeObject(ugyldigforespørsel), "ugyldigforespørsel.json").Result;
                        Console.WriteLine($"Svarmelding {errorMessage.MeldingId} {errorMessage.MeldingType} sendt");
                        mottatt.SvarSender.Ack(); // Ack message to remove it from the queue
                    }
                }

                //Konverterer til arkivmelding xml
                var simulertSokeresultat = MessageSamples.GetForenkletArkivmeldingInngåendeMedSaksreferanse();
                var arkivmelding         = ArkivmeldingFactory.GetArkivmelding(simulertSokeresultat);
                var payload = ArkivmeldingSerializeHelper.Serialize(arkivmelding);
                //Lager FIKS IO melding
                List <IPayload> payloads = new List <IPayload>();
                payloads.Add(new StringPayload(payload, "arkivmelding.xml"));

                mottatt.SvarSender.Ack(); // Ack message to remove it from the queue
                var svarmsg = mottatt.SvarSender.Svar(ArkivintegrasjonMeldingTypeV1.InnsynSokResultat, payloads).Result;
                Console.WriteLine("Svarmelding " + svarmsg.MeldingId + " " + svarmsg.MeldingType + " sendt...");
                Console.WriteLine("Melding er håndtert i arkiv ok ......");
            }
            else if (ArkivintegrasjonMeldingTypeV1.IsAvansert(mottatt.Melding.MeldingType))
            {
                Console.WriteLine("Melding " + mottatt.Melding.MeldingId + " " + mottatt.Melding.MeldingType + " mottas...");
                //TODO håndtere meldingen med ønsket funksjonalitet
                Console.WriteLine("Melding er håndtert i arkiv ok ......");
                mottatt.SvarSender.Ack(); // Ack message to remove it from the queue
            }
            else
            {
                Console.WriteLine("Ukjent melding i køen som avvises " + mottatt.Melding.MeldingId + " " + mottatt.Melding.MeldingType);
                mottatt.SvarSender.Nack(); // Nack message to remove it from the queue
            }
        }
Exemple #3
0
        private void SendInngåendeBrukerhistorie3_1()
        {
            var receiverId = appSettings.FiksIOConfig.SendToAccountId;                                                    // Receiver id as Guid
            var senderId   = appSettings.FiksIOConfig.FiksIoAccountId;                                                    // Sender id as Guid

            var konto = client.Lookup(new LookupRequest("KOMM:0825", "no.geointegrasjon.arkiv.oppdatering.basis.v1", 3)); //TODO for å finne receiverId
            //Prosess også?

            var messageRequest = new MeldingRequest(
                mottakerKontoId: receiverId,
                avsenderKontoId: senderId,
                meldingType: "no.geointegrasjon.arkiv.oppdatering.basis.arkivmelding.v1");                       // Message type as string
            //Se oversikt over meldingstyper på https://github.com/ks-no/fiks-io-meldingstype-katalog/tree/test/schema

            //Fagsystem definerer ønsket struktur
            var inng = new ArkivmeldingForenkletInnkommende
            {
                sluttbrukerIdentifikator = "9hs2ir",
                nyInnkommendeJournalpost = new InnkommendeJournalpost
                {
                    tittel                   = "Startlån søknad(Ref=e4reke, SakId=e4reke)",
                    mottattDato              = DateTime.Today,
                    dokumentetsDato          = DateTime.Today.AddDays(-2),
                    offentlighetsvurdertDato = DateTime.Today,
                    referanseEksternNoekkel  =
                        new EksternNoekkel {
                        fagsystem = "Fagsystem X", noekkel = "e4reke"
                    },
                    mottaker =
                        new List <Korrespondansepart>
                    {
                        new Korrespondansepart()
                        {
                            navn = "Test kommune",
                            enhetsidentifikator =
                                new Enhetsidentifikator()
                            {
                                organisasjonsnummer = "123456789"
                            },
                            postadresse = new EnkelAdresse()
                            {
                                adresselinje1 = "Startlån avd",
                                adresselinje2 = "Rådhusgate 1",
                                postnr        = "3801",
                                poststed      = "Bø"
                            }
                        }
                    },
                    avsender = new List <Korrespondansepart>
                    {
                        new Korrespondansepart()
                        {
                            navn     = "Anita Søker",
                            personid = new Personidentifikator()
                            {
                                personidentifikatorType = "F", personidentifikatorNr = "12345678901"
                            },
                            postadresse = new EnkelAdresse()
                            {
                                adresselinje1 = "Gate 1", postnr = "3801", poststed = "Bø"
                            }
                        }
                    },
                    hoveddokument =
                        new ForenkletDokument {
                        tittel = "Søknad om startlån", filnavn = "søknad.pdf"
                    },
                    vedlegg = new List <ForenkletDokument>
                    {
                        new ForenkletDokument()
                        {
                            tittel = "Vedlegg 1", filnavn = "vedlegg.pdf"
                        }
                    }
                }
            };

            //Konverterer til arkivmelding xml
            var arkivmelding = ArkivmeldingFactory.GetArkivmelding(inng);
            var payload      = ArkivmeldingSerializeHelper.Serialize(arkivmelding);

            //Lager FIKS IO melding
            var payloads = new List <IPayload>
            {
                new StringPayload(payload, "innkommendejournalpost.xml"),
                new FilePayload(Path.Combine("samples", "søknad.pdf")),
                new FilePayload(Path.Combine("samples", "vedlegg.pdf"))
            };

            //Sender til FIKS IO (arkiv løsning)
            var msg = client.Send(messageRequest, payloads).Result;

            Console.WriteLine("Melding " + msg.MeldingId.ToString() + " sendt..." + msg.MeldingType + "...med 2 vedlegg");
            Console.WriteLine(payload);
        }
Exemple #4
0
        private void SendUtgåendeUtvidet()
        {
            var receiverId = appSettings.FiksIOConfig.SendToAccountId;                                                           // Receiver id as Guid
            var senderId   = appSettings.FiksIOConfig.FiksIoAccountId;                                                           // Sender id as Guid

            var konto = client.Lookup(new LookupRequest("KOMM:0825", "no.geointegrasjon.arkiv.oppdatering.arkivmelding.v1", 3)); //TODO for å finne receiverId
            //Prosess også?

            var messageRequest = new MeldingRequest(
                mottakerKontoId: receiverId,
                avsenderKontoId: senderId,
                meldingType: "no.geointegrasjon.arkiv.oppdatering.arkivmeldingUtgaaende.v1");                       // Message type as string
            //Se oversikt over meldingstyper på https://github.com/ks-no/fiks-io-meldingstype-katalog/tree/test/schema

            //Fagsystem definerer ønsket struktur
            var utg = new ArkivmeldingForenkletUtgaaende
            {
                sluttbrukerIdentifikator = "Fagsystemets brukerid",
                nyUtgaaendeJournalpost   = new UtgaaendeJournalpost
                {
                    referanseEksternNoekkel = new EksternNoekkel
                    {
                        fagsystem = "Fagsystem X", noekkel = Guid.NewGuid().ToString()
                    }
                }
            };

            utg.nyUtgaaendeJournalpost.tittel = "Tillatelse til ...";

            utg.nyUtgaaendeJournalpost.internAvsender = new List <KorrespondansepartIntern>
            {
                new KorrespondansepartIntern()
                {
                    saksbehandler = "Sigve Saksbehandler"
                }
            };

            utg.nyUtgaaendeJournalpost.mottaker = new List <Korrespondansepart>
            {
                new Korrespondansepart()
                {
                    navn        = "Mons Mottaker",
                    postadresse = new EnkelAdresse()
                    {
                        adresselinje1 = "Gate 1", postnr = "3801", poststed = "Bø"
                    }
                },
                new Korrespondansepart()
                {
                    navn        = "Foretak Mottaker",
                    postadresse = new EnkelAdresse()
                    {
                        adresselinje1 = "Forretningsgate 1", postnr = "3801", poststed = "Bø"
                    }
                }
            };

            utg.nyUtgaaendeJournalpost.hoveddokument = new ForenkletDokument
            {
                tittel = "Vedtak om tillatelse til ...", filnavn = "vedtak.pdf"
            };

            utg.nyUtgaaendeJournalpost.vedlegg = new List <ForenkletDokument>();
            var vedlegg1 = new ForenkletDokument {
                tittel = "Vedlegg 1", filnavn = "vedlegg.pdf"
            };

            utg.nyUtgaaendeJournalpost.vedlegg.Add(vedlegg1);

            //osv...

            //Konverterer til arkivmelding xml
            var arkivmelding = ArkivmeldingFactory.GetArkivmelding(utg);

            //TODO redigere arkivmelding

            var payload = ArkivmeldingSerializeHelper.Serialize(arkivmelding);

            //Lager FIKS IO melding
            var payloads = new List <IPayload>
            {
                new StringPayload(payload, "utgaaendejournalpost.xml"),
                new FilePayload(Path.Combine("samples", "vedtak.pdf")),
                new FilePayload(Path.Combine("samples", "vedlegg.pdf"))
            };

            //Sender til FIKS IO (arkiv løsning)
            var msg = client.Send(messageRequest, payloads).Result;

            Console.WriteLine("Melding " + msg.MeldingId.ToString() + " sendt..." + msg.MeldingType + "...med 2 vedlegg");
            Console.WriteLine(payload);
        }
Exemple #5
0
        private void SendInngående()
        {
            var receiverId = appSettings.FiksIOConfig.SendToAccountId;                                                               // Receiver id as Guid
            var senderId   = appSettings.FiksIOConfig.FiksIoAccountId;                                                               // Sender id as Guid

            var konto = client.Lookup(new LookupRequest("KOMM:0825", "no.ks.fiks.gi.arkivintegrasjon.oppdatering.forenklet.v1", 3)); //TODO for å finne receiverId
            //Prosess også?

            //Fagsystem definerer ønsket struktur
            var inng = new ArkivmeldingForenkletInnkommende
            {
                sluttbrukerIdentifikator = "Fagsystemets brukerid",
                nyInnkommendeJournalpost = new InnkommendeJournalpost
                {
                    tittel                   = "Bestilling av oppmålingsforretning ...",
                    mottattDato              = DateTime.Today,
                    dokumentetsDato          = DateTime.Today.AddDays(-2),
                    offentlighetsvurdertDato = DateTime.Today,
                    referanseEksternNoekkel  =
                        new EksternNoekkel
                    {
                        fagsystem = "Fagsystem X", noekkel = "e4712424-883c-4068-9cb7-97ac679d7232"
                    },
                    internMottaker =
                        new List <KorrespondansepartIntern>
                    {
                        new KorrespondansepartIntern()
                        {
                            administrativEnhet          = "Oppmålingsetaten",
                            referanseAdministrativEnhet = "b631f24b-48fb-4b5c-838e-6a1f7d56fae2"
                        }
                    },
                    mottaker =
                        new List <Korrespondansepart>
                    {
                        new Korrespondansepart()
                        {
                            navn = "Test kommune",
                            enhetsidentifikator =
                                new Enhetsidentifikator()
                            {
                                organisasjonsnummer = "123456789"
                            },
                            postadresse = new EnkelAdresse()
                            {
                                adresselinje1 = "Oppmålingsetaten",
                                adresselinje2 = "Rådhusgate 1",
                                postnr        = "3801",
                                poststed      = "Bø"
                            }
                        }
                    },
                    avsender = new List <Korrespondansepart>
                    {
                        new Korrespondansepart()
                        {
                            navn     = "Anita Avsender",
                            personid = new Personidentifikator()
                            {
                                personidentifikatorType = "F", personidentifikatorNr = "12345678901"
                            },
                            postadresse = new EnkelAdresse()
                            {
                                adresselinje1 = "Gate 1", postnr = "3801", poststed = "Bø"
                            }
                        }
                    },
                    hoveddokument =
                        new ForenkletDokument
                    {
                        tittel = "Rekvisisjon av oppmålingsforretning", filnavn = "rekvisisjon.pdf"
                    },
                    vedlegg = new List <ForenkletDokument>
                    {
                        new ForenkletDokument()
                        {
                            tittel = "Vedlegg 1", filnavn = "vedlegg.pdf"
                        }
                    },
                }
            };

            //osv...

            //Konverterer til arkivmelding xml
            var arkivmelding = ArkivmeldingFactory.GetArkivmelding(inng);
            var payload      = ArkivmeldingSerializeHelper.Serialize(arkivmelding);

            //Lager FIKS IO melding
            var payloads = new List <IPayload>
            {
                new StringPayload(payload, "innkommendejournalpost.xml"),
                new FilePayload(Path.Combine("samples", "rekvisisjon.pdf")),
                new FilePayload(Path.Combine("samples", "vedlegg.pdf"))
            };

            var messageRequest = new MeldingRequest(
                mottakerKontoId: receiverId,
                avsenderKontoId: senderId,
                meldingType: "no.ks.fiks.gi.arkivintegrasjon.oppdatering.basis.arkivmelding.v1");           // Message type as string
            //Se oversikt over meldingstyper på https://github.com/ks-no/fiks-io-meldingstype-katalog/tree/test/schema
            //Sender til FIKS IO (arkiv løsning)
            var msg = client.Send(messageRequest, payloads).Result;

            Console.WriteLine("Melding ny inngående journalpost " + msg.MeldingId.ToString() + " sendt..." + msg.MeldingType + "...med 2" +
                              " vedlegg");
            Console.WriteLine(payload);
        }