get()->first(); $gutachter = Gutachter::where('id', $projekt->gutachters_id)->get()->first(); // $auftraggeber = Auftraggeber::where('id', $projekt->auftraggebers_id)->get()->first(); $projektname = str_replace(',', '', $projekt->name); $projektname = preg_replace("'\W, '", '', $projektname); $_headers = self::header(); // SPREADSHEET start $spreadsheet = new Spreadsheet; $spreadsheet->getProperties()->setCreator('Hermann Telser Nutzwertberechnung') ->setLastModifiedBy('Hermann Telser Nutzwertberechnung') ->setTitle('Nutzwertberechnung') ->setDescription('Nutzwertberechnung v5.0.1, © Hermann Telser 2007 - '.date('Y')); $_rot = [2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 51, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 91, 92, 93, 94]; $_gelb = [8, 19, 29]; $row = '1'; $coll = 'A'; $spreadsheet->setActiveSheetIndex(0); foreach ($_headers as $key => $value) { $cell = $coll.$row; $sheet = $spreadsheet->getActiveSheet(); $sheet->setCellValue($cell, $value); if (\in_array($key, $_rot)) { $spreadsheet->getActiveSheet()->getStyle($cell)->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FDE8E8'); } elseif (\in_array($key, $_gelb)) { $spreadsheet->getActiveSheet()->getStyle($cell)->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FDF6B2'); } $sheet->getStyle($cell) ->getBorders() ->getOutline() ->setBorderStyle(Border::BORDER_THIN); $coll++; } $sheet = $spreadsheet->getActiveSheet(); foreach ($sheet->getColumnIterator() as $column) { $sheet->getColumnDimension($column->getColumnIndex())->setAutoSize(true); } $_raumorientierung = DB::table('raumorientierung') ->join('orientierungs', 'raumorientierung.orientierungs_id', '=', 'orientierungs.id') ->select( 'raumorientierung.id', 'raumorientierung.top_nr', 'raumorientierung.qm_m1', 'raumorientierung.qm_m1', 'raumorientierung.factor', 'raumorientierung.nicht_in_orientierung', 'raumorientierung.nutzwert_summe', 'orientierungs.name as orientierung', ) ->where('raumorientierung.projekts_id', $projekts_id) ->groupBy('raumorientierung.id') ->orderBy('raumorientierung.top_nr', 'ASC') ->get(); $spalten = []; $letter = 'A'; while ($letter !== 'HU') { $key = $letter++; $spalten[$key] = ''; } $row = 2; $_data = []; foreach ($_raumorientierung as $key => $raumorientierung) { $_data[$key] = $spalten; $_data[$key]['B'] = $raumorientierung->top_nr; if ($raumorientierung->nicht_in_orientierung == 0) { $_data[$key]['C'] = $raumorientierung->nutzwert_summe; $_data[$key]['D'] = $raumorientierung->qm_m1; $zunutzwert = self::zunutzwert($raumorientierung->id); if ($zunutzwert > 0) { $_data[$key]['E'] = $zunutzwert; } $_data[$key]['F'] = $raumorientierung->qm_m1 + $zunutzwert; } else { $_data[$key]['I'] = $raumorientierung->nutzwert_summe; $res = self::raumalles($raumorientierung->id, [5]); $qm = 0; $raum = ''; foreach ($res as $value) { $qm += (float) $value->qm; $raum = $value->raum; } $_data[$key]['L'] = number_format($qm, 2, ',', ''); $_data[$key]['AT'] = $raum; } // Parifizierer $_data[$key]['R'] = $gutachter->kennung; // Lage $_data[$key]['AQ'] = self::geschoss($raumorientierung->id); // Orientierung $raumorientierung->orientierung = $raumorientierung->orientierung == 'Ohne Zuordnung' ? '' : $raumorientierung->orientierung; $_data[$key]['AR'] = $raumorientierung->orientierung; // WOHNUNG if ($raumorientierung->nicht_in_orientierung == 0) { $_data[$key]['AT'] = self::beschreibung($raumorientierung->id, [1, 2, 8]); // M2 $_data[$key]['AU'] = self::loggien_qm($raumorientierung->id, [2, 8]); // M3 $_data[$key]['AV'] = self::beschreibung_qm($raumorientierung->id, [3, 7]); // M4 $_data[$key]['AW'] = self::beschreibung_qm($raumorientierung->id, [3, 4]); } else { $_data[$key]['AT'] = self::beschreibung($raumorientierung->id, [6, 9]); $_data[$key]['AV'] = self::beschreibung_qm($raumorientierung->id, [6, 9]); } $row++; } $sheet = $spreadsheet->getActiveSheet(); $sheet->fromArray($_data, null, 'A2'); // Set active sheet index to the first sheet, so Excel opens this as the first sheet $spreadsheet->setActiveSheetIndex(0); // Rename worksheet $spreadsheet->getActiveSheet()->setTitle('Daten für den Kaufvertrag'); // output $writer = IOFactory::createWriter($spreadsheet, 'Xlsx'); // $writer->save('php://output'); $writer->save($filepath); } private static function raumalles($raumorientierung_id, $methoden) { return DB::table('raumalles') ->select('*') ->where('raumorientierung_id', $raumorientierung_id) ->whereIn('methodes_id', $methoden) ->get(); } private static function zunutzwert($raumorientierung_id) { $zunutzwert = 0; $res = DB::table('raumalles') ->select('methodes_id', 'raum', 'factor', 'qm') ->where('raumorientierung_id', $raumorientierung_id) ->whereIn('methodes_id', [2, 8]) ->get(); foreach ($res as $value) { $zunutzwert += $value->qm; } return $zunutzwert; } private static function beschreibung_qm($raumorientierung_id, $methoden) { $res = DB::table('raumalles') ->select('*') ->where('raumorientierung_id', $raumorientierung_id) ->whereIn('methodes_id', $methoden) ->get(); $_tmp = []; foreach ($res as $value) { if (! in_array($value->raum, ['Loggia', 'Loggia 1', 'Loggia 2'])) { $_tmp[] = $value->raum.': '.number_format($value->qm, 2, ',', '').' m²'; } } return implode(', ', $_tmp); } private static function loggien_qm($raumorientierung_id, $methoden) { $res = DB::table('raumalles') ->select('*') ->where('raumorientierung_id', $raumorientierung_id) ->whereIn('methodes_id', $methoden) ->get(); $_tmp = []; foreach ($res as $value) { if (in_array($value->raum, ['Loggia', 'Loggia 1', 'Loggia 2'])) { $_tmp[] = $value->raum.': '.number_format($value->qm, 2, ',', '').' m²'; } } return implode(', ', $_tmp); } private static function beschreibung($raumorientierung_id, $methoden) { $res = DB::table('raumalles') ->select('*') ->where('raumorientierung_id', $raumorientierung_id) ->whereIn('methodes_id', $methoden) ->get(); $_tmp = []; foreach ($res as $value) { if (! in_array($value->raum, ['Loggia', 'Loggia 1', 'Loggia 2'])) { $_tmp[] = $value->raum; } } return implode(', ', $_tmp); } private static function geschoss($raumorientierung_id) { $res = DB::table('raumalles') ->select('geschoss') ->where('raumorientierung_id', $raumorientierung_id) ->where('methodes_id', '=', 1) ->get(); foreach ($res as $key => $value) { return $value->geschoss; } return ''; } private static function header() { return [ 'Bautengruppe', 'TopNr', 'NWWhg', 'Nutzfläche', 'Loggia', 'Ges.Nutzfläche', 'AbstellplatzTop', 'AbstellplatzTop2', 'NWAbstellplatz', 'NWAbstellplatz2', 'Anzahl Pkw', 'Stellplatzfläche', 'Stellplatzfläche2', 'NW-Whg+Pkw1', 'NW-Whg+Pkw1+2', 'Gesamtnutzwert', 'Gesamtnutzwert2', 'Parifizierer', 'Datum_Parifi', 'Anzahl Whg', 'Anzahl AP', 'Durchgang', 'Anrede', 'Titel', 'Vorname', 'Nachname', 'Geburt', 'Beruf', 'PersonStraße', 'PLZ', 'Ort', 'Partner ja=1', 'Anrede_P', 'Titel_P', 'Vorname_P', 'Nachname_P', 'Geburt_P', 'Beruf_P', 'Straße_P', 'Plz_P', 'Ort_P', 'Haus', 'Lage', 'Orientierung', 'Orientierung PPL', 'Beschreibung', 'Loggien', 'Balkone', 'Zubehör', 'Grundkosten', 'Baukosten', '15% Eigenmittel', 'zusätz. Eigenmittel', 'KP-Wohnung und AP', 'KP-Wohnung', 'KP-Stellplatz', 'KP-Stellplatz2', 'Kaufpreis', 'UST ja=1', 'KP WHG netto', 'Ust WHG', 'Brutto WHG', 'KP TG netto', 'Ust TG', 'Brutto TG', 'UST WHG+TG', 'Netto WHG+TG', 'Brutto WHG+TG', 'Fälligk_KP_1', 'Fälligk_KP_2', 'Fälligk_KP_3', 'KPTeil1', 'KPTeil1 UST', 'KPTeil2', 'KPTeil2 UST', 'KPTeil3', 'KPTeil3 UST', 'KPTeil4', 'KPTeil4 UST', 'Kontrolle_KP', 'Kontrolle_KP UST', 'pfand_ngs', 'pfand_ngs UST', 'VertrKo', 'Bankgarantie', 'Wohnung.WbfDarlehen', 'Globaldarlehen', 'Globaldarlehen abzügl.zusätzl.EM', 'Globalbank', 'GrundstückNummer', 'GstGröße', 'Einlagezahl', 'Grundbuch', 'Baubeginn', 'Baufertigstellung', 'Spät_Übergabe', 'Bau-Ausstatt', 'Architekt', 'Baubescheid', 'Zahl-Baubescheid', 'Baubescheid2', 'Zahl-Baubescheid2', 'UnterschriftKaufvertragAm', 'Beglaubigungsnummer', 'UB1_Datum', 'EFNR1', 'STNR1', 'UB2_Datum', 'EFNR2', 'STNR2', 'GVKB_Datum', 'GVKB_Zahl', 'Fremdfinanzierung', 'KPVertr', 'TZl', ]; } }