示例#1
0
 private Hovedtype CreateHovedtype(KartleggingsenheterRecord record,
                                   NinVersion ninVersion,
                                   Natursystem natursystem,
                                   Hovedtypegruppe hovedtypegruppe)
 {
     return(CreateHovedtype(record.HovedtypeNavn, record.HovedtypeKode, ninVersion, natursystem, hovedtypegruppe));
 }
示例#2
0
 private Hovedtype CreateHovedtype(MiljovariablerRecord record,
                                   NinVersion ninVersion,
                                   Natursystem natursystem,
                                   Hovedtypegruppe hovedtypegruppe)
 {
     return(CreateHovedtype(record.HovedtypeNavn, record.HovedtypeKode, ninVersion, natursystem, hovedtypegruppe));
 }
示例#3
0
 private Basistrinn CreateBasistrinn(string name, NinVersion ninVersion)
 {
     return(new Basistrinn
     {
         Version = ninVersion,
         Navn = name
     });
 }
示例#4
0
 private Trinn CreateTrinn(MiljovariablerRecord record, NinVersion ninVersion)
 {
     return(new Trinn
     {
         Version = ninVersion,
         Navn = record.TrinnNavn,
         Kode = new TrinnKode
         {
             Version = ninVersion,
             KodeName = record.TrinnKode.Replace(" ", ""),
             Kategori = KategoriEnum.Trinn
         }
     });
 }
示例#5
0
 private Natursystem CreateNatursystem(string name, string code, NinVersion ninVersion)
 {
     return(new Natursystem
     {
         Navn = name,
         Version = ninVersion,
         Kode = new NatursystemKode
         {
             Version = ninVersion,
             KodeName = code,
             Definisjon = code
         }
     });
 }
示例#6
0
 private Miljovariabel CreateMiljovariabel(MiljovariablerRecord record, NinVersion ninVersion, Hovedtype hovedtype)
 {
     return(new Miljovariabel
     {
         Version = ninVersion,
         Hovedtype = hovedtype,
         Kode = new LKMKode
         {
             Version = ninVersion,
             Kode = record.MiljovariabelKode,
             LkmKategori = GetLkmKategori("") // ToDo: where is it?!
         },
         Navn = record.MiljovariabelNavn
     });
 }
示例#7
0
 private Hovedtypegruppe CreateHovedtypegruppe(string name, string code,
                                               NinVersion ninVersion,
                                               Natursystem natursystem)
 {
     return(new Hovedtypegruppe
     {
         Version = ninVersion,
         Natursystem = natursystem,
         Navn = name,
         Kode = new HovedtypegruppeKode
         {
             Version = ninVersion,
             KodeName = code,
             Definisjon = code.Replace(natursystem.Kode.KodeName, "").Trim()
         }
     });
 }
示例#8
0
 private Kartleggingsenhet CreateKartleggingsenhet(KartleggingsenheterRecord record,
                                                   NinVersion ninVersion,
                                                   Hovedtype hovedtype)
 {
     return(new Kartleggingsenhet
     {
         Version = ninVersion,
         Hovedtype = hovedtype,
         Definisjon = record.KartleggingsenhetDef,
         Kode = new KartleggingsenhetKode
         {
             Version = ninVersion,
             KodeName = record.KartleggingsenhetKode,
             Definisjon = record.KartleggingsenhetDef
         },
         Malestokk = GetKartleggingsenhetmalestokk(record.KartleggingsenhetMalestokk)
     });
 }
示例#9
0
 private Grunntype CreateGrunntype(string name, string code,
                                   NinVersion ninVersion,
                                   Natursystem natursystem,
                                   Hovedtype hovedtype)
 {
     return(new Grunntype
     {
         Version = ninVersion,
         Hovedtype = hovedtype,
         Navn = name,
         Kode = new GrunntypeKode
         {
             Version = ninVersion,
             KodeName = code,
             Definisjon = code.Replace(natursystem.Kode.KodeName, "").Trim()
         }
     });
 }
示例#10
0
 private Hovedtypegruppe CreateHovedtypegruppe(GrunntyperRecord record,
                                               NinVersion ninVersion,
                                               Natursystem natursystem)
 {
     return(CreateHovedtypegruppe(record.HovedtypegruppeNavn, record.HovedtypegruppeKode, ninVersion, natursystem));
 }
示例#11
0
 private Natursystem CreateNatursystem(MiljovariablerRecord record, NinVersion ninVersion)
 {
     return(CreateNatursystem(record.NatursystemNavn, record.NatursystemKode, ninVersion));
 }
示例#12
0
 private Natursystem CreateNatursystem(KartleggingsenheterRecord record, NinVersion ninVersion)
 {
     return(CreateNatursystem(record.NatursystemNavn, record.NatursystemKode, ninVersion));
 }
示例#13
0
 private Natursystem CreateNatursystem(GrunntyperRecord record, NinVersion ninVersion)
 {
     return(CreateNatursystem(record.NatursystemNavn, record.NatursystemKode, ninVersion));
 }
示例#14
0
        public void ImportCompleteNin(string basePath, bool allowUpdate = false)
        {
            var         i           = 0;
            Natursystem natursystem = null;

            var ninVersion = _context.NinVersion.FirstOrDefault(x => x.Navn.Equals(_version));

            if (ninVersion != null)
            {
                if (!allowUpdate)
                {
                    Console.WriteLine($"NiN-code version {ninVersion.Navn} exists. Skipping...");
                    return;
                }
            }
            else
            {
                ninVersion = new NinVersion {
                    Navn = _version
                };
                _context.NinVersion.Add(ninVersion);
                _context.SaveChanges();

                ninVersion = _context.NinVersion.FirstOrDefault(x => x.Id == ninVersion.Id);
            }

            Console.WriteLine("\nGrunntyper");

            var path = Path.Combine(basePath, $"import_grunntyper_v{_version}.csv");

            if (File.Exists(path))
            {
                using var reader = new StreamReader(path);
                using var csv    = new CsvReader(reader, _csvConfiguration);

                var    records = csv.GetRecords <GrunntyperRecord>().ToList();
                var    count   = records.Count;
                var    pos     = 0;
                double percent;
                foreach (var record in records)
                {
                    percent = Math.Round(100 * ((double)++pos / count));
                    if (natursystem == null)
                    {
                        natursystem = _context.Natursystem
                                      .Include(x => x.Kode)
                                      .FirstOrDefault(x => x.Version.Id == ninVersion.Id);
                    }
                    if (natursystem == null)
                    {
                        natursystem = CreateNatursystem(record, ninVersion);
                        Console.WriteLine($"{percent}% {++i:0####} natursystem\t{natursystem.Kode.KodeName} {natursystem.Navn}");
                        _context.Natursystem.Add(natursystem);
                    }

                    var hovedtypegruppe = _context.Hovedtypegruppe
                                          .Include(x => x.Natursystem)
                                          .FirstOrDefault(x =>
                                                          x.Version.Id == ninVersion.Id &&
                                                          x.Natursystem.Id == natursystem.Id &&
                                                          x.Kode.KodeName.Equals(record.HovedtypegruppeKode));
                    if (hovedtypegruppe == null)
                    {
                        hovedtypegruppe = CreateHovedtypegruppe(record, ninVersion, natursystem);
                        Console.WriteLine($"{percent}% {++i:0####} hovedtypegruppe\t{hovedtypegruppe.Kode.KodeName} {hovedtypegruppe.Navn}");
                        _context.Hovedtypegruppe.Add(hovedtypegruppe);
                    }

                    var hovedtype = _context.Hovedtype
                                    .Include(x => x.Hovedtypegruppe)
                                    .FirstOrDefault(x =>
                                                    x.Version.Id == ninVersion.Id &&
                                                    x.Hovedtypegruppe.Id == hovedtypegruppe.Id &&
                                                    x.Kode.KodeName.Equals(record.HovedtypeKode));
                    if (hovedtype == null)
                    {
                        hovedtype = CreateHovedtype(record, ninVersion, natursystem, hovedtypegruppe);
                        Console.WriteLine($"{percent}% {++i:0####} hovedtype\t{hovedtype.Kode.KodeName} {hovedtype.Navn}");
                        _context.Hovedtype.Add(hovedtype);
                    }

                    var grunntype = _context.Grunntype
                                    .Include(x => x.Hovedtype)
                                    .FirstOrDefault(x =>
                                                    x.Version.Id == ninVersion.Id &&
                                                    x.Hovedtype.Id == hovedtype.Id &&
                                                    x.Kode.KodeName.Equals(record.GrunntypeKode));
                    if (grunntype == null)
                    {
                        grunntype = CreateGrunntype(record.GrunntypeNavn, record.GrunntypeKode, ninVersion, natursystem, hovedtype);
                        Console.WriteLine($"{percent}% {++i:0####} grunntype\t{grunntype.Kode.KodeName} {grunntype.Navn}");
                        _context.Grunntype.Add(grunntype);
                    }

                    if (HasUnsavedChanges())
                    {
                        _context.SaveChanges();
                    }
                    else
                    {
                        Console.Write($"\r{Math.Round(100 * ((double)pos / count))}%\t");
                    }
                }
            }

            Console.WriteLine("\rKartleggingsenheter");

            path = Path.Combine(basePath, $"import_kartleggingsenheter_v{_version}.csv");
            if (File.Exists(path))
            {
                using var reader = new StreamReader(path);
                using var csv    = new CsvReader(reader, _csvConfiguration);

                var    records = csv.GetRecords <KartleggingsenheterRecord>().ToList();
                var    count   = records.Count;
                var    pos     = 0;
                double percent;
                foreach (var record in records)
                {
                    percent = Math.Round(100 * ((double)++pos / count));
                    if (natursystem == null)
                    {
                        natursystem = _context.Natursystem
                                      .Include(x => x.Kode)
                                      .FirstOrDefault(x => x.Version.Id == ninVersion.Id);
                    }
                    if (natursystem == null)
                    {
                        natursystem = CreateNatursystem(record, ninVersion);
                        Console.WriteLine($"{percent}% {++i:0####} natursystem\t{natursystem.Kode.KodeName} {natursystem.Navn}");
                        _context.Natursystem.Add(natursystem);
                    }

                    var hovedtypegruppe = _context.Hovedtypegruppe
                                          .Include(x => x.Natursystem)
                                          .FirstOrDefault(x =>
                                                          x.Version.Id == ninVersion.Id &&
                                                          x.Natursystem.Id == natursystem.Id &&
                                                          x.Kode.KodeName.Equals(record.HovedtypegruppeKode));
                    if (hovedtypegruppe == null)
                    {
                        hovedtypegruppe = CreateHovedtypegruppe(record, ninVersion, natursystem);
                        Console.WriteLine($"{percent}% {++i:0####} hovedtypegruppe\t{hovedtypegruppe.Kode.KodeName} {hovedtypegruppe.Navn}");
                        _context.Hovedtypegruppe.Add(hovedtypegruppe);
                    }

                    var hovedtype = _context.Hovedtype
                                    .Include(x => x.Hovedtypegruppe)
                                    .FirstOrDefault(x =>
                                                    x.Version.Id == ninVersion.Id &&
                                                    x.Hovedtypegruppe.Id == hovedtypegruppe.Id &&
                                                    x.Kode.KodeName.Equals(record.HovedtypeKode));
                    if (hovedtype == null)
                    {
                        hovedtype = CreateHovedtype(record, ninVersion, natursystem, hovedtypegruppe);
                        Console.WriteLine($"{percent}% {++i:0####} hovedtype\t{hovedtype.Kode.KodeName} {hovedtype.Navn}");
                        _context.Hovedtype.Add(hovedtype);
                    }

                    var kartleggingsenhet = _context.Kartleggingsenhet
                                            .Include(x => x.Hovedtype)
                                            .FirstOrDefault(x =>
                                                            x.Version.Id == ninVersion.Id &&
                                                            x.Hovedtype.Id == hovedtype.Id &&
                                                            x.Kode.KodeName.Equals(record.KartleggingsenhetKode));
                    if (kartleggingsenhet == null)
                    {
                        kartleggingsenhet = CreateKartleggingsenhet(record, ninVersion, hovedtype);
                        Console.WriteLine($"{percent}% {++i:0####} kartleggingsenhet\t{kartleggingsenhet.Malestokk} {kartleggingsenhet.Kode.KodeName} {kartleggingsenhet.Definisjon}");
                        hovedtype.Kartleggingsenheter.Add(kartleggingsenhet);
                    }

                    if (HasUnsavedChanges())
                    {
                        _context.SaveChanges();
                    }
                    else
                    {
                        Console.Write($"\r{Math.Round(100 * ((double)pos / count))}%\t");
                    }
                }
            }

            Console.WriteLine("\rMiljøvariabler");

            path = Path.Combine(basePath, $"import_miljovariabler_v{_version}.csv");
            if (File.Exists(path))
            {
                using var reader = new StreamReader(path);
                using var csv    = new CsvReader(reader, _csvConfiguration);

                var    records = csv.GetRecords <MiljovariablerRecord>().ToList();
                var    count   = records.Count;
                var    pos     = 0;
                double percent;
                foreach (var record in records)
                {
                    percent = Math.Round(100 * ((double)++pos / count));
                    if (natursystem == null)
                    {
                        natursystem = _context.Natursystem
                                      .Include(x => x.Kode)
                                      .FirstOrDefault(x => x.Version.Id == ninVersion.Id);
                    }
                    if (natursystem == null)
                    {
                        natursystem = CreateNatursystem(record, ninVersion);
                        Console.WriteLine($"{percent}% {++i:0####} natursystem\t{natursystem.Kode.KodeName} {natursystem.Navn}");
                        _context.Natursystem.Add(natursystem);
                    }

                    var hovedtypegruppe = _context.Hovedtypegruppe
                                          .Include(x => x.Natursystem)
                                          .FirstOrDefault(x =>
                                                          x.Version.Id == ninVersion.Id &&
                                                          x.Natursystem.Id == natursystem.Id &&
                                                          x.Kode.KodeName.Equals(record.HovedtypegruppeKode));
                    if (hovedtypegruppe == null)
                    {
                        hovedtypegruppe = CreateHovedtypegruppe(record, ninVersion, natursystem);
                        Console.WriteLine($"{percent}% {++i:0####} hovedtypegruppe\t{hovedtypegruppe.Kode.KodeName} {hovedtypegruppe.Navn}");
                        _context.Hovedtypegruppe.Add(hovedtypegruppe);
                    }

                    var hovedtype = _context.Hovedtype
                                    .Include(x => x.Hovedtypegruppe)
                                    .FirstOrDefault(x =>
                                                    x.Version.Id == ninVersion.Id &&
                                                    x.Hovedtypegruppe.Id == hovedtypegruppe.Id &&
                                                    x.Kode.KodeName.Equals(record.HovedtypeKode));
                    if (hovedtype == null)
                    {
                        hovedtype = CreateHovedtype(record, ninVersion, natursystem, hovedtypegruppe);
                        Console.WriteLine($"{percent}% {++i:0####} hovedtype\t{hovedtype.Kode.KodeName} {hovedtype.Navn}");
                        _context.Hovedtype.Add(hovedtype);
                    }

                    var miljovariabel = _context.Miljovariabel
                                        .Include(x => x.Hovedtype)
                                        .FirstOrDefault(x =>
                                                        x.Version.Id == ninVersion.Id &&
                                                        x.Hovedtype.Id == hovedtype.Id &&
                                                        x.Kode.Kode.Equals(record.MiljovariabelKode));
                    if (miljovariabel == null)
                    {
                        miljovariabel = CreateMiljovariabel(record, ninVersion, hovedtype);
                        Console.WriteLine($"{percent}% {++i:0####} miljovariabel\t{miljovariabel.Kode.Kode} {miljovariabel.Navn}");
                        hovedtype.Miljovariabler.Add(miljovariabel);
                    }

                    var trinn = _context.Trinn
                                .FirstOrDefault(x =>
                                                x.Version.Id == ninVersion.Id &&
                                                x.Kode.KodeName.Equals(record.TrinnKode.Replace(" ", "")));
                    if (trinn == null)
                    {
                        trinn = CreateTrinn(record, ninVersion);
                        Console.WriteLine($"{percent}% {++i:0####} trinn\t{trinn.Kode.KodeName} {trinn.Navn}");
                        miljovariabel.Trinn.Add(trinn);
                    }

                    var basistrinnNavn = record.BasistrinnNavn;
                    if (!string.IsNullOrWhiteSpace(basistrinnNavn))
                    {
                        var basistrinnPrefix = basistrinnNavn.Substring(0, basistrinnNavn.IndexOf("-", StringComparison.Ordinal));
                        var basistrinnListe  = basistrinnNavn.Substring($"{basistrinnPrefix}-".Length).ToCharArray();
                        foreach (var s in basistrinnListe)
                        {
                            var basistrinn = _context.Basistrinn
                                             .Include(x => x.Trinn)
                                             .FirstOrDefault(x =>
                                                             x.Version.Id == ninVersion.Id &&
                                                             x.Navn.Equals($"{basistrinnPrefix}-{s}"));
                            if (basistrinn == null)
                            {
                                basistrinn = CreateBasistrinn($"{basistrinnPrefix}-{s}", ninVersion);

                                basistrinn.Trinn.Add(trinn);
                                Console.WriteLine($"{percent}% {++i:0####} basistrinn\t{basistrinn.Navn}");
                                trinn.Basistrinn.Add(basistrinn);
                            }
                            else if (!basistrinn.Trinn.Contains(trinn))
                            {
                                basistrinn.Trinn.Add(trinn);
                                Console.WriteLine($"{percent}% {++i:0####} basistrinn\t{basistrinn.Navn}");
                                trinn.Basistrinn.Add(basistrinn);
                            }
                        }
                    }

                    if (HasUnsavedChanges())
                    {
                        _context.SaveChanges();
                    }
                    else
                    {
                        Console.Write($"\r{Math.Round(100 * ((double)pos / count))}%\t");
                    }
                }
            }

            Console.WriteLine("\r    ");
        }