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); }
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 } }
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); }
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); }
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); }