static void OnReceivedMelding(object sender, MottattMeldingArgs fileArgs) { //Se oversikt over meldingstyper på https://github.com/ks-no/fiks-io-meldingstype-katalog/tree/test/schema // Process the message if (fileArgs.Melding.MeldingType == "no.geointegrasjon.plan.oppdatering.oppretteplanidentinput.v1") { Console.WriteLine("Melding " + fileArgs.Melding.MeldingId + " " + fileArgs.Melding.MeldingType + " mottas..."); //TODO håndtere meldingen med ønsket funksjonalitet string payload = File.ReadAllText("sampleNyPlanident.json"); var svarmsg = fileArgs.SvarSender.Svar("no.geointegrasjon.plan.oppdatering.planidentopprettet.v1", payload, "NyPlanident.json").Result; Console.WriteLine("Svarmelding " + svarmsg.MeldingId + " " + svarmsg.MeldingType + " sendt..."); Console.WriteLine(payload); fileArgs.SvarSender.Ack(); // Ack message to remove it from the queue } else if (fileArgs.Melding.MeldingType == "no.geointegrasjon.plan.oppdatering.planleggingigangsatt.v1") { Console.WriteLine("Melding " + fileArgs.Melding.MeldingId + " " + fileArgs.Melding.MeldingType + " mottas..."); //TODO håndtere meldingen med ønsket funksjonalitet var svarmsg = fileArgs.SvarSender.Svar("no.ks.geointegrasjon.ok.v1").Result; Console.WriteLine("Svarmelding " + svarmsg.MeldingId + " " + svarmsg.MeldingType + " sendt..."); fileArgs.SvarSender.Ack(); // Ack message to remove it from the queue } else if (fileArgs.Melding.MeldingType == "no.geointegrasjon.plan.oppdatering.planvedtak.v1") { Console.WriteLine("Melding " + fileArgs.Melding.MeldingId + " " + fileArgs.Melding.MeldingType + " mottas..."); //TODO håndtere meldingen med ønsket funksjonalitet var svarmsg = fileArgs.SvarSender.Svar("no.ks.geointegrasjon.ok.v1").Result; Console.WriteLine("Svarmelding " + svarmsg.MeldingId + " " + svarmsg.MeldingType + " sendt..."); fileArgs.SvarSender.Ack(); // Ack message to remove it from the queue } else if (fileArgs.Melding.MeldingType == "no.ks.geointegrasjon.ok.v1") { Console.WriteLine("Melding " + fileArgs.Melding.MeldingId + " " + fileArgs.Melding.MeldingType + " mottas..."); //TODO håndtere meldingen med ønsket funksjonalitet Console.WriteLine("Melding er håndtert i ePlansak ok ......"); fileArgs.SvarSender.Ack(); // Ack message to remove it from the queue } else { Console.WriteLine("Ubehandlet melding i køen " + fileArgs.Melding.MeldingId + " " + fileArgs.Melding.MeldingType); //fileArgs.SvarSender.Ack(); // Ack message to remove it from the queue } }
private static List <List <string> > ValidatePayload(MottattMeldingArgs mottatt, string meldingsType) { var errorMessages = new List <List <string> >() { new(), new() }; 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(".json")) { errorMessages = ValidateJsonFile(new StreamReader(entryStream).ReadToEnd(), Path.Combine("Schema", $"{meldingsType}.schema.json")); } else { Log.Information($"Mottatt vedlegg: {asiceReadEntry.FileName}"); } } } } return(errorMessages); }
static void OnReceivedMelding(object sender, MottattMeldingArgs fileArgs) { //Se oversikt over meldingstyper på https://github.com/ks-no/fiks-io-meldingstype-katalog/tree/test/schema // Process the message if (fileArgs.Melding.MeldingType == "no.geointegrasjon.plan.oppdatering.planidentopprettet.v1") { Console.WriteLine("Melding " + fileArgs.Melding.MeldingId + " " + fileArgs.Melding.MeldingType + " mottas..."); //TODO håndtere meldingen med ønsket funksjonalitet Console.WriteLine("ePlansak oppdaterer sak med tiltdelt arealplanident......"); fileArgs.SvarSender.Ack(); // Ack message to remove it from the queue } else if (fileArgs.Melding.MeldingType == "no.ks.geointegrasjon.ok.v1") { Console.WriteLine("Melding " + fileArgs.Melding.MeldingId + " " + fileArgs.Melding.MeldingType + " mottas..."); //TODO håndtere meldingen med ønsket funksjonalitet Console.WriteLine("Melding er håndtert i planregister ok ......"); fileArgs.SvarSender.Ack(); // Ack message to remove it from the queue } else { Console.WriteLine("Ubehandlet melding i køen " + fileArgs.Melding.MeldingId + " " + fileArgs.Melding.MeldingType); } }
private static void HandleSendUtvalgssak(MottattMeldingArgs mottatt) { if (mottatt.Melding.HasPayload) { var errorMessages = ValidatePayload(mottatt, PolitiskBehandlingMeldingTypeV1.SendUtvalgssak); if (errorMessages[0].Count == 0) { var svarmsg = mottatt.SvarSender.Svar(PolitiskBehandlingMeldingTypeV1.SendUtvalgssakKvittering).Result; Log.Information("Svarmelding på {MeldingID} med svar {MeldingID} type {MeldingType} sendt", mottatt.Melding.MeldingId, svarmsg.MeldingId, svarmsg.MeldingType); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue } else { Log.Error("Feil i validering av sendutvalgsak"); mottatt.SvarSender.Svar(FeilmeldingMeldingTypeV1.Ugyldigforespørsel, string.Join("\n ", errorMessages[0]), "feil.txt"); Log.Error("Feilmelding: " + string.Join("\n ", errorMessages[0])); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue } } else { var svarmsg = mottatt.SvarSender .Svar(FeilmeldingMeldingTypeV1.Ugyldigforespørsel, "Meldingen mangler innhold", "feil.txt").Result; Log.Error("Svarmelding på mottatt melding {MeldingID} med svar {MeldingID} type {MeldingType}, mottatt melding mangler innhold", mottatt.Melding.MeldingId, svarmsg.MeldingId, svarmsg.MeldingType); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue } }
private static void HandleRequestWithoutReturnPayload(MottattMeldingArgs mottatt, string jsonSchemaName, string returnMeldingstype) { Console.WriteLine("Melding " + mottatt.Melding.MeldingId + " " + mottatt.Melding.MeldingType + " mottas..."); if (mottatt.Melding.HasPayload) { // Verify that message has payload List <List <string> > errorMessages = new List <List <string> >() { new List <string>(), new List <string>() }; 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("payload.json")) { errorMessages = ValidateJsonFile(new StreamReader(entryStream).ReadToEnd(), Path.Combine("Schema", jsonSchemaName + ".schema.json")); } else { Console.WriteLine("Mottatt vedlegg: " + asiceReadEntry.FileName); } } } } if (errorMessages[0].Count == 0) { var svarmsg = mottatt.SvarSender.Svar(returnMeldingstype).Result; Console.WriteLine("Svarmelding " + svarmsg.MeldingId + " " + svarmsg.MeldingType + " sendt..."); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue } else { Console.WriteLine("Feil i validering med jsonschema: ", jsonSchemaName); mottatt.SvarSender.Svar(FeilmeldingType.Ugyldigforespørsel, String.Join("\n ", errorMessages[0]), "feil.txt"); Console.WriteLine(String.Join("\n ", errorMessages[0])); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue } } else { var svarmsg = mottatt.SvarSender.Svar(FeilmeldingType.Ugyldigforespørsel, "Meldingen mangler innhold", "feil.txt").Result; Console.WriteLine("Svarmelding " + svarmsg.MeldingId + " " + svarmsg.MeldingType + " Meldingen mangler innhold"); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue } }
private static void HandleHentMoeteplan(MottattMeldingArgs mottatt) { if (mottatt.Melding.HasPayload) { var errorMessages = ValidatePayload(mottatt, PolitiskBehandlingMeldingTypeV1.HentMoeteplan); if (errorMessages[0].Count == 0) { var payload = File.ReadAllText("sampleResultat.json"); errorMessages = ValidateJsonFile(payload, Path.Combine("Schema", PolitiskBehandlingMeldingTypeV1.ResultatMoeteplan + ".schema.json")); if (errorMessages[0].Count == 0) { var svarmsg = mottatt.SvarSender .Svar(PolitiskBehandlingMeldingTypeV1.ResultatMoeteplan, payload, "resultat.json").Result; Log.Information( "Svarmelding på {MeldingID} med svar {MeldingID} type {MeldingType} sendt", mottatt.Melding.MeldingId, svarmsg.MeldingId, svarmsg.MeldingType); Log.Information(payload); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue } else { Log.Error("Feil i validering av resultatmøteplan"); mottatt.SvarSender.Svar(FeilmeldingMeldingTypeV1.Ugyldigforespørsel, string.Join("\n ", errorMessages[0]), "feil.txt"); Log.Error("Feilmelding: " + string.Join("\n ", errorMessages[0])); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue } } else { Log.Error("Feil i validering av hentmøteplan"); mottatt.SvarSender.Svar(FeilmeldingMeldingTypeV1.Ugyldigforespørsel, string.Join("\n ", errorMessages[0]), "feil.txt"); Log.Error("Feilmelding: " + string.Join("\n ", errorMessages[0])); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue } } else { var svarmsg = mottatt.SvarSender .Svar(FeilmeldingMeldingTypeV1.Ugyldigforespørsel, "Meldingen mangler innhold", "feil.txt").Result; Log.Error("Svarmelding på {MeldingID} med svar {MeldingID} type {MeldingType}, meldingen mangler innhold", mottatt.Melding.MeldingId, svarmsg.MeldingId, svarmsg.MeldingType); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue } }
private static void OnReceivedMelding(object sender, MottattMeldingArgs mottatt) { Log.Information("Melding med meldingid {MeldingID} og type {MeldingType} håndteres", mottatt.Melding.MeldingId, mottatt.Melding.MeldingType); switch (mottatt.Melding.MeldingType) { // Process the message case PolitiskBehandlingMeldingTypeV1.HentUtvalg: HandleHentUtvalg(mottatt); break; case PolitiskBehandlingMeldingTypeV1.HentMoeteplan: HandleHentMoeteplan(mottatt); break; case PolitiskBehandlingMeldingTypeV1.SendUtvalgssak: HandleSendUtvalgssak(mottatt); break; case PolitiskBehandlingMeldingTypeV1.SendOrienteringssak: HandleSendOrienteringssak(mottatt); break; case PolitiskBehandlingMeldingTypeV1.SendDelegertVedtak: //TODO håndtere meldingen med ønsket funksjonalitet var svarmsg = mottatt.SvarSender.Svar(PolitiskBehandlingMeldingTypeV1.SendDelegertVedtakKvittering).Result; Log.Information("Svarmelding på {MeldingID} med svar {MeldingID} type {MeldingType} sendt", mottatt.Melding.MeldingId, svarmsg.MeldingId, svarmsg.MeldingType); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue break; case PolitiskBehandlingMeldingTypeV1.SendVedtakFraUtvalgKvittering: //TODO håndtere meldingen med ønsket funksjonalitet Log.Information("Melding SendVedtakFraUtvalgKvittering er håndtert i ePlansak ok"); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue break; default: Log.Error("OBS! Ubehandlet melding i køen {MeldingID} type {MeldingType}", mottatt.Melding.MeldingId, mottatt.Melding.MeldingType); //We dont ACK the message. Let it go to timeout in Fiks-IO break; } }
private static void HandleHentUtvalg(MottattMeldingArgs mottatt) { var payload = File.ReadAllText("sampleResultatUtvalg.json"); var errorMessages = ValidateJsonFile(payload, Path.Combine("Schema", PolitiskBehandlingMeldingTypeV1.ResultatUtvalg + ".schema.json")); if (errorMessages[0].Count == 0) { var svarmsg = mottatt.SvarSender.Svar(PolitiskBehandlingMeldingTypeV1.ResultatUtvalg, payload, "resultat.json") .Result; Log.Information("Svarmelding på {MeldingID} med svar {MeldingID} type {MeldingType} sendt", mottatt.Melding.MeldingId, svarmsg.MeldingId, svarmsg.MeldingType); Log.Debug(payload); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue } else { Log.Error("Feil i validering av utvalg"); mottatt.SvarSender.Svar(FeilmeldingMeldingTypeV1.Ugyldigforespørsel, string.Join("\n ", errorMessages[0]), "feil.txt"); Log.Error("Feilmeldinger:" + string.Join("\n ", errorMessages[0])); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue } }
static void OnReceivedMelding(object sender, MottattMeldingArgs mottatt) { // Process the message if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.FinnPlanerForMatrikkelenhet) { string payload = File.ReadAllText("sampleResultatPlanerForMatrikkelenhet.json"); string jsonSchemaName = FiksPlanMeldingtypeV2.FinnPlanerForMatrikkelenhet; string payloadJsonSchemaName = FiksPlanMeldingtypeV2.ResultatFinnPlanerForMatrikkelenhet; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatFinnPlanerForMatrikkelenhet; HandleRequestWithReturnPayload(mottatt, jsonSchemaName, payload, payloadJsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.FinnPlaner) { string payload = File.ReadAllText("sampleResultatPlaner.json"); string jsonSchemaName = FiksPlanMeldingtypeV2.FinnPlaner; string payloadJsonSchemaName = FiksPlanMeldingtypeV2.ResultatFinnPlaner; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatFinnPlaner; HandleRequestWithReturnPayload(mottatt, jsonSchemaName, payload, payloadJsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.FinnDispensasjoner) { string payload = File.ReadAllText("sampleResultatDispensasjoner.json"); string jsonSchemaName = FiksPlanMeldingtypeV2.FinnDispensasjoner; string payloadJsonSchemaName = FiksPlanMeldingtypeV2.ResultatFinnDispensasjoner; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatFinnDispensasjoner; HandleRequestWithReturnPayload(mottatt, jsonSchemaName, payload, payloadJsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.FinnPlanbehandlinger) { string payload = File.ReadAllText("sampleResultatPlanbehandling.json"); string jsonSchemaName = FiksPlanMeldingtypeV2.FinnPlanbehandlinger; string payloadJsonSchemaName = FiksPlanMeldingtypeV2.ResultatFinnPlanbehandlinger; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatFinnPlanbehandlinger; HandleRequestWithReturnPayload(mottatt, jsonSchemaName, payload, payloadJsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.HentArealplan) { string payload = File.ReadAllText("sampleResultatArealplan.json"); string jsonSchemaName = FiksPlanMeldingtypeV2.HentArealplan; string payloadJsonSchemaName = FiksPlanMeldingtypeV2.ResultatHentArealplan; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatHentArealplan; HandleRequestWithReturnPayload(mottatt, jsonSchemaName, payload, payloadJsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.SjekkMidlertidigForbud) { string payload = File.ReadAllText("sampleResultatMidlertidigForbud.json"); string jsonSchemaName = FiksPlanMeldingtypeV2.SjekkMidlertidigForbud; string payloadJsonSchemaName = FiksPlanMeldingtypeV2.ResultatSjekkMidlertidigForbud; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatSjekkMidlertidigForbud; HandleRequestWithReturnPayload(mottatt, jsonSchemaName, payload, payloadJsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.OpprettArealplan) { string payload = File.ReadAllText("sampleNyPlanident.json"); string jsonSchemaName = FiksPlanMeldingtypeV2.OpprettArealplan; string payloadJsonSchemaName = FiksPlanMeldingtypeV2.ResultatOpprettArealplan; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatOpprettArealplan; HandleRequestWithReturnPayload(mottatt, jsonSchemaName, payload, payloadJsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.RegistrerPlanbehandling) { string jsonSchemaName = FiksPlanMeldingtypeV2.RegistrerPlanbehandling; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatMottat; HandleRequestWithoutReturnPayload(mottatt, jsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.RegistrertPlanavgrensning) { string jsonSchemaName = FiksPlanMeldingtypeV2.RegistrertPlanavgrensning; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatMottat; HandleRequestWithoutReturnPayload(mottatt, jsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.RegistrerDispensasjonFraPlan) { string jsonSchemaName = FiksPlanMeldingtypeV2.RegistrerDispensasjonFraPlan; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatMottat; HandleRequestWithoutReturnPayload(mottatt, jsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.OppdaterArealplan) { string jsonSchemaName = FiksPlanMeldingtypeV2.OppdaterArealplan; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatMottat; HandleRequestWithoutReturnPayload(mottatt, jsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.FinnPlandokumenter) { string payload = File.ReadAllText("samplePlandokumenter.json"); string jsonSchemaName = FiksPlanMeldingtypeV2.FinnPlandokumenter; string payloadJsonSchemaName = FiksPlanMeldingtypeV2.ResultatFinnPlandokumenter; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatFinnPlandokumenter; string attachment = "Oversiktskart.pdf"; HandleRequestWithReturnPayload(mottatt, jsonSchemaName, payload, payloadJsonSchemaName, returnMeldingstype, attachment); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.FinnPlanerForOmraade) { string payload = File.ReadAllText("sampleResultatPlaner.json"); string jsonSchemaName = FiksPlanMeldingtypeV2.FinnPlanerForOmraade; string payloadJsonSchemaName = FiksPlanMeldingtypeV2.ResultatFinnPlanerForOmraade; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatFinnPlanerForOmraade; HandleRequestWithReturnPayload(mottatt, jsonSchemaName, payload, payloadJsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.HentAktoerer) { string payload = File.ReadAllText("sampleAktører.json"); string jsonSchemaName = FiksPlanMeldingtypeV2.HentAktoerer; string payloadJsonSchemaName = FiksPlanMeldingtypeV2.ResultatHentAktoerer; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatHentAktoerer; HandleRequestWithReturnPayload(mottatt, jsonSchemaName, payload, payloadJsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.HentBboxForPlan) { string payload = File.ReadAllText("sampleBbox.json"); string jsonSchemaName = FiksPlanMeldingtypeV2.HentBboxForPlan; string payloadJsonSchemaName = FiksPlanMeldingtypeV2.ResultatHentBboxForPlan; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatHentBboxForPlan; HandleRequestWithReturnPayload(mottatt, jsonSchemaName, payload, payloadJsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.HentGjeldendePlanbestemmelser) { string payload = File.ReadAllText("samplePlanbestemmelser.json"); string jsonSchemaName = FiksPlanMeldingtypeV2.HentGjeldendePlanbestemmelser; string payloadJsonSchemaName = FiksPlanMeldingtypeV2.ResultatHentGjeldendePlanbestemmelser; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatHentGjeldendePlanbestemmelser; HandleRequestWithReturnPayload(mottatt, jsonSchemaName, payload, payloadJsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.HentKodeliste) { string payload = File.ReadAllText("sampleKodeliste.json"); string jsonSchemaName = FiksPlanMeldingtypeV2.HentKodeliste; string payloadJsonSchemaName = FiksPlanMeldingtypeV2.ResultatHentKodeliste; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatHentKodeliste; HandleRequestWithReturnPayload(mottatt, jsonSchemaName, payload, payloadJsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.HentPlanomraader) { string payload = File.ReadAllText("samplePlanområde.json"); string jsonSchemaName = FiksPlanMeldingtypeV2.HentPlanomraader; string payloadJsonSchemaName = FiksPlanMeldingtypeV2.ResultatHentPlanomraader; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatHentPlanomraader; HandleRequestWithReturnPayload(mottatt, jsonSchemaName, payload, payloadJsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.HentRelatertePlaner) { string payload = File.ReadAllText("sampleRelatertPlan.json"); string jsonSchemaName = FiksPlanMeldingtypeV2.HentRelatertePlaner; string payloadJsonSchemaName = FiksPlanMeldingtypeV2.ResultatHentRelatertePlaner; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatHentRelatertePlaner; HandleRequestWithReturnPayload(mottatt, jsonSchemaName, payload, payloadJsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.OppdaterDispensasjon) { string jsonSchemaName = FiksPlanMeldingtypeV2.OppdaterDispensasjon; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatMottat; HandleRequestWithoutReturnPayload(mottatt, jsonSchemaName, returnMeldingstype); } else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.HentPlanfil) { string payload = File.ReadAllText("samplePlanfil.json"); string jsonSchemaName = FiksPlanMeldingtypeV2.HentPlanfil; string payloadJsonSchemaName = FiksPlanMeldingtypeV2.ResultatHentPlanfil; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatHentPlanfil; HandleRequestWithReturnPayload(mottatt, jsonSchemaName, payload, payloadJsonSchemaName, returnMeldingstype); } //else if (mottatt.Melding.MeldingType == "no.ks.fiks.gi.plan.oppdatering.planleggingigangsatt.v2") //{ // Console.WriteLine("Melding " + mottatt.Melding.MeldingId + " " + mottatt.Melding.MeldingType + " mottas..."); // string jsonSchemaName = "no.ks.fiks.gi.plan.oppdatering.planleggingigangsatt.v2.schema.json"; // string returnMeldingstype = "no.ks.fiks.gi.plan.oppdatering.mottatt.v2"; // HandleRequestWithoutReturnPayload(mottatt, jsonSchemaName, returnMeldingstype); //} //else if (mottatt.Melding.MeldingType == "no.ks.fiks.gi.plan.oppdatering.planvedtakikraftsatt.v2") //{ // Console.WriteLine("Melding " + mottatt.Melding.MeldingId + " " + mottatt.Melding.MeldingType + " mottas..."); // string jsonSchemaName = "no.ks.fiks.gi.plan.oppdatering.planvedtakikraftsatt.v2.schema.json"; // string returnMeldingstype = "no.ks.fiks.gi.plan.oppdatering.mottatt.v2"; // HandleRequestWithoutReturnPayload(mottatt, jsonSchemaName, returnMeldingstype); //} else if (mottatt.Melding.MeldingType == FiksPlanMeldingtypeV2.RegistrerMidlertidigForbudMotTiltak) { Console.WriteLine("Melding " + mottatt.Melding.MeldingId + " " + mottatt.Melding.MeldingType + " mottas..."); string jsonSchemaName = FiksPlanMeldingtypeV2.RegistrerMidlertidigForbudMotTiltak; string returnMeldingstype = FiksPlanMeldingtypeV2.ResultatMottat; HandleRequestWithoutReturnPayload(mottatt, jsonSchemaName, returnMeldingstype); } }
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 } }
static void OnReceivedMelding(object sender, MottattMeldingArgs fileArgs) { //Se oversikt over meldingstyper på https://github.com/ks-no/fiks-io-meldingstype-katalog/tree/test/schema // Process the message if (fileArgs.Melding.MeldingType == "no.ks.fiks.gi.arkivintegrasjon.mottatt.v1") { Console.WriteLine("(Svar på " + fileArgs.Melding.SvarPaMelding + ") Melding " + fileArgs.Melding.MeldingId + " " + fileArgs.Melding.MeldingType + " mottas..."); //TODO håndtere meldingen med ønsket funksjonalitet if (fileArgs.Melding.HasPayload) { // Verify that message has payload IAsicReader reader = new AsiceReader(); using (var inputStream = fileArgs.Melding.DecryptedStream.Result) using (var asice = reader.Read(inputStream)) { foreach (var asiceReadEntry in asice.Entries) { using (var entryStream = asiceReadEntry.OpenStream()) { StreamReader reader1 = new StreamReader(entryStream); string text = reader1.ReadToEnd(); Console.WriteLine(text); } } } } Console.WriteLine("Melding er håndtert i fagsystem ok ......"); fileArgs.SvarSender.Ack(); // Ack message to remove it from the queue } else if (fileArgs.Melding.MeldingType == "no.ks.fiks.gi.arkivintegrasjon.kvittering.v1") { Console.WriteLine("(Svar på " + fileArgs.Melding.SvarPaMelding + ") Melding " + fileArgs.Melding.MeldingId + " " + fileArgs.Melding.MeldingType + " mottas..."); //TODO håndtere meldingen med ønsket funksjonalitet if (fileArgs.Melding.HasPayload) { // Verify that message has payload IAsicReader reader = new AsiceReader(); using (var inputStream = fileArgs.Melding.DecryptedStream.Result) using (var asice = reader.Read(inputStream)) { foreach (var asiceReadEntry in asice.Entries) { using (var entryStream = asiceReadEntry.OpenStream()) { StreamReader reader1 = new StreamReader(entryStream); string text = reader1.ReadToEnd(); Console.WriteLine(text); } } } } Console.WriteLine("Melding er håndtert i fagsystem ok ......"); fileArgs.SvarSender.Ack(); // Ack message to remove it from the queue } else if (fileArgs.Melding.MeldingType == "no.ks.fiks.gi.arkivintegrasjon.feil.v1") { Console.WriteLine("(Svar på " + fileArgs.Melding.SvarPaMelding + ") Melding " + fileArgs.Melding.MeldingId + " " + fileArgs.Melding.MeldingType + " mottas..."); //TODO håndtere meldingen med ønsket funksjonalitet if (fileArgs.Melding.HasPayload) { // Verify that message has payload IAsicReader reader = new AsiceReader(); using (var inputStream = fileArgs.Melding.DecryptedStream.Result) using (var asice = reader.Read(inputStream)) { foreach (var asiceReadEntry in asice.Entries) { using (var entryStream = asiceReadEntry.OpenStream()) { StreamReader reader1 = new StreamReader(entryStream); string text = reader1.ReadToEnd(); Console.WriteLine(text); } } } } Console.WriteLine("Melding er håndtert i fagsystem ok ......"); fileArgs.SvarSender.Ack(); // Ack message to remove it from the queue } else if (fileArgs.Melding.MeldingType == "no.ks.fiks.gi.arkivintegrasjon.innsyn.sok.resultat.v1") { Console.WriteLine("(Svar på " + fileArgs.Melding.SvarPaMelding + ") Melding " + fileArgs.Melding.MeldingId + " " + fileArgs.Melding.MeldingType + " mottas..."); if (fileArgs.Melding.HasPayload) { // Verify that message has payload IAsicReader reader = new AsiceReader(); using (var inputStream = fileArgs.Melding.DecryptedStream.Result) using (var asice = reader.Read(inputStream)) { foreach (var asiceReadEntry in asice.Entries) { using (var entryStream = asiceReadEntry.OpenStream()) { StreamReader reader1 = new StreamReader(entryStream); string text = reader1.ReadToEnd(); Console.WriteLine(text); } } // Check that all digests declared in the manifest are valid if (asice.DigestVerifier.Verification().AllValid) { // Do something } else { // Handle error } } } Console.WriteLine("Melding er håndtert i fagsystem ok ......"); fileArgs.SvarSender.Ack(); // Ack message to remove it from the queue } else { Console.WriteLine("Ubehandlet melding i køen " + fileArgs.Melding.MeldingId + " " + fileArgs.Melding.MeldingType); //fileArgs.SvarSender.Ack(); // Ack message to remove it from the queue } }
static 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 if (mottatt.Melding.MeldingType == "no.ks.fiks.politisk.behandling.tjener.resultatmøteplan.v1") { Console.WriteLine("Melding " + mottatt.Melding.MeldingId + " " + mottatt.Melding.MeldingType + " mottas..."); //TODO håndtere meldingen med ønsket funksjonalitet Console.WriteLine("Melding er håndtert ok ......"); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue } else if (mottatt.Melding.MeldingType == "no.ks.fiks.politisk.behandling.tjener.sendvedtakfrautvalg.v1") { Console.WriteLine("Melding " + mottatt.Melding.MeldingId + " " + mottatt.Melding.MeldingType + " mottas..."); if (mottatt.Melding.HasPayload) { List <List <string> > errorMessages = new List <List <string> >() { new List <string>(), new List <string>() }; 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(".json")) { errorMessages = ValidateJsonFile(new StreamReader(entryStream).ReadToEnd(), Path.Combine("schema", "no.ks.fiks.politisk.behandling.sendvedtakfrautvalg.v1.schema.json")); } else { Console.WriteLine("Mottatt vedlegg: " + asiceReadEntry.FileName); } } } } if (errorMessages[0].Count == 0) { var svarmsg2 = mottatt.SvarSender.Svar("no.ks.fiks.politisk.behandling.mottatt.v1").Result; Console.WriteLine("Svarmelding " + svarmsg2.MeldingId + " " + svarmsg2.MeldingType + " sendt..."); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue } else { Console.WriteLine("Feil i validering av sendvedtakfrautvalg"); var errorMessage = mottatt.SvarSender.Svar("no.ks.fiks.kvittering.ugyldigforespørsel.v1", String.Join("\n ", errorMessages[0]), "feil.txt").Result; Console.WriteLine(String.Join("\n ", errorMessages[0])); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue } } else { var svarmsg = mottatt.SvarSender.Svar("no.ks.fiks.kvittering.ugyldigforespørsel.v1", "Meldingen mangler innhold", "feil.txt").Result; Console.WriteLine("Svarmelding " + svarmsg.MeldingId + " " + svarmsg.MeldingType + " Meldingen mangler innhold"); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue } } else if (mottatt.Melding.MeldingType == "no.ks.geointegrasjon.ok.v1") { Console.WriteLine("Melding " + mottatt.Melding.MeldingId + " " + mottatt.Melding.MeldingType + " mottas..."); //TODO håndtere meldingen med ønsket funksjonalitet Console.WriteLine("Melding er håndtert ok ......"); mottatt.SvarSender.Ack(); // Ack message to remove it from the queue } else { Console.WriteLine("Ubehandlet melding i køen " + mottatt.Melding.MeldingId + " " + mottatt.Melding.MeldingType); } }
private async void OnMottattMelding(object sender, MottattMeldingArgs mottattMeldingArgs) { Logger.Information("Henter melding med MeldingId: {MeldingId}", mottattMeldingArgs.Melding.MeldingId); var payloads = new List <FiksPayload>(); if (mottattMeldingArgs.Melding.HasPayload) { try { // Verify that message has payload IAsicReader reader = new AsiceReader(); await using var inputStream = mottattMeldingArgs.Melding.DecryptedStream.Result; using var asice = reader.Read(inputStream); foreach (var asiceReadEntry in asice.Entries) { await using var entryStream = asiceReadEntry.OpenStream(); byte[] fileAsBytes; using (MemoryStream ms = new MemoryStream()) { entryStream.CopyTo(ms); fileAsBytes = ms.ToArray(); } payloads.Add(new FiksPayload() { Filename = asiceReadEntry.FileName, Payload = fileAsBytes }); } } catch (Exception e) { Logger.Error("Klarte ikke hente payload og melding blir dermed ikke parset. MeldingId: {MeldingId}, Error: {Message}", mottattMeldingArgs.Melding?.MeldingId, e.Message); mottattMeldingArgs.SvarSender?.Ack(); return; } } try { using var scope = _scopeFactory.CreateScope(); var context = scope.ServiceProvider.GetRequiredService <FiksIOMessageDBContext>(); var testSession = context.TestSessions.Include(t => t.FiksRequests).FirstOrDefaultAsync(t => t.FiksRequests.Any(r => r.MessageGuid.Equals(mottattMeldingArgs.Melding.SvarPaMelding))).Result; // Ikke optimalt? Det er gjort slik fordi man ikke vet om databasen har rukket å skrive før man får svar. var timesTried = 1; while (testSession == null && timesTried <= 5) { Thread.Sleep(1000); testSession = context.TestSessions.Include(t => t.FiksRequests).FirstOrDefault(t => t.FiksRequests.Any(r => r.MessageGuid.Equals(mottattMeldingArgs.Melding.SvarPaMelding))); timesTried++; } if (testSession != null) { var fiksRequest = testSession.FiksRequests.Find(r => r.MessageGuid.Equals(mottattMeldingArgs.Melding.SvarPaMelding)); var responseMessage = new FiksResponse { ReceivedAt = DateTime.Now, Type = mottattMeldingArgs.Melding.MeldingType, FiksPayloads = payloads }; if (fiksRequest == null) { mottattMeldingArgs.SvarSender?.Ack(); Logger.Error("Klarte ikke å matche svar-melding fra FIKS med en eksisterende forespørsel. Testsession med id {TestSessionId} funnet. Svarmelding forkastes. SvarPaMelding id: {Id}", testSession.Id, mottattMeldingArgs.Melding.SvarPaMelding); return; } fiksRequest.FiksResponses ??= new List <FiksResponse>(); fiksRequest.FiksResponses.Add(responseMessage); context.Entry(testSession).State = EntityState.Modified; await context.SaveChangesAsync(); } else { Logger.Error("Klarte ikke å matche svar-melding fra FIKS med en eksisterende testsesjon. Testsession ikke funnet. Svarmelding forkastes. SvarPaMelding id: {Id}", mottattMeldingArgs.Melding.SvarPaMelding); } } finally { mottattMeldingArgs.SvarSender?.Ack(); } }