Added RTR B10 report
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user