Ejemplo n.º 1
0
        private static CodeSummaryItem GetCodeSummaryHierarchy(CodeIds codeIds, Naturetypekodetre kodetre)
        {
            var r = new CodeSummaryItem();

            foreach (var codeId in codeIds)
            {
                var codeItem = kodetre.HentFraKode(codeId.Key);
                var codes    = r.Codes;
                foreach (var parentCodeItem in codeItem.ParentCodeItems)
                {
                    if (!codes.ContainsKey(parentCodeItem.Id))
                    {
                        var item = new CodeSummaryItem(parentCodeItem.Name, parentCodeItem.Url, 0);
                        foreach (var id in codeId.Value)
                        {
                            if (item.HandledIds.Contains(id))
                            {
                                continue;
                            }
                            item.Count++;
                            item.HandledIds.Add(id);
                        }
                        codes[parentCodeItem.Id] = item;
                    }
                    else
                    {
                        foreach (var id in codeId.Value)
                        {
                            if (codes[parentCodeItem.Id].HandledIds.Contains(id))
                            {
                                continue;
                            }
                            codes[parentCodeItem.Id].Count++;
                            codes[parentCodeItem.Id].HandledIds.Add(id);
                        }
                    }
                }

                if (!codes.ContainsKey(codeItem.Id))
                {
                    codes[codeItem.Id] = new CodeSummaryItem(codeItem.Name, codeItem.Url,
                                                             codeId.Value.Count);
                }
                else
                {
                    codes[codeItem.Id].Count += codeId.Value.Count;
                }
            }
            return(r);
        }
Ejemplo n.º 2
0
        private static CodeSummaryItem GetCodeSummaryHierarchy(CodeIds idsForCodes, Naturetypekodetre kodetre)
        {
            var root = new CodeSummaryItem();

            var index = new Dictionary <string, CodeSummaryItem>();

            foreach (var idsForCode in idsForCodes)
            {
                var codeItemFromTree = kodetre.HentFraKode(idsForCode.Key);

                if (codeItemFromTree.Name == "?")
                {
                    continue;
                }

                HandleParents(root.Codes, index, codeItemFromTree);

                CodeSummaryItem item = null;

                if (!index.ContainsKey(codeItemFromTree.Id))
                {
                    item = new CodeSummaryItem(codeItemFromTree.Name, codeItemFromTree.Url, idsForCode.Value.Count);

                    if (codeItemFromTree.ParentCodeItems.Count > 0)
                    {
                        var parent = index[codeItemFromTree.ParentCodeItems.Last().Id];

                        parent.Codes.Add(codeItemFromTree.Id, item);
                    }
                    else
                    {
                        root.Codes.Add(codeItemFromTree.Id, item);
                    }

                    index.Add(codeItemFromTree.Id, item);
                }
                else
                {
                    item           = index[codeItemFromTree.Id];
                    item.OwnCount += idsForCode.Value.Count;
                }
            }

            return(root);
        }
Ejemplo n.º 3
0
        public MemoryStream GenerateXlsxStream(Collection <NatureAreaExport> natureAreas)
        {
            var descriptionVariableColumns = GetDistinctDescriptionVariables(natureAreas);

            var workBook = new XLWorkbook();
            var sheet    = workBook.AddWorksheet("Naturtypekart");

            sheet.Name = "Naturtypekart";

            int columnNumber = 0;
            int rowNumber    = 0;

            sheet.Cell(1, 1).Value = "asdf";
            sheet.Cell(++rowNumber, ++columnNumber).Value = "Id";
            sheet.Cell(rowNumber, ++columnNumber).Value   = "Naturnivå";
            sheet.Cell(rowNumber, ++columnNumber).Value   = "Hovedtypegruppe";
            sheet.Cell(rowNumber, ++columnNumber).Value   = "Hovedtype";
            sheet.Cell(rowNumber, ++columnNumber).Value   = "Grunntype";
            sheet.Cell(rowNumber, ++columnNumber).Value   = "Mosaikk";
            sheet.Cell(rowNumber, ++columnNumber).Value   = "Målestokk";


            foreach (var descriptionVariableColumn in descriptionVariableColumns)
            {
                sheet.Cell(rowNumber, ++columnNumber).Value = descriptionVariableColumn;
            }

            sheet.Cell(rowNumber, ++columnNumber).Value = "Kartlagt dato";
            sheet.Cell(rowNumber, ++columnNumber).Value = "Datakilde";
            sheet.Cell(rowNumber, ++columnNumber).Value = "Program";
            sheet.Cell(rowNumber, ++columnNumber).Value = "Størrelse (m²)";

            sheet.Row(rowNumber).Style.Font.Bold = true;
            sheet.Row(rowNumber).Style.Fill.SetPatternColor(XLColor.LightGray);

            foreach (var natureArea in natureAreas)
            {
                SqlGeometry area = null;
                if (natureArea.Area != null)
                {
                    area = reproject.Reproject(natureArea.Area);
                }

                foreach (var parameter in natureArea.Parameters)
                {
                    ++rowNumber;
                    sheet.Cell(rowNumber, 1).Value = natureArea.UniqueId.LocalId.ToString();
                    sheet.Cell(rowNumber, 2).Value = Naturnivå.TilNavn(natureArea.Nivå);

                    sheet.Cell(rowNumber, 6).Value = natureArea.Parameters.Count > 1 ? "Ja" : "Nei";
                    sheet.Cell(rowNumber, 7).Value = natureArea.MetadataSurveyScale;

                    if (parameter.GetType() == typeof(NatureAreaType))
                    {
                        var natureAreaType = (NatureAreaType)parameter;

                        var ninCode = naturtypeKodetre.HentFraKode(natureAreaType.Code);
                        if (ninCode != null && ninCode.ParentCodeItems.Count == 1)
                        {
                            sheet.Cell(rowNumber, 4).Value = ninCode.Name;
                        }
                        else if (ninCode != null && ninCode.ParentCodeItems.Count == 2)
                        {
                            sheet.Cell(rowNumber, 4).Value = ninCode.ParentCodeItems[1].Name;
                        }
                        else if (ninCode != null && ninCode.ParentCodeItems.Count == 3)
                        {
                            sheet.Cell(rowNumber, 3).Value = ninCode.ParentCodeItems[1].Name;
                            sheet.Cell(rowNumber, 4).Value = ninCode.ParentCodeItems[2].Name;
                        }

                        sheet.Cell(rowNumber, 5).Value = natureAreaType.Code;

                        foreach (var additionalVariable in natureAreaType.AdditionalVariables)
                        {
                            int columnIndex = descriptionVariableColumns.IndexOf(additionalVariable.Code);

                            double additionalVariableValueDouble;
                            int    additionalVariableValueInt;
                            if (double.TryParse(additionalVariable.Value, out additionalVariableValueDouble))
                            {
                                sheet.Cell(rowNumber, columnIndex + 8).Value = additionalVariableValueDouble;
                            }
                            else if (int.TryParse(additionalVariable.Value, out additionalVariableValueInt))
                            {
                                sheet.Cell(rowNumber, columnIndex + 8).Value = additionalVariableValueInt;
                            }
                            else
                            {
                                sheet.Cell(rowNumber, columnIndex + 8).Value = additionalVariable.Value;
                            }
                        }
                    }
                    else if (parameter.GetType() == typeof(DescriptionVariable))
                    {
                        var descriptionVariable = (DescriptionVariable)parameter;
                        int columnIndex         = descriptionVariableColumns.IndexOf(descriptionVariable.Code);

                        double descriptionVariableValueDouble;
                        int    descriptionVariableValueInt;
                        if (double.TryParse(descriptionVariable.Value, out descriptionVariableValueDouble))
                        {
                            sheet.Cell(rowNumber, columnIndex + 8).Value = descriptionVariableValueDouble;
                        }
                        else if (int.TryParse(descriptionVariable.Value, out descriptionVariableValueInt))
                        {
                            sheet.Cell(rowNumber, columnIndex + 8).Value = descriptionVariableValueInt;
                        }
                        else
                        {
                            sheet.Cell(rowNumber, columnIndex + 8).Value = descriptionVariable.Value;
                        }
                    }

                    sheet.Cell(rowNumber, 8 + descriptionVariableColumns.Count).Value  = natureArea.Surveyed?.ToShortDateString() ?? string.Empty;
                    sheet.Cell(rowNumber, 9 + descriptionVariableColumns.Count).Value  = natureArea.Institution;
                    sheet.Cell(rowNumber, 10 + descriptionVariableColumns.Count).Value = natureArea.MetadataProgram;

                    if (area != null)
                    {
                        sheet.Cell(rowNumber, 11 + descriptionVariableColumns.Count).Value =
                            Math.Round(area.STArea().Value, 2);
                    }
                }
            }

            sheet.AutoFilter.Set(sheet.Range(1, 1, columnNumber, rowNumber));

            sheet.Columns().AdjustToContents();

            MemoryStream xlsxStream = new MemoryStream();

            workBook.SaveAs(xlsxStream);
            xlsxStream.Position = 0;

            return(xlsxStream);
        }