예제 #1
0
        private void RunButton_Click(object sender, EventArgs e)
        {
            // Save settings
            Properties.KppParser.Default.EpisodePath  = EpisodePathBox.Text;
            Properties.KppParser.Default.TjenestePath = TjenestePathBox.Text;
            Properties.KppParser.Default.Level1Name   = OrgNameBox.Text;
            Properties.KppParser.Default.Level1HerId  = OrgHerIdBox.Text;
            Properties.KppParser.Default.Level2Name   = OrgNameBox2.Text;
            Properties.KppParser.Default.Level2HerId  = OrgHerIdBox2.Text;
            Properties.KppParser.Default.Save();

            // Run
            var args = new Args
            {
                EpisodePath        = EpisodePathBox.Text,
                TjenestePath       = TjenestePathBox.Text,
                FraDato            = FromDatePicker.Value,
                TilDato            = ToDatePicker.Value,
                OrganizationName   = OrgNameBox.Text,
                OrganizationHerId  = OrgHerIdBox.Text,
                OrganizationName2  = OrgNameBox2.Text,
                OrganizationHerId2 = OrgHerIdBox2.Text,
                HDirHerId          = RadioTrial.Checked
                    ? _settings.HdirQa
                    : _settings.HdirProd,
                Leverandor     = _settings.Leverandor,
                NavnEpj        = _settings.NavnEpj,
                VersjonEpj     = _settings.VersjonEpj,
                ProgramVersion = _version,
            };

            if (!KppService.IsValid(args, out var errorMessage))
            {
                MessageBox.Show($"Kan ikke lage melding. Årsak:\n\n{errorMessage}", @"Ugyldig input", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            var fileDialog = new SaveFileDialog
            {
                OverwritePrompt = true,
                Filter          = @"XML filer|*.xml",
                AddExtension    = true,
                CheckPathExists = true,
                DefaultExt      = "xml",
                Title           = @"Velg hvor filen skal lagres",
                ValidateNames   = true
            };

            if (fileDialog.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }

            args.OutputPath = fileDialog.FileName;

            var progressForm = new ProgressForm(args);

            progressForm.ShowDialog();
        }
예제 #2
0
        public void KppService_ShouldCreateValidXml_WhenParsingKpp()
        {
            // arrange
            var args    = DefaultArgs();
            var schemas = SchemaLoader.LoadDirectory("Resources");

            // act
            KppService.Run(args, null);

            // assert
            Action verify = () => XmlUtils.ValidateXmlFile(args.OutputPath, schemas);

            verify.Should().NotThrow();
        }
예제 #3
0
        public void KppService_ShouldSetMsgHeadContent_WhenParsingKpp()
        {
            // arrange
            var args = DefaultArgs();

            // act
            KppService.Run(args, null);

            // assert
            var msgHead = XmlUtils.DeserializeFromFile <MsgHead>(args.OutputPath);

            msgHead.MsgInfo.Type.Should().BeEquivalentTo(new CS {
                V = "NPR_KPP", DN = "KPP melding"
            });
            msgHead.MsgInfo.GenDate.Should().BeSameDateAs(DateTime.Today);
            msgHead.MsgInfo.Sender.Should().BeEquivalentTo(new Sender
            {
                Organisation = new Organisation
                {
                    OrganisationName = args.OrganizationName,
                    Ident            = new[] { new Ident {
                                                   Id = args.OrganizationHerId, TypeId = new CV {
                                                       V = "HER", DN = "HER-Id", S = "9051"
                                                   }
                                               } }
                }
            });
            msgHead.MsgInfo.Receiver.Should().BeEquivalentTo(new Receiver
            {
                Organisation = new Organisation
                {
                    OrganisationName = "Helsedirektoratet",
                    Ident            = new[] { new Ident {
                                                   Id = args.HDirHerId, TypeId = new CV {
                                                       V = "HER", DN = "HER-Id", S = "9051"
                                                   }
                                               } }
                }
            });
            Guid.TryParse(msgHead.MsgInfo.MsgId, out _).Should().BeTrue();

            var refDoc = msgHead.Items.First().As <Document>().RefDoc;

            refDoc.Should().NotBeNull();
            refDoc.MsgType.Should().BeEquivalentTo(new CS {
                V = "XML", DN = "XML-instans"
            });
            refDoc.Item?.As <RefDocContent>()?.Melding.Should().NotBeNull();
        }
예제 #4
0
        public void KppService_ShouldSetKppMessageContent_WhenParsingKpp()
        {
            // arrange
            var args = DefaultArgs();

            var expectedMelding = XmlUtils.DeserializeFromFile <Melding>("Resources/Expectations/TestMelding.xml");
            var expectations    = expectedMelding.Institusjon;

            // act
            KppService.Run(args, null);

            // assert
            var file    = XmlUtils.DeserializeFromFile <MsgHead>(args.OutputPath);
            var melding = file.Items.First().As <Document>().RefDoc.Item.As <RefDocContent>().Melding;

            melding.Institusjon.Should().BeEquivalentTo(expectations);
        }
예제 #5
0
        public void KppService_ShouldSetMetadata_WhenParsingKpp()
        {
            // arrange
            var args = DefaultArgs();

            // act
            KppService.Run(args, null);

            // assert
            var file    = XmlUtils.DeserializeFromFile <MsgHead>(args.OutputPath);
            var melding = file.Items.First().As <Document>().RefDoc.Item.As <RefDocContent>().Melding;

            melding.versjonUt.Should().Be(args.ProgramVersion);
            melding.fraDatoPeriode.Should().Be(args.FraDato);
            melding.tilDatoPeriode.Should().Be(args.TilDato);
            melding.leverandor.Should().Be(args.Leverandor);
            melding.navnEPJ.Should().Be(args.NavnEpj);
            melding.versjonEPJ.Should().Be(args.VersjonEpj);
        }
예제 #6
0
        public void KppService_ShouldValidateCsvHeaders_WhenValidatingTjenesteInput(string fileName, string expectedError)
        {
            // arrange
            if (fileName != null)
            {
                fileName = $"Resources/TestData/{fileName}";
            }

            var args = DefaultArgs();

            args.TjenestePath = fileName;

            // act
            var isValid = KppService.IsValid(args, out var errorMessage);

            // assert
            isValid.Should().Be(expectedError == null);
            errorMessage.Should().Be(expectedError ?? string.Empty);
        }
예제 #7
0
 private DoWorkEventHandler OnDoWork(Args args)
 {
     return((o, e) =>
     {
         _worker.ReportProgress(ProgressBar.Minimum);
         try
         {
             KppService.Run(args, _worker.ReportProgress);
         }
         catch (Exception ex)
         {
             _worker.ReportProgress(ProgressBar.Value, "Noe gikk galt :(");
             var message = $"Noe gikk galt under opprettelse av meldingen.\n\nFeilmelding: {ex.Message}\n\n{ex.GetType()}\n\nVersjon: {args.ProgramVersion}";
             MessageBox.Show(message, @"Noe gikk galt", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
         finally
         {
             _worker.ReportProgress(ProgressBar.Maximum);
         }
     });
 }
예제 #8
0
        private static int Main(string[] args)
        {
            Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);

            var verbose      = false;
            var showHelp     = args.Length == 0;
            var dryRun       = false;
            var printVersion = false;

            var kppArgs = new Args
            {
                ProgramVersion = Version()
            };

            var p = new OptionSet
            {
                { "Program-argumenter" },
                { "h|help", "Vis hjelp", x => showHelp = true },
                { "v|verbose", "Skriv status underveis", x => verbose = true },
                { "d|dry-run", "Test konfigurasjon uten å kjøre programmet.", x => dryRun = true },
                { "version", "Skriv programmets version", x => printVersion = true },
                { "Input" },
                { "episoder=", "Filsti til csv-fil med episoder", x => kppArgs.EpisodePath = x },
                { "tjenester=", "Filsti til csv-fil med tjenester", x => kppArgs.TjenestePath = x },
                { "fradato=", "Dato for periodens start. Format: yyyy-MM-dd", x => kppArgs.FraDato = ParseDate(x) },
                { "tildato=", "Dato for periodens slutt. Format: yyyy-MM-dd", x => kppArgs.TilDato = ParseDate(x) },
                { "org-herid=", "Avsenders HerId (fra Adresseregisteret)", x => kppArgs.OrganizationHerId = x },
                { "org-navn=", "Avsenders navn", x => kppArgs.OrganizationName = x },
                { "leverandor=", "Navn på leverandør av EPJ", x => kppArgs.Leverandor = x },
                { "epj-navn=", "Navn på EPJ", x => kppArgs.NavnEpj = x },
                { "epj-versjon=", "Versjon av EPJ", x => kppArgs.VersjonEpj = x },
                { "hdir-herid=", "Helsedirektoratets HerId.", x => kppArgs.HDirHerId = x },
                { "Output" },
                { "o|output=", "Filsti hvor resultatet lagres", x => kppArgs.OutputPath = x }
            };

            Console.WriteLine();

            var list = p.Parse(args);

            if (list.Count > 0)
            {
                Console.WriteLine($"Ukjente variable: {string.Join(", ", list)}\n");
                p.WriteOptionDescriptions(Console.Out);
                return(1);
            }

            if (showHelp)
            {
                p.WriteOptionDescriptions(Console.Out);
                return(0);
            }

            if (printVersion)
            {
                Console.WriteLine(Version());
                return(0);
            }

            if (dryRun)
            {
                Console.WriteLine("# Tolket input:");
                Console.WriteLine(kppArgs.ToString());

                Console.WriteLine();
                var message = !KppService.IsValid(kppArgs, out var em)
                    ? $"# Fant følgende feil i input:\n{em}"
                    : "# Input er gyldig";
                Console.WriteLine(message);
                return(0);
            }

            if (!KppService.IsValid(kppArgs, out var errorMessage))
            {
                Console.WriteLine($"Feil input:\n{errorMessage}");
                return(1);
            }

            try
            {
                KppService.Run(kppArgs, (i, s) => Log(s, verbose));
            }
            catch (Exception ex)
            {
                var message = $"Noe gikk galt under opprettelse av meldingen.\n\nFeilmelding: {ex.Message}\n\n{ex.GetType()}\n\nVersjon: {kppArgs.ProgramVersion}";
                Console.WriteLine(message);
                return(1);
            }

            return(0);
        }