private Hovedtype CreateHovedtype(MiljovariablerRecord record, NinVersion ninVersion, Natursystem natursystem, Hovedtypegruppe hovedtypegruppe) { return(CreateHovedtype(record.HovedtypeNavn, record.HovedtypeKode, ninVersion, natursystem, hovedtypegruppe)); }
private Hovedtype CreateHovedtype(KartleggingsenheterRecord record, NinVersion ninVersion, Natursystem natursystem, Hovedtypegruppe hovedtypegruppe) { return(CreateHovedtype(record.HovedtypeNavn, record.HovedtypeKode, ninVersion, natursystem, hovedtypegruppe)); }
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() } }); }
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() } }); }
private Hovedtypegruppe CreateHovedtypegruppe(GrunntyperRecord record, NinVersion ninVersion, Natursystem natursystem) { return(CreateHovedtypegruppe(record.HovedtypegruppeNavn, record.HovedtypegruppeKode, ninVersion, natursystem)); }
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 "); }