private Dictionary <string, AllCodesCode[]> CreateKartleggingsenheter(NiNDbContext dbContext, IEnumerable <Kartleggingsenhet> entities, string host) { var codes = new Dictionary <int, IList <AllCodesCode> >(); foreach (var k in entities) { var kartleggingsenhet = dbContext.Kartleggingsenhet .Include(x => x.Kode) .FirstOrDefault(x => x.Id == k.Id); if (kartleggingsenhet == null) { continue; } var enumValue = NinEnumConverter.GetValue <MalestokkEnum>(kartleggingsenhet.Malestokk); var scale = int.Parse(Regex.Match(enumValue, @"\d+").Value, NumberFormatInfo.InvariantInfo); if (!codes.ContainsKey(scale)) { codes.Add(scale, new List <AllCodesCode>()); } codes[scale].Add(ConvertNinKode2Code(kartleggingsenhet.Kode, host)); } return(codes.ToDictionary(code => code.Key.ToString(), code => CreateOrderedList(code.Value))); }
//public IEnumerable<Codes> GetAlll(NiNDbContext dbContext, string host, string version = "", bool tree = false) //{ // if (host.EndsWith("koder/", StringComparison.OrdinalIgnoreCase)) host += "hentkode/"; // var kodeList = dbContext.Kode.Include(x => x.Version).Where(x => x.Version.Navn.Equals(version)).ToList(); // foreach (var kode in kodeList) // { // Codes code = null; // switch (kode.Kategori) // { // case KategoriEnum.Naturmangfoldnivå: // var natursystem = dbContext.Natursystem // .Include(x => x.Kode) // .Include(x => x.UnderordnetKoder) // .FirstOrDefault(x => x.Kode.Id == kode.Id); // if (natursystem == null) continue; // code = new Codes // { // Navn = natursystem.Navn, // Kategori = natursystem.Kategori, // Kode = ConvertNinKode2Code(natursystem.Kode, host) // }; // if (natursystem.UnderordnetKoder.Any()) // { // code.UnderordnetKoder = CreateUnderordnetKoder(dbContext, natursystem.UnderordnetKoder, host); // } // break; // case KategoriEnum.Hovedtypegruppe: // var hovedtypegruppe = dbContext.Hovedtypegruppe // .Include(x => x.Natursystem) // .Include(x => x.Natursystem.Kode) // .Include(x => x.Kode) // .Include(x => x.UnderordnetKoder) // .FirstOrDefault(x => x.Kode.Id == kode.Id); // if (hovedtypegruppe == null) break; // code = new Codes // { // Navn = hovedtypegruppe.Navn, // Kategori = hovedtypegruppe.Kategori, // Kode = ConvertNinKode2Code(hovedtypegruppe.Kode, host), // OverordnetKode = ConvertNinKode2Code(hovedtypegruppe.Natursystem.Kode, host) // }; // if (hovedtypegruppe.UnderordnetKoder.Any()) // { // code.UnderordnetKoder = CreateUnderordnetKoder(dbContext, hovedtypegruppe.UnderordnetKoder, host); // } // break; // case KategoriEnum.Hovedtype: // var hovedtype = dbContext.Hovedtype // .Include(x => x.Hovedtypegruppe) // .Include(x => x.Hovedtypegruppe.Kode) // .Include(x => x.UnderordnetKoder) // .Include(x => x.Kartleggingsenheter) // .Include(x => x.Miljovariabler) // .FirstOrDefault(x => x.Kode.Id == kode.Id); // if (hovedtype == null) break; // code = new Codes // { // Navn = hovedtype.Navn, // Kategori = hovedtype.Kategori, // Kode = ConvertNinKode2Code(hovedtype.Kode, host), // OverordnetKode = ConvertNinKode2Code(hovedtype.Hovedtypegruppe.Kode, host) // }; // if (hovedtype.UnderordnetKoder.Any()) // { // code.UnderordnetKoder = CreateUnderordnetKoder(dbContext, hovedtype.UnderordnetKoder, host); // } // if (hovedtype.Kartleggingsenheter.Any()) // { // code.Kartleggingsenheter = CreateKartleggingsenheter(dbContext, hovedtype.Kartleggingsenheter, host); // } // if (hovedtype.Miljovariabler.Any()) // { // code.Miljovariabler = CreateMiljovariabler(dbContext, hovedtype.Miljovariabler); // } // break; // case KategoriEnum.Grunntype: // var grunntype = dbContext.Grunntype // .Include(x => x.Hovedtype) // .Include(x => x.Hovedtype.Kode) // .FirstOrDefault(x => x.Kode.Id == kode.Id); // if (grunntype == null) break; // code = new Codes // { // Navn = grunntype.Navn, // Kategori = grunntype.Kategori, // Kode = ConvertNinKode2Code(grunntype.Kode, host), // OverordnetKode = ConvertNinKode2Code(grunntype.Hovedtype.Kode, host) // }; // break; // } // if (code == null) continue; // yield return code; // } //} public Codes GetByKode(NiNDbContext dbContext, string id, string host, string version = "") { if (string.IsNullOrEmpty(id)) { return(null); } var ninVersion = dbContext.NinVersion.FirstOrDefault(x => x.Navn.Equals(version)); if (ninVersion == null) { return(null); } id = id.Replace("_", " "); var kode = dbContext.Kode .FirstOrDefault(x => x.Version.Id == ninVersion.Id && x.KodeName.Equals(id)); if (kode == null) { return(null); } Codes code = null; switch (kode.Kategori) { case KategoriEnum.Naturmangfoldnivå: var natursystem = dbContext.Natursystem .Include(x => x.Kode) .Include(x => x.UnderordnetKoder) .AsSplitQuery() .FirstOrDefault(x => x.Kode.Id == kode.Id); if (natursystem == null) { return(null); } code = new Codes { Navn = natursystem.Navn, Kategori = natursystem.Kategori, Kode = ConvertNinKode2Code(natursystem.Kode, host) }; if (natursystem.UnderordnetKoder.Any()) { code.UnderordnetKoder = CreateUnderordnetKoder(dbContext, natursystem.UnderordnetKoder, host); } break; case KategoriEnum.Hovedtypegruppe: var hovedtypegruppe = dbContext.Hovedtypegruppe .Include(x => x.Natursystem) .Include(x => x.Natursystem.Kode) .Include(x => x.Kode) .Include(x => x.UnderordnetKoder) .AsSplitQuery() .FirstOrDefault(x => x.Kode.Id == kode.Id); if (hovedtypegruppe == null) { break; } code = new Codes { Navn = hovedtypegruppe.Navn, Kategori = hovedtypegruppe.Kategori, Kode = ConvertNinKode2Code(hovedtypegruppe.Kode, host), OverordnetKode = ConvertNinKode2Code(hovedtypegruppe.Natursystem.Kode, host) }; if (hovedtypegruppe.UnderordnetKoder.Any()) { code.UnderordnetKoder = CreateUnderordnetKoder(dbContext, hovedtypegruppe.UnderordnetKoder, host); } break; case KategoriEnum.Hovedtype: var hovedtype = dbContext.Hovedtype .Include(x => x.Hovedtypegruppe) .Include(x => x.Hovedtypegruppe.Kode) .Include(x => x.UnderordnetKoder) .Include(x => x.Kartleggingsenheter) .Include(x => x.Miljovariabler) .AsSplitQuery() .FirstOrDefault(x => x.Kode.Id == kode.Id); if (hovedtype == null) { break; } code = new Codes { Navn = hovedtype.Navn, Kategori = hovedtype.Kategori, Kode = ConvertNinKode2Code(hovedtype.Kode, host), OverordnetKode = ConvertNinKode2Code(hovedtype.Hovedtypegruppe.Kode, host) }; if (hovedtype.UnderordnetKoder.Any()) { code.UnderordnetKoder = CreateUnderordnetKoder(dbContext, hovedtype.UnderordnetKoder, host); } if (hovedtype.Kartleggingsenheter.Any()) { code.Kartleggingsenheter = CreateKartleggingsenheter(dbContext, hovedtype.Kartleggingsenheter, host); } if (hovedtype.Miljovariabler.Any()) { code.Miljovariabler = CreateMiljovariabler(dbContext, hovedtype.Miljovariabler); } break; case KategoriEnum.Grunntype: var grunntype = dbContext.Grunntype .Include(x => x.Hovedtype) .Include(x => x.Hovedtype.Kode) .Include(x => x.Kartleggingsenhet) .Include(x => x.Basistrinn) .AsSplitQuery() .FirstOrDefault(x => x.Kode.Id == kode.Id); if (grunntype == null) { break; } code = new Codes { Navn = grunntype.Navn, Kategori = grunntype.Kategori, Kode = ConvertNinKode2Code(grunntype.Kode, host), OverordnetKode = ConvertNinKode2Code(grunntype.Hovedtype.Kode, host) }; if (grunntype.Kartleggingsenhet.Any()) { code.Kartleggingsenheter = CreateKartleggingsenheter(dbContext, grunntype.Kartleggingsenhet, host); } if (grunntype.Basistrinn.Any()) { var list = grunntype.Basistrinn.Select(b => new AllCodesCode { Id = b.Navn }).ToList(); code.Basistrinn = list.OrderBy(x => x.Id).ToArray(); } break; case KategoriEnum.Kartleggingsenhet: var kartlegging = dbContext.Kartleggingsenhet .Include(x => x.Hovedtype) .Include(x => x.Hovedtype.Kode) .Include(x => x.Grunntype) .AsSplitQuery() .FirstOrDefault(x => x.Kode.Id == kode.Id); if (kartlegging == null) { break; } code = new Codes { Navn = kartlegging.Definisjon, Kategori = NinEnumConverter.GetValue <KategoriEnum>(kartlegging.Kode.Kategori), Malestokk = kartlegging.Malestokk, Kode = ConvertNinKode2Code(kartlegging.Kode, host), OverordnetKode = ConvertNinKode2Code(kartlegging.Hovedtype.Kode, host) }; if (kartlegging.Grunntype.Any()) { var grunntyper = new List <Codes>(); foreach (var item in kartlegging.Grunntype) { var g = dbContext.Grunntype .Include(x => x.Kode) .FirstOrDefault(x => x.Id == item.Id); if (g == null) { continue; } grunntyper.Add(new Codes { Navn = g.Navn, Kategori = g.Kategori, Kode = ConvertNinKode2Code(g.Kode, host) }); } code.Grunntyper = grunntyper.ToArray(); } break; } return(code); }