Пример #1
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);
        }
Пример #2
0
        private Excel.Worksheet WriteSumme(int projektId, IProjektInfo pi)
        {
            log.Debug("WriteSumme");
            var       targetSheet   = GetWorksheet("Summe");
            const int MAX_COL_INDEX = 4;

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

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

            // Gesamtfläche
            CopyCells(_SheetSumme, targetSheet, rowIndex1: 5, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false);


            // raume
            var raeume    = _Database.GetRaeume(projektId);
            var wohnungen = _Database.GetWohnungen(projektId);

#if !ALTEVARIANTE
            List <IRaumRecord> tops, allgs, pkws;
            SplitRaeume(raeume, out pkws, out tops, out allgs);
#else
            // alte variante
            var tops  = raeume.Where(x => IsTopForSumme(x)).ToList();
            var pkws  = raeume.Where(x => IsPkwForSumme(x)).ToList();
            var allgs = raeume.Where(x => IsAllgForSumme(x)).ToList();
#endif
            // Liste 1: Tops und PKW
            double sumTopAndPKW   = 0.0;
            int    targetRowIndex = 7;
            var    matrix         = new ExcelMatrix(startRowIndex: targetRowIndex, nrOfCols: MAX_COL_INDEX + 1);
            // tops
            var raeumePerTop = tops.GroupBy(x => x.Top).OrderBy(x => x.Key, _TextNumSortComparer).ToList();
            foreach (var raumKvp in raeumePerTop)
            {
                var top     = raumKvp.Key;
                var summe   = raumKvp.Sum(x => x.Flaeche);
                var wohnung = wohnungen.FirstOrDefault(x => x.Top == top);
                var widmung = (wohnung != null) ? (wohnung.Widmung ?? "Keine Widmung in Top-Block!") : "Keine Widmung in Top-Block!";
                sumTopAndPKW += summe;
                CopyCells(_SheetSumme, targetSheet, rowIndex1: 7, colIndex1: 0, rowIndex2: 7, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                matrix.Add(targetRowIndex, 0, top);
                matrix.Add(targetRowIndex, 1, widmung);
                matrix.Add(targetRowIndex, 3, summe);
                matrix.Add(targetRowIndex, 4, "m²");
                targetRowIndex++;
            }
            // PKV-Abstellplätze
            var sumPkwAbst = pkws.Sum(x => x.Flaeche);
            sumTopAndPKW += sumPkwAbst;
            CopyCells(_SheetSumme, targetSheet, rowIndex1: 7, colIndex1: 0, rowIndex2: 7, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
            matrix.Add(targetRowIndex, 0, "PKW - ABSTELLPLÄTZE");
            matrix.Add(targetRowIndex, 3, sumPkwAbst);
            matrix.Add(targetRowIndex, 4, "m²");

            targetRowIndex++;

            // Summe
            CopyCells(_SheetSumme, targetSheet, rowIndex1: 20, colIndex1: 0, rowIndex2: 22, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
            targetRowIndex++;
            matrix.Add(targetRowIndex, 0, "Summe");
            matrix.Add(targetRowIndex, 3, sumTopAndPKW);
            matrix.Add(targetRowIndex, 4, "m²");
            targetRowIndex += 2;
            CopyCells(_SheetSumme, targetSheet, rowIndex1: 23, colIndex1: 0, rowIndex2: 23, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
            matrix.Add(targetRowIndex, 0, "Gesamtfläche aller TOP's ohne Allgemeinflächen");
            matrix.Add(targetRowIndex, 3, sumTopAndPKW);
            matrix.Add(targetRowIndex, 4, "m²");

            targetRowIndex += 4;
            CopyCells(_SheetSumme, targetSheet, rowIndex1: 27, colIndex1: 0, rowIndex2: 27, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
            matrix.Add(targetRowIndex, 0, "Gesamtfläche aller TOP's ohne Allgemeinflächen");
            matrix.Add(targetRowIndex, 3, sumTopAndPKW);
            matrix.Add(targetRowIndex, 4, "m²");

            // allgemeinflächen
            var sumAllgs = allgs.Sum(x => x.Flaeche);
            targetRowIndex++;
            CopyCells(_SheetSumme, targetSheet, rowIndex1: 27, colIndex1: 0, rowIndex2: 27, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
            matrix.Add(targetRowIndex, 0, "Allgemeinflächen");
            matrix.Add(targetRowIndex, 3, sumAllgs);
            matrix.Add(targetRowIndex, 4, "m²");

            // gesamtsumme
            targetRowIndex++;
            CopyCells(_SheetSumme, targetSheet, rowIndex1: 29, colIndex1: 0, rowIndex2: 31, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
            targetRowIndex += 2;
            matrix.Add(targetRowIndex, 0, "Gesamtfläche aller TOP's mit Allgemeinflächen");
            matrix.Add(targetRowIndex, 3, sumTopAndPKW + sumAllgs);
            matrix.Add(targetRowIndex, 4, "m²");
            matrix.Write(targetSheet);

            return(targetSheet);
        }
Пример #3
0
        private void WriteTops(int projektId, IProjektInfo pi, Excel.Worksheet summeSheet)
        {
            log.Debug("WriteTops");
            var       topSheet      = GetWorksheet("Top");
            const int MAX_COL_INDEX = 4;

            // raume
            var raeume = _Database.GetRaeume(projektId);

#if !ALTEVARIANTE
            List <IRaumRecord> tops, allgs, pkws;
            SplitRaeume(raeume, out pkws, out tops, out allgs);
#else
            // alte variante
            var tops = raeume.Where(x => IsTopForSumme(x)).ToList();
#endif
            var raeumePerTop = tops.GroupBy(x => x.Top).OrderBy(x => x.Key, _TextNumSortComparer).ToList();
            foreach (var raumKvp in raeumePerTop)
            {
                var top = raumKvp.Key;
                topSheet.Copy(topSheet);
                var targetSheet = GetWorksheet("Top (2)");
                targetSheet.Name = top;

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

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

                // Topname
                CopyCells(_SheetTop, targetSheet, rowIndex1: 5, colIndex1: 0, rowIndex2: 5, colIndex2: MAX_COL_INDEX, copyColumnWidth: false);
                targetSheet.Cells[6, 1] = top;

                // Start Matrix
                int targetRowIndex = 9;
                var matrix         = new ExcelMatrix(startRowIndex: targetRowIndex, nrOfCols: MAX_COL_INDEX + 1);

                // Wohnung
                CopyCells(_SheetTop, targetSheet, rowIndex1: 9, colIndex1: 0, rowIndex2: 10, colIndex2: MAX_COL_INDEX, copyColumnWidth: false);
                IWohnungRecord wohnungRec = null;
                if (_WohnungInfos.TryGetValue(top, out wohnungRec))
                {
                    var wohnTyp = wohnungRec.Typ ?? "";
                    matrix.Add(targetRowIndex, 0, wohnTyp);
                }
                else
                {
                    matrix.Add(targetRowIndex, 0, "Wohnungstyp unbekannt!");
                }

                // Per Geschoß ohne Zuschlag und Zubehör
                targetRowIndex += 2;
                double sumGesamt = 0.0;
                var    perGesch  = raumKvp.GroupBy(x => x.Lage).OrderBy(x => x.Key, _GeschossSortComparer).ToList();
                foreach (var rpg in perGesch)
                {
                    var raeumeOhneZuSchlagUndZuBehoer = rpg.Where(x => IsTopWithoutZuschlagAndZubehoer(x)).OrderBy(x => x.Raum).ToList();
                    if (raeumeOhneZuSchlagUndZuBehoer.Count == 0)
                    {
                        continue;
                    }

                    var geschoss = rpg.Key;
                    var sum      = raeumeOhneZuSchlagUndZuBehoer.Sum(x => x.Flaeche);

                    CopyCells(_SheetTop, targetSheet, rowIndex1: 11, colIndex1: 0, rowIndex2: 11, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                    matrix.Add(targetRowIndex, 0, geschoss);

                    foreach (var r in raeumeOhneZuSchlagUndZuBehoer)
                    {
                        matrix.Add(targetRowIndex, 2, r.Raum);
                        matrix.Add(targetRowIndex, 3, r.Flaeche);
                        matrix.Add(targetRowIndex, 4, "m²");
                        targetRowIndex++;
                        CopyCells(_SheetTop, targetSheet, rowIndex1: 12, colIndex1: 0, rowIndex2: 12, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                    }

                    targetRowIndex++;
                    CopyCells(_SheetTop, targetSheet, rowIndex1: 20, colIndex1: 0, rowIndex2: 21, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                    matrix.Add(targetRowIndex, 2, "Summe");
                    matrix.Add(targetRowIndex, 3, sum);
                    matrix.Add(targetRowIndex, 4, "m²");

                    targetRowIndex += 2;

                    sumGesamt += sum;
                }

                // SUMME Fläche TOP ...
                CopyCells(_SheetTop, targetSheet, rowIndex1: 22, colIndex1: 0, rowIndex2: 22, colIndex2: MAX_COL_INDEX, copyColumnWidth: true, targetRowIndex1: targetRowIndex);
                matrix.Add(targetRowIndex, 0, "SUMME Fläche " + top);
                matrix.Add(targetRowIndex, 3, sumGesamt);
                matrix.Add(targetRowIndex, 4, "m²");

                targetRowIndex += 4;

                // ZUSCHLAG FLÄCHEN
                var sumZuschlag = 0.0;
                CopyCells(_SheetTop, targetSheet, rowIndex1: 9, colIndex1: 0, rowIndex2: 10, colIndex2: MAX_COL_INDEX, copyColumnWidth: true, targetRowIndex1: targetRowIndex);
                matrix.Add(targetRowIndex, 0, "ZUSCHLAG FLÄCHEN");
                targetRowIndex += 2;
                foreach (var rpg in perGesch)
                {
                    var raeumeZuschlag = rpg.Where(x => IsZuschlag(x)).OrderBy(x => x.Raum).ToList();
                    if (raeumeZuschlag.Count == 0)
                    {
                        continue;
                    }

                    var sum = raeumeZuschlag.Sum(x => x.Flaeche);

                    var geschoss = rpg.Key;
                    CopyCells(_SheetTop, targetSheet, rowIndex1: 11, colIndex1: 0, rowIndex2: 11, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                    matrix.Add(targetRowIndex, 0, geschoss);

                    foreach (var r in raeumeZuschlag)
                    {
                        matrix.Add(targetRowIndex, 2, r.Raum);
                        matrix.Add(targetRowIndex, 3, r.Flaeche);
                        matrix.Add(targetRowIndex, 4, "m²");
                        targetRowIndex++;
                        CopyCells(_SheetTop, targetSheet, rowIndex1: 12, colIndex1: 0, rowIndex2: 12, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                    }
                    sumGesamt   += sum;
                    sumZuschlag += sum;
                }
                targetRowIndex++;
                CopyCells(_SheetTop, targetSheet, rowIndex1: 20, colIndex1: 0, rowIndex2: 21, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                matrix.Add(targetRowIndex, 2, "Summe Zuschlag");
                matrix.Add(targetRowIndex, 3, sumZuschlag);
                matrix.Add(targetRowIndex, 4, "m²");

                targetRowIndex += 4;

                // ZUBEHÖR FLÄCHEN
                var sumZubehoer = 0.0;
                CopyCells(_SheetTop, targetSheet, rowIndex1: 9, colIndex1: 0, rowIndex2: 10, colIndex2: MAX_COL_INDEX, copyColumnWidth: true, targetRowIndex1: targetRowIndex);
                matrix.Add(targetRowIndex, 0, "ZUBEHÖR FLÄCHEN");
                targetRowIndex += 2;
                foreach (var rpg in perGesch)
                {
                    var raeumeZuschlag = rpg.Where(x => IsZubehoer(x)).OrderBy(x => x.Raum).ToList();
                    if (raeumeZuschlag.Count == 0)
                    {
                        continue;
                    }

                    var geschoss = rpg.Key;
                    var sum      = raeumeZuschlag.Sum(x => x.Flaeche);
                    CopyCells(_SheetTop, targetSheet, rowIndex1: 11, colIndex1: 0, rowIndex2: 11, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                    matrix.Add(targetRowIndex, 0, geschoss);

                    foreach (var r in raeumeZuschlag)
                    {
                        matrix.Add(targetRowIndex, 2, r.Raum);
                        matrix.Add(targetRowIndex, 3, r.Flaeche);
                        matrix.Add(targetRowIndex, 4, "m²");
                        targetRowIndex++;
                        CopyCells(_SheetTop, targetSheet, rowIndex1: 12, colIndex1: 0, rowIndex2: 12, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                    }
                    sumGesamt   += sum;
                    sumZubehoer += sum;
                }

                targetRowIndex++;
                CopyCells(_SheetTop, targetSheet, rowIndex1: 20, colIndex1: 0, rowIndex2: 21, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                matrix.Add(targetRowIndex, 2, "Summe Zubehör");
                matrix.Add(targetRowIndex, 3, sumZubehoer);
                matrix.Add(targetRowIndex, 4, "m²");

                targetRowIndex += 2;
                // SUMME Flächen Zuschlag/Zubehör TOP ...
                CopyCells(_SheetTop, targetSheet, rowIndex1: 22, colIndex1: 0, rowIndex2: 22, colIndex2: MAX_COL_INDEX, copyColumnWidth: true, targetRowIndex1: targetRowIndex);
                matrix.Add(targetRowIndex, 0, "SUMME Flächen Zuschlag/Zubehör " + top);
                matrix.Add(targetRowIndex, 3, sumZubehoer + sumZuschlag);
                matrix.Add(targetRowIndex, 4, "m²");

                // SUMME ALLER FLÄCHE TOP ...
                targetRowIndex += 4;
                CopyCells(_SheetTop, targetSheet, rowIndex1: 45, colIndex1: 0, rowIndex2: 45, colIndex2: MAX_COL_INDEX, copyColumnWidth: true, targetRowIndex1: targetRowIndex);
                matrix.Add(targetRowIndex, 0, "SUMME ALLER FLÄCHEN " + top);
                matrix.Add(targetRowIndex, 3, sumGesamt);
                matrix.Add(targetRowIndex, 4, "m²");

                matrix.Write(targetSheet);
            }
        }
Пример #4
0
        private void WriteAbstellAlt(int projektId, IProjektInfo pi)
        {
            log.Debug("WriteAbstell");
            var       targetSheet   = GetWorksheet("Abstellplätze");
            const int MAX_COL_INDEX = 4;

            // Überschrift PKW ABSTELLPLÄTZE
            CopyCells(_SheetAbstell, targetSheet, rowIndex1: 0, colIndex1: 0, rowIndex2: 0, colIndex2: MAX_COL_INDEX, copyColumnWidth: true);


            // Abstellplätze
            CopyCells(_SheetAbstell, targetSheet, rowIndex1: 4, colIndex1: 0, rowIndex2: 5, colIndex2: MAX_COL_INDEX, copyColumnWidth: false);

            // Gesamtfläche
            CopyCells(_SheetAbstell, targetSheet, rowIndex1: 5, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false);

            // raume
            var raeume = _Database.GetRaeume(projektId);

#if !ALTEVARIANTE
            List <IRaumRecord> tops, allgs, pkws;
            SplitRaeume(raeume, out pkws, out tops, out allgs);
            var pkwRaeumePerWidmung = pkws.GroupBy(x => x.Widmung);
#else
            // alte variante
            var pkwRaeumePerWidmung = raeume.Where(x => IsPkwForSumme(x)).GroupBy(x => x.Widmung);
#endif
            int    targetRowIndex = 6;
            var    matrix         = new ExcelMatrix(startRowIndex: targetRowIndex, nrOfCols: MAX_COL_INDEX + 1);
            double sumGes         = 0.0;
            foreach (var raumKvp in pkwRaeumePerWidmung)
            {
                var    art    = raumKvp.Key;
                double sumArt = 0.0;

                var perGesch = raumKvp.GroupBy(x => x.Lage).OrderBy(x => x.Key, _GeschossSortComparer);
                foreach (var rpg in perGesch)
                {
                    var geschoss = rpg.Key;

                    var sumProGesch = rpg.Sum(x => x.Flaeche);
                    sumGes += sumProGesch;
                    sumArt += sumProGesch;

                    CopyCells(_SheetAbstell, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                    matrix.Add(targetRowIndex, 0, geschoss);

                    foreach (var r in rpg)
                    {
                        matrix.Add(targetRowIndex, 1, r.Top);
                        matrix.Add(targetRowIndex, 2, r.Widmung);
                        matrix.Add(targetRowIndex, 3, r.Flaeche);
                        matrix.Add(targetRowIndex, 4, "m²");
                        targetRowIndex++;
                        CopyCells(_SheetAbstell, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                    }
                }
                CopyCells(_SheetAbstell, targetSheet, rowIndex1: 22, colIndex1: 0, rowIndex2: 24, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                targetRowIndex++;

                matrix.Add(targetRowIndex, 1, "Summe");
                matrix.Add(targetRowIndex, 2, art);
                matrix.Add(targetRowIndex, 3, sumArt);
                matrix.Add(targetRowIndex, 4, "m²");

                targetRowIndex += 2;
            }
            targetRowIndex += 2;
            CopyCells(_SheetAbstell, targetSheet, rowIndex1: 46, colIndex1: 0, rowIndex2: 46, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
            matrix.Add(targetRowIndex, 0, "SUMME ALLE PKW ABSTELLPLÄTZE");
            matrix.Add(targetRowIndex, 3, sumGes);
            matrix.Add(targetRowIndex, 4, "m²");

            matrix.Write(targetSheet);
        }
Пример #5
0
        private void WriteAbstell(int projektId, IProjektInfo pi)
        {
            log.Debug("WriteAbstell");
            var       targetSheet   = GetWorksheet("Abstellplätze");
            const int MAX_COL_INDEX = 6;

            // Überschrift PKW ABSTELLPLÄTZE
            CopyCells(_SheetAbstell, targetSheet, rowIndex1: 0, colIndex1: 0, rowIndex2: 0, colIndex2: MAX_COL_INDEX, copyColumnWidth: true);


            // Abstellplätze
            CopyCells(_SheetAbstell, targetSheet, rowIndex1: 4, colIndex1: 0, rowIndex2: 5, colIndex2: MAX_COL_INDEX, copyColumnWidth: false);

            // Gesamtfläche
            CopyCells(_SheetAbstell, targetSheet, rowIndex1: 5, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false);

            // raume
            var raeume = _Database.GetRaeume(projektId);

#if !ALTEVARIANTE
            List <IRaumRecord> tops, allgs, pkws;
            SplitRaeume(raeume, out pkws, out tops, out allgs);
            List <AbstellAndZuschlag> abAndZu = SplitPkws(pkws);
            var pkwRaeumePerWidmung           = abAndZu.GroupBy(x => x.Abstellplatz.Widmung);
#else
            // alte variante
            var pkwRaeumePerWidmung = raeume.Where(x => IsPkwForSumme(x)).GroupBy(x => x.Widmung);
#endif
            int    targetRowIndex = 6;
            var    matrix         = new ExcelMatrix(startRowIndex: targetRowIndex, nrOfCols: MAX_COL_INDEX + 1);
            double sumGes         = 0.0;
            foreach (var raumKvp in pkwRaeumePerWidmung)
            {
                var    art    = raumKvp.Key;
                double sumArt = 0.0;

                var perGesch = raumKvp.GroupBy(x => x.Abstellplatz.Lage).OrderBy(x => x.Key, _GeschossSortComparer);
                foreach (var rpg in perGesch)
                {
                    var geschoss = rpg.Key;

                    var sumProGesch = rpg.Sum(x => x.Abstellplatz.Flaeche);
                    sumGes += sumProGesch;
                    sumArt += sumProGesch;

                    CopyCells(_SheetAbstell, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                    matrix.Add(targetRowIndex, 0, geschoss);

                    var rpgOrderByTops = rpg.OrderBy(x => x.Abstellplatz.Top, _TextNumSortComparer).ToList();
                    foreach (var r in rpgOrderByTops)
                    {
                        if (r.Zuschlaege.Count == 0)
                        {
                            matrix.Add(targetRowIndex, 1, r.Abstellplatz.Top);
                            matrix.Add(targetRowIndex, 2, r.Abstellplatz.Widmung);
                            matrix.Add(targetRowIndex, 5, r.Abstellplatz.Flaeche);
                            matrix.Add(targetRowIndex, 6, "m²");
                            targetRowIndex++;
                            CopyCells(_SheetAbstell, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                        }
                        else
                        {
                            // todo: add sum to sumGes and sumArt
                            matrix.Add(targetRowIndex, 1, r.Abstellplatz.Top);
                            matrix.Add(targetRowIndex, 2, r.Abstellplatz.Widmung);
                            matrix.Add(targetRowIndex, 3, r.Abstellplatz.Flaeche);
                            matrix.Add(targetRowIndex, 4, "m²");
                            targetRowIndex++;
                            CopyCells(_SheetAbstell, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                            var sumZusch = 0.0;
                            foreach (var zuschl in r.Zuschlaege)
                            {
                                var wid        = zuschl.Widmung ?? "";
                                var begrundung = zuschl.Begrundung ?? "";
                                matrix.Add(targetRowIndex, 2, wid + " " + begrundung);
                                matrix.Add(targetRowIndex, 3, zuschl.Flaeche);
                                matrix.Add(targetRowIndex, 4, "m²");
                                sumZusch += zuschl.Flaeche;
                                targetRowIndex++;
                                CopyCells(_SheetAbstell, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                            }
                            sumArt += sumZusch;
                            sumGes += sumZusch;
                            CopyCells(_SheetAbstell, targetSheet, rowIndex1: 10, colIndex1: 0, rowIndex2: 10, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                            matrix.Add(targetRowIndex, 1, "Summe");
                            matrix.Add(targetRowIndex, 2, r.Abstellplatz.Top);
                            matrix.Add(targetRowIndex, 5, r.Abstellplatz.Flaeche + sumZusch);
                            matrix.Add(targetRowIndex, 6, "m²");
                            targetRowIndex++;
                            CopyCells(_SheetAbstell, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                        }
                    }
                }
                CopyCells(_SheetAbstell, targetSheet, rowIndex1: 14, colIndex1: 0, rowIndex2: 16, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                targetRowIndex++;

                matrix.Add(targetRowIndex, 1, "Summe");
                matrix.Add(targetRowIndex, 2, art);
                matrix.Add(targetRowIndex, 5, sumArt);
                matrix.Add(targetRowIndex, 6, "m²");

                targetRowIndex += 2;
            }
            targetRowIndex += 2;
            CopyCells(_SheetAbstell, targetSheet, rowIndex1: 35, colIndex1: 0, rowIndex2: 35, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
            matrix.Add(targetRowIndex, 0, "SUMME ALLE PKW ABSTELLPLÄTZE");
            matrix.Add(targetRowIndex, 5, sumGes);
            matrix.Add(targetRowIndex, 6, "m²");

            matrix.Write(targetSheet);
        }
Пример #6
0
        private void WriteAllgemein(int projektId, IProjektInfo pi)
        {
            log.Debug("WriteAllgemein");
            var       targetSheet   = GetWorksheet("ALLGEMEIN");
            const int MAX_COL_INDEX = 4;

            // Überschrift PKW ABSTELLPLÄTZE
            CopyCells(_SheetAllgemein, targetSheet, rowIndex1: 0, colIndex1: 0, rowIndex2: 0, colIndex2: MAX_COL_INDEX, copyColumnWidth: true);


            // raume
            var raeume = _Database.GetRaeume(projektId);

#if !ALTEVARIANTE
            List <IRaumRecord> tops, allgs, pkws;
            SplitRaeume(raeume, out pkws, out tops, out allgs);
            var allgRaeumePerTop = allgs.GroupBy(x => x.Top).OrderBy(x => x.Key, _TopAllgComparer).ToList();
#else
            // alte variante
            var allgRaeumePerTop = raeume.Where(x => IsAllgForSumme(x)).GroupBy(x => x.Top).OrderBy(x => x.Key, _TopAllgComparer).ToList();
#endif

            int    targetRowIndex = 4;
            var    matrix         = new ExcelMatrix(startRowIndex: targetRowIndex, nrOfCols: MAX_COL_INDEX + 1);
            double sumGes         = 0.0;
            foreach (var raumKvp in allgRaeumePerTop)
            {
                var art    = raumKvp.Key;
                var topBez = art.Replace("ALLG", "");
                if (string.IsNullOrEmpty(topBez))
                {
                    topBez = "AUSSENANLAGEN";
                }
                double sumArt = 0.0;

                CopyCells(_SheetAllgemein, targetSheet, rowIndex1: 4, colIndex1: 0, rowIndex2: 5, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                matrix.Add(targetRowIndex, 0, topBez);
                targetRowIndex += 2;
                var  perGesch   = raumKvp.GroupBy(x => x.Lage).OrderBy(x => x.Key, _GeschossSortComparer);
                bool firstGesch = true;
                foreach (var rpg in perGesch)
                {
                    if (firstGesch)
                    {
                        firstGesch = false;
                    }
                    else
                    {
                        targetRowIndex++;
                    }
                    var geschoss = rpg.Key;

                    var sumProGesch = rpg.Sum(x => x.Flaeche);
                    sumGes += sumProGesch;
                    sumArt += sumProGesch;

                    CopyCells(_SheetAllgemein, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                    matrix.Add(targetRowIndex, 0, geschoss);

                    var sortedR = rpg.OrderBy(x => x.Raum);
                    foreach (var r in sortedR)
                    {
                        matrix.Add(targetRowIndex, 2, r.Raum);
                        matrix.Add(targetRowIndex, 3, r.Flaeche);
                        matrix.Add(targetRowIndex, 4, "m²");
                        targetRowIndex++;
                        CopyCells(_SheetAllgemein, targetSheet, rowIndex1: 6, colIndex1: 0, rowIndex2: 6, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                    }
                }
                CopyCells(_SheetAllgemein, targetSheet, rowIndex1: 12, colIndex1: 0, rowIndex2: 14, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
                targetRowIndex++;

                matrix.Add(targetRowIndex, 2, "Summe");
                matrix.Add(targetRowIndex, 3, sumArt);
                matrix.Add(targetRowIndex, 4, "m²");

                targetRowIndex += 2;
            }
            targetRowIndex += 2;
            CopyCells(_SheetAllgemein, targetSheet, rowIndex1: 39, colIndex1: 0, rowIndex2: 40, colIndex2: MAX_COL_INDEX, copyColumnWidth: false, targetRowIndex1: targetRowIndex);
            matrix.Add(targetRowIndex, 0, "SUMME ALLER ALLGEMEINFLÄCHEN");
            matrix.Add(targetRowIndex, 3, sumGes);
            matrix.Add(targetRowIndex, 4, "m²");
            targetRowIndex++;
            matrix.Add(targetRowIndex, 0, "nicht für Nutzwert relevant");

            matrix.Write(targetSheet);
        }