Esempio n. 1
0
        private int GetSumNutz(List <IRaumZaRecord> raeume)
        {
            int gesSumNutzEinz   = 0;
            var raeumeGroupByTop = raeume.GroupBy(x => x.Top);

            {
                foreach (var topGroup in raeumeGroupByTop)
                {
                    var rGbKat = topGroup.GroupBy(x => x.Kategorie);
                    foreach (var katGroup in rGbKat)
                    {
                        IKategorieZaRecord kat = katGroup.Key;
                        double             m2  = 0.0;
                        foreach (var raum in katGroup)
                        {
                            m2 += raum.Flaeche;
                        }

                        var nutzEinz = (int)Math.Round(m2 * kat.ActualNutzwert);
                        gesSumNutzEinz += nutzEinz;
                    }
                }
            }
            return(gesSumNutzEinz);
        }
Esempio n. 2
0
        private void WritePari(int projektId, IProjektInfo pi)
        {
            log.Debug("WritePari");
            //Excel.Worksheet targetSheet = _WorkBook.Worksheets.Add();
            //targetSheet.Name = "Parifizierung";
            var       targetSheet   = GetWorksheet("Parifizierung");
            const int MAX_COL_INDEX = 10;

            // Überschrift Nutzflächenanteile
            CopyCells(_SheetPari, targetSheet, rowIndex1: 0, colIndex1: 0, rowIndex2: 0, colIndex2: MAX_COL_INDEX, copyColumnWidth: true);

            // bauvorhaben
            CopyCells(_SheetPari, targetSheet, rowIndex1: 1, colIndex1: 0, rowIndex2: 1, colIndex2: 0, copyColumnWidth: false);
            targetSheet.Cells[2, 1] = pi.Bauvorhaben;

            // räume mit kategorien mit zuabschlaginfo
            var raeume           = _Database.GetRaeumeWithZuAbschlag(projektId).Where(x => IsNwTopName(x.Top)).OrderBy(x => x.Top, _TextNumSortComparer).ToList();
            int gesSumNutzEinz   = GetSumNutz(raeume);
            var raeumeGroupByTop = raeume.GroupBy(x => x.Top);

            // wohnungseigentumsobjekte
            CopyCells(_SheetPari, targetSheet, rowIndex1: 5, colIndex1: 0, rowIndex2: 1, colIndex2: 0, copyColumnWidth: false);
            var nrOfWEO = raeumeGroupByTop.Count();

            targetSheet.Cells[6, 1] = nrOfWEO + " Wohnungseigentumsobjekte";

            // header: Fieldnames
            CopyCells(_SheetPari, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false);
            CopyCells(_SheetPari, targetSheet, rowIndex1: 7, colIndex1: 0, rowIndex2: 7, colIndex2: MAX_COL_INDEX, copyColumnWidth: false);

            int targetRowIndex = 9;
            var matrix         = new ExcelMatrix(targetRowIndex, MAX_COL_INDEX + 1);

            foreach (var topGroup in raeumeGroupByTop)
            {
                var top = topGroup.Key;
                // Top-Header
                CopyCells(_SheetPari, targetSheet, rowIndex1: 9, colIndex1: 0, rowIndex2: 9, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                matrix.Add(targetRowIndex, 0, top);

                var            wohnTypIndex = targetRowIndex;
                IWohnungRecord wohnungRec   = null;
                if (_WohnungInfos.TryGetValue(top, out wohnungRec))
                {
                    var wohnTyp = wohnungRec.Typ ?? "";
                    matrix.Add(wohnTypIndex, 10, wohnTyp);
                }

                var rGbKat = topGroup.GroupBy(x => x.Kategorie);
                targetRowIndex += 2;
                int sumNutzEinz = 0;
                foreach (var katGroup in rGbKat.OrderBy(x => x.Key, _KatSortComparer))
                {
                    IKategorieZaRecord kat = katGroup.Key;

                    //bool isPkw = false;

                    if (wohnungRec == null)
                    {
                        // check pkw
                        string pkwWohnTyp = null;
                        if (GetPkwWohnTyp(kat.Widmung, out pkwWohnTyp))
                        {
                            //isPkw = true;
                            matrix.Add(wohnTypIndex, 10, pkwWohnTyp);
                        }
                    }

                    double m2 = 0.0;
                    foreach (var raum in katGroup)
                    {
                        m2 += raum.Flaeche;
                    }

                    var nutzEinz = (int)Math.Round(m2 * kat.ActualNutzwert);
                    sumNutzEinz += nutzEinz;

                    // Kategorie
                    CopyCells(_SheetPari, targetSheet, rowIndex1: 11, colIndex1: 0, rowIndex2: 11, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                    matrix.Add(targetRowIndex, 1, kat.Lage);
                    matrix.Add(targetRowIndex, 2, kat.Widmung);
                    matrix.Add(targetRowIndex, 3, m2);
                    matrix.Add(targetRowIndex, 4, "m²");
                    matrix.Add(targetRowIndex, 5, kat.ActualNutzwert);
                    matrix.Add(targetRowIndex, 7, nutzEinz);
                    targetRowIndex += 1;

                    var begr = kat.Begrundung.Trim();
                    //if (isPkw)
                    //{
                    //    begr = "als Wohnungseigentumsobjekt";
                    //}
                    //else
                    if (string.Compare(begr, "als Zuschlag", StringComparison.OrdinalIgnoreCase) == 0)
                    {
                        begr = "als Wohnungseigentumszuschlag";
                    }
                    else if (string.Compare(begr, "als Zubehör", StringComparison.OrdinalIgnoreCase) == 0)
                    {
                        begr = "als Wohnungseigentumszubehör";
                    }
                    matrix.Add(targetRowIndex, 2, begr);
                    targetRowIndex += 1;
                }
                // Summe
                // 18-20 wegen Abschlusslinie. Deshalt targetRowIndex - 1
                CopyCells(_SheetPari, targetSheet, rowIndex1: 18, colIndex1: 0, rowIndex2: 20, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex - 1);
                targetRowIndex += 1;
                matrix.Add(targetRowIndex, 2, "Summe Nutzwert");
                matrix.Add(targetRowIndex, 3, top);
                matrix.Add(targetRowIndex, 7, sumNutzEinz);
                matrix.Add(targetRowIndex, 8, sumNutzEinz);
                matrix.Add(targetRowIndex, 9, sumNutzEinz * 2);
                matrix.Add(targetRowIndex, 10, gesSumNutzEinz * 2);
                targetRowIndex += 3;
            }
            // Summe Gesamt
            targetRowIndex += 1;
            CopyCells(_SheetPari, targetSheet, rowIndex1: 20, colIndex1: 0, rowIndex2: 20, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
            matrix.Add(targetRowIndex, 2, "SUMME MINDESTANTEILE");
            matrix.Add(targetRowIndex, 7, gesSumNutzEinz);
            matrix.Add(targetRowIndex, 8, gesSumNutzEinz);
            matrix.Add(targetRowIndex, 9, gesSumNutzEinz * 2);
            matrix.Add(targetRowIndex, 10, gesSumNutzEinz * 2);

            matrix.Write(targetSheet);
        }