diff --git a/application/Admin/functions/RtrReporting.php b/application/Admin/functions/RtrReporting.php index f06df11ff..3fdc82766 100644 --- a/application/Admin/functions/RtrReporting.php +++ b/application/Admin/functions/RtrReporting.php @@ -10,6 +10,144 @@ class Admin_RtrReporting { private $additional_owner_networks = [ 7 // mortantsch ]; + private $ort_replace = [ + "St.Ruprecht/Raab" => "Sankt Ruprecht an der Raab", + "St. Ruprecht / Raab" => "Sankt Ruprecht an der Raab", + "St. Ruprecht a.d. Raab" => "Sankt Ruprecht an der Raab", + "St. Ruprecht a.d. R." => "Sankt Ruprecht an der Raab", + "St. Ruprecht/Raab" => "Sankt Ruprecht an der Raab", + "St. Ruprecht" => "Sankt Ruprecht an der Raab", + "Seieersberg" => "Seiersberg", + "St.Stefan im Rosental" => "Sankt Stefan im Rosental", + "St Stefan im Rosental" => "Sankt Stefan im Rosental", + "St. Stefan i.R." => "Sankt Stefan im Rosental", + "St. Stefan i. R." => "Sankt Stefan im Rosental", + "St.Stefan i. R." => "Sankt Stefan im Rosental", + "St.Stefan i.R." => "Sankt Stefan im Rosental", + "St. Stefab i. R." => "Sankt Stefan im Rosental", + "St. Stefan i.R" => "Sankt Stefan im Rosental", + "St. Stefan/R." => "Sankt Stefan im Rosental", + "Pölfing-Bunn" => "Pölfing-Brunn", + "Pölfing Brunn" => "Pölfing-Brunn", + "Eibsiwald" => "Eibiswald", + "Wolfsberg" => "Schwarzautal", + "Wolfsberg i. Sch." => "Schwarzautal", + "Wolfsberg i. Schwarzautal" => "Schwarzautal", + "Wolfsberg i.S." => "Schwarzautal", + "Wolfsberg im Scharzautal" => "Schwarzautal", + "Wolfsberg im Schwarzautal" => "Schwarzautal", + "Wolfberg im Schwarzautal" => "Schwarzautal", + "Schwarzau" => "Schwarzautal", + "Sankt Radegund" => "Sankt Radegund bei Graz", + "Sankt Radegund" => "Sankt Radegund bei Graz", + "St. Radegund" => "Sankt Radegund bei Graz", + "Judendorf-Straßengel" => "Gratwein-Straßengel", + "Judendorf-Strassengel" => "Gratwein-Straßengel", + "Gartwein-Straßengel" => "Gratwein-Straßengel", + "Gratwein" => "Gratwein-Straßengel", + "Fladnitz" => "Fladnitz an der Teichalm", + "Fladnitz a.d.T." => "Fladnitz an der Teichalm", + "Fladnitz a. d. T." => "Fladnitz an der Teichalm", + "Fladnitz/Teichalm" => "Fladnitz an der Teichalm", + "Tulwitz" => "Fladnitz an der Teichalm", + "Fladnitz/T." => "Fladnitz an der Teichalm", + "Fladnitz a. d. Teichalm" => "Fladnitz an der Teichalm", + "Stübing" => "Deutschfeistritz", + "Minihof Liebau" => "Minihof-Liebau", + "Windisch-Minihof" => "Minihof-Liebau", + "Windisch Minihof" => "Minihof-Liebau", + "St. Anna / Aigen" => "Sankt Anna am Aigen", + "St.Anna" => "Sankt Anna am Aigen", + "St.Anna/Aigen" => "Sankt Anna am Aigen", + "St. Margarethen" => "St. Margarethen an der Raab", + "St. Margarethen a.d.Raab" => "St. Margarethen an der Raab", + "St. Margarethen a.d.R." => "St. Margarethen an der Raab", + "Passeil" => "Passail", + "Neudorf b. Passail" => "Passail", + "Neudorf bei Passail" => "Passail", + "Edelsbach" => "Edelsbach bei Feldbach", + "Neuhaus am Klausenb." => "Neuhaus am Klausenbach", + "Kirchberg" => "Kirchberg an der Raab", + "Kirchberg a.d. Raab" => "Kirchberg an der Raab", + "Kirchberg a.d. R." => "Kirchberg an der Raab", + "Kirchberg a. d. Raab" => "Kirchberg an der Raab", + "Kirchberg a. d. Raab" => "Kirchberg an der Raab", + "Kalsdorf" => "Kalsdorf bei Graz", + "Strass" => "Straß in Steiermark", + "St.Oswald o.E." => "Eibiswald", + "St. Peter i. S." => "Sankt Peter im Sulmtal", + "St. Nikolai i.S." => "Sankt Nikolai im Sausal", + "St. Nikoai im Sausal" => "Sankt Nikolai im Sausal", + "Limberg B. Wies" => "Wies", + "Limberg bei Wies" => "Wies", + "Kitzeck" => "Kitzeck im Sausal", + "Nikolai i. S." => "Sankt Nikolai im Sausal", + "St.Nikolai i.S." => "Sankt Nikolai im Sausal", + "St. Nikolai i. S." => "Sankt Nikolai im Sausal", + "Braunau/Inn" => "Braunau am Inn", + "Hohenbrugg" => "Fehring", + "Seiersberg - Pirka" => "Seiersberg-Pirka", + "Heiligenkreuz a. W." => "Heiligenkreuz am Waasen", + "Heiligen Kreuz am Waasen" => "Heiligenkreuz am Waasen", + "Heiligenkreuz a.W." => "Heiligenkreuz am Waasen", + "Heiligenkreuz /W" => "Heiligenkreuz am Waasen", + "Heiligenkreuz a/W" => "Heiligenkreuz am Waasen", + "Rettenbach in der Oststeiermark" => "Pirching am Traubenberg", + "Rettenbach" => "Pirching am Traubenberg", + "St. Ulrich im Greith" => "Sankt Martin im Sulmtal", + "St. Martin i. S." => "Sankt Martin im Sulmtal", + "St. Georgen/Stiefing" => "Sankt Georgen an der Stiefing", + "St. Georgen a. d. Stiefing" => "Sankt Georgen an der Stiefing", + "St.Georgen a/d Stief." => "Sankt Georgen an der Stiefing", + "St. Georgen" => "Sankt Georgen an der Stiefing", + "St. Johann im Sausal" => "Sankt Johann im Saggautal", + "Naas bei Weiz" => "Naas", + "Nöstl bei Weiz" => "Weiz", + "Weiz/Krottendorf" => "Weiz", + "St. Andrä Höch" => "Sankt Andrä-Höch", + "St.Andrä/Sausal" => "Sankt Andrä-Höch", + "Sankt Andrä Höch" => "Sankt Andrä-Höch", + "St. Andrä/Höch" => "Sankt Andrä-Höch", + "St. Andrä - Höch" => "Sankt Andrä-Höch", + "St. Andrä i/S" => "Sankt Andrä-Höch", + "St. Andrä" => "Sankt Andrä-Höch", + "St. Andrä /Höch" => "Sankt Andrä-Höch", + "Hartl bei Kaindorf" => "Hartl", + "Hartl/Tiefenbach" => "Hartl", + "Tilmitsch" => "Tillmitsch", + "St.Marein b. Graz" => "Sankt Marein bei Graz", + "St. Marein b. Graz" => "Sankt Marein bei Graz", + "St. Marein / Graz" => "Sankt Marein bei Graz", + "St. Marein" => "Sankt Marein bei Graz", + "St. MArein b. Graz" => "Sankt Marein bei Graz", + "Weiz - Thannhausen" => "Thannhausen", + "Hof bei Straden" => "Tieschen", + "Kopfing bei Kaindorf" => "Kaindorf", + "Wettmanstätten" => "Wettmannstätten", + "Kirchbach" => "Kirchbach-Zerlach", + "KIRCHBACH" => "Kirchbach-Zerlach", + "Kirchbach - Zerlach" => "Kirchbach-Zerlach", + "Kirchbach Zerlach" => "Kirchbach-Zerlach", + "Kirchbach/Zerlach" => "Kirchbach-Zerlach", + "Kirchbach in der Steiermark" => "Kirchbach-Zerlach", + "Groß-St. Florian" => "Groß Sankt Florian", + "Groß St. Florian" => "Groß Sankt Florian", + "Lang/Lebring" => "Lang", + "St.Stefan" => "Sankt Stefan ob Stainz", + "St.Stefan/Stainz" => "Sankt Stefan ob Stainz", + "St.Josef/Stainz" => "Sankt Josef (Weststeiermark)", + "Rosental" => "Rosental an der Kainach", + "Krottendorf" => "Krottendorf-Gaisfeld", + + //"" => "Sankt Ruprecht an der Raab", + //"" => "Sankt Ruprecht an der Raab", + //"" => "Sankt Ruprecht an der Raab", + //"" => "Sankt Ruprecht an der Raab", + //"" => "Sankt Ruprecht an der Raab", + //"" => "Sankt Ruprecht an der Raab", + //"" => "Sankt Ruprecht an der Raab", + + ]; public function __construct($request = false) { $this->request = $request; @@ -145,6 +283,160 @@ class Admin_RtrReporting { exit; } + protected function b10reportAction() { + $data = []; + $adb = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME); + + $ort2gem = []; + + foreach(ContractModel::searchActive([]) as $contract) { + if(!$contract->product->attributes["rtr_tech_code"]->value) continue; + + $prod_code = $contract->product->attributes["rtr_tech_code"]->value; + + $bb_down = $contract->product->attributes["bw_down"]->value; + $bb_up = $contract->product->attributes["bw_up"]->value; + + if(!$bb_down && substr($prod_code,0,4) == "1042") { + // funkprodukt + $bb_down = 50; + $bb_up = 10; + } + + if(!$bb_down) { + /*$m = []; + if(preg_match('@\d/\d@', $contract->product_name, $m)) { + + }*/ + echo "Keine BB für ".$contract->product_name." ".$contract->id."\n"; + exit; + } + + $is_sym = false; + + if($bb_down == $bb_up) { + $is_sym = true; + $bb_code = $this->getRtrBBCode($bb_down, "sym"); + } else { + $bb_code_down = $this->getRtrBBCode($bb_down, "down"); + $bb_code_up = $this->getRtrBBCode($bb_up, "up"); + } + + + + if($contract->termination_id) { + $plz = trim($contract->termination->building->zip); + $ort = trim($contract->termination->building->city); + } else { + $plz = trim($contract->owner->zip); + $ort = trim($contract->owner->city); + } + + // get Gemeinde ID + + if(!$ort) { + continue; + } + + $ort = preg_replace('/\s+/', ' ', $ort); + $orte = [$ort]; + + + + if(substr($ort, 0, 4) == "St. " || substr($ort, 0, 4) == "St, ") { + $orte[] = preg_replace('/^St[.,]/', "Sankt", $ort); + } + if(substr($ort, 0, 3) == "St." || substr($ort, 0, 3) == "St,") { + $orte[] = preg_replace('/^St[.,]/', "Sankt ", $ort); + } + + if(array_key_exists($ort, $this->ort_replace)) { + $orte[] = $this->ort_replace[$ort]; + } + + if(!array_key_exists("$plz--$ort", $ort2gem)) { + $sql = AddressDB::$wohneinheit_query; + $where = " WHERE Plz.plz='$plz' AND Gemeinde.name IN ('".implode("','", $orte)."') LIMIT 1"; + $sql .= $where; + + //$this->log->debug("$sql\n$where"); + $res = $adb->query($sql); + + if(!$adb->num_rows($res)) { + $sql = AddressDB::$wohneinheit_query; + $where = " WHERE Plz.plz='$plz' AND Ortschaft.name IN ('".implode("','", $orte)."') LIMIT 1"; + //$this->log->debug("$sql\n$where"); + $sql .= $where; + + $res = $adb->query($sql); + + if(!$adb->num_rows($res)) { + echo "Geminde nicht gefunden Plz.plz='$plz' AND Ortschaft.name='$ort'\n"; + exit; + } + } + + $row = $adb->fetch_object($res); + + if(!$row->gemeinde_kennziffer) { + echo "Keine Gem KZ $plz $ort\n"; + exit; + } + + $gemid = $row->gemeinde_kennziffer; + //$this->log->debug("Adding '$plz--$ort' to $gemid"); + $ort2gem["$plz--$ort"] = $gemid; + } else { + $gemid = $ort2gem["$plz--$ort"]; + } + + if(!array_key_exists($gemid, $data)) { + $data[$gemid] = []; + } + if(!array_key_exists($prod_code, $data[$gemid])) { + $data[$gemid][$prod_code] = []; + } + + if($is_sym) { + if(!array_key_exists($bb_code, $data[$gemid][$prod_code])) { + $data[$gemid][$prod_code][$bb_code] = 0; + } + $data[$gemid][$prod_code][$bb_code]++; + } else { + if(!array_key_exists($bb_code_down, $data[$gemid][$prod_code])) { + $data[$gemid][$prod_code][$bb_code_down] = 0; + } + if(!array_key_exists($bb_code_up, $data[$gemid][$prod_code])) { + $data[$gemid][$prod_code][$bb_code_up] = 0; + } + + $data[$gemid][$prod_code][$bb_code_down]++; + $data[$gemid][$prod_code][$bb_code_up]++; + } + } + + $csv_header = "gemid;code;bb;anz_akt_anschl"; + $csv = $csv_header."\n"; + foreach($data as $gemid => $gem) { + foreach($gem as $prod_code => $prod) { + foreach($prod as $bb_code => $count) { + $csv .= $gemid . ";"; + $csv .= $prod_code . ";"; + $csv .= $bb_code . ";"; + $csv .= $count . ";"; + $csv .= "\n"; + } + } + } + + header("Content-type: text/csv; charset=utf-8"); + header('Content-disposition: attachment; filename="rtr-B10-report-'.date('Y-m-d_H-i-s').'.csv"'); + + echo $csv; + exit; + + } + /* * 1042% = radio * 1431% = fiber @@ -166,4 +458,55 @@ class Admin_RtrReporting { } + private function getRtrBBCode($bb, $direction = "down") { + if($direction == "down") { + if($bb < 1) return 1; + if($bb >= 1 && $bb < 2) return 2; + if($bb >= 2 && $bb < 10) return 3; + if($bb >= 10 && $bb < 30) return 4; + if($bb >= 30 && $bb < 50) return 5; + if($bb >= 50 && $bb < 75) return 6; + if($bb >= 75 && $bb < 100) return 7; + if($bb >= 100 && $bb < 150) return 8; + if($bb >= 150 && $bb < 300) return 9; + if($bb >= 300 && $bb < 1000) return 10; + if($bb >= 1000) return 11; + } + + if($direction == "up") { + if($bb < 0.5) return 51; + if($bb >= 0.5 && $bb < 1) return 52; + if($bb >= 1 && $bb < 2) return 53; + if($bb >= 2 && $bb < 3) return 54; + if($bb >= 3 && $bb < 5) return 55; + if($bb >= 5 && $bb < 10) return 56; + if($bb >= 10 && $bb < 20) return 57; + if($bb >= 20 && $bb < 30) return 58; + if($bb >= 30 && $bb < 40) return 59; + if($bb >= 40 && $bb < 100) return 60; + if($bb >= 100 && $bb < 150) return 61; + if($bb >= 150 && $bb < 300) return 62; + if($bb >= 3000 && $bb < 1000) return 63; + if($bb >= 1000) return 64; + } + + if($direction == "sym") { + if($bb < 1) return 21; + if($bb >= 1 && $bb < 2) return 22; + if($bb >= 2 && $bb < 10) return 23; + if($bb >= 10 && $bb < 30) return 24; + if($bb >= 30 && $bb < 50) return 25; + if($bb >= 50 && $bb < 75) return 26; + if($bb >= 75 && $bb < 100) return 27; + if($bb >= 100 && $bb < 150) return 28; + if($bb >= 150 && $bb < 300) return 29; + if($bb >= 300 && $bb < 500) return 30; + if($bb >= 500 && $bb < 750) return 31; + if($bb >= 750 && $bb < 1000) return 32; + if($bb >= 1000) return 33; + } + + return 0; + } + } \ No newline at end of file