Esempio n. 1
0
        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)));
        }
Esempio n. 2
0
        private LkmKategoriEnum GetLkmKategori(string value)
        {
            if (string.IsNullOrWhiteSpace(value))
            {
                return(LkmKategoriEnum._null);
            }

            return(NinEnumConverter.Convert <LkmKategoriEnum>(value).Value);
        }
Esempio n. 3
0
        private MalestokkEnum GetKartleggingsenhetmalestokk(string value)
        {
            if (string.IsNullOrWhiteSpace(value))
            {
                return(MalestokkEnum.MalestokkInvalid);
            }

            return(NinEnumConverter.Convert <MalestokkEnum>(value).Value);
        }
Esempio n. 4
0
        //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);
        }