ソースを参照

added Mufy test route

Piotr Labudda 9 年 前
コミット
798b80a2de
1 ファイル変更97 行追加0 行削除
  1. 97 0
      SE/se-lib/Route/Mufy.php

+ 97 - 0
SE/se-lib/Route/Mufy.php

@@ -0,0 +1,97 @@
+<?php
+
+Lib::loadClass('RouteBase');
+
+class Route_Mufy extends RouteBase {
+
+  public function defaultAction() {
+    UI::gora();
+    UI::menu();
+    UI::startTag('div', ['class'=>"container"]);
+    try {
+      echo UI::h('h3', [], "Mufy - raport dla uke (TODO)");
+      DB::getPDO()->execSql("
+        update opt_przelacznice_mufy m
+          join TELBOXES t on (t.ID = m.ID_TELBOXES)
+        set m.TELBOXES_X =
+            IF( t.the_geom is NULL, NULL,
+              SUBSTRING(
+                AsWKT( ST_Centroid(t.the_geom) ),
+                7, -- 'POINT('
+                INSTR(AsWKT( ST_Centroid(t.the_geom) ), ' ') - 7
+              )
+            )
+          , m.TELBOXES_Y =
+            IF( t.the_geom is NULL, NULL,
+              REPLACE( SUBSTRING(
+                AsWKT( ST_Centroid(t.the_geom) ),
+                INSTR( AsWKT( ST_Centroid(t.the_geom) ), ' ')
+              ), ')', '')
+            )
+        where m.ID_TELBOXES > 0
+      ");
+      DB::getPDO()->execSql("
+        update opt_przelacznice_mufy m
+        set m.TELBOXES_X = NULL
+          , m.TELBOXES_Y = NULL
+        where m.ID_TELBOXES = 0
+      ");
+      UI::alert('info', "Poprawiono dane w polach TELBOXES_X, TELBOXES_Y w tabeli `opt_przelacznice_mufy` na podstawie powiązanej studni (tabela TELBOXES, pole ID_TELBOXES)");
+
+      $todo = DB::getPDO()->fetchAll("
+        select m.ID, m.Nazwa, m.ID_TELBOXES, m.TELBOXES_X, m.TELBOXES_Y
+            , AsWKT( m.the_geom ) as mufa_the_geom
+            , AsWKT( t.the_geom ) as studnia_the_geom
+            , AsWKT( ST_Centroid(t.the_geom) ) as centerXY
+            , NULL as centerX
+            , NULL as centerY
+            , IF(t.the_geom is NULL, NULL,
+              SUBSTRING(
+                AsWKT( ST_Centroid(t.the_geom) ),
+                7, -- 'POINT('
+                INSTR(AsWKT( ST_Centroid(t.the_geom) ), ' ') - 7
+              )
+            ) as testX
+            , IF(t.the_geom is NULL, NULL,
+              REPLACE(SUBSTRING(
+                AsWKT( ST_Centroid(t.the_geom) ),
+                INSTR(AsWKT( ST_Centroid(t.the_geom) ), ' ')
+              ), ')', '')
+            ) as testY
+        from `opt_przelacznice_mufy` m
+          left join `TELBOXES` t on(t.ID = m.ID_TELBOXES)
+        where m.ID_TELBOXES > 0
+          or m.ID < 10
+      ");
+      UI::table([
+        'rows' => array_map(function ($row) {
+          list($row['centerX'], $row['centerY']) = ('POINT(' == substr($row['centerXY'], 0, strlen('POINT(')))
+            ? explode(' ', substr($row['centerXY'], strlen('POINT('), -1))
+            : ['NULL', 'NULL'];
+          $row['notes'] = '';
+          if ($row['ID_TELBOXES'] > 0) {
+            if ($row['centerX'] != $row['TELBOXES_X'] ||  $row['centerY'] != $row['TELBOXES_Y']) {
+              $row['notes'] = "TODO udpate...";
+              // $affected = DB::getPDO()->update('opt_przelacznice_mufy', 'ID', $row['ID'], [
+              //   'TELBOXES_X' => ($row['centerX'] > 0) ? $row['centerX'] : 'NULL',
+              //   'TELBOXES_Y' => ($row['centerY'] > 0) ? $row['centerY'] : 'NULL',
+              // ]);
+              // $row['notes'] = ($affected) ? "Zaktualizowano TELBOXES X, Y" : "Bez zmian";
+            }
+          } else {
+
+          }
+          $row['testX'] = (null === $row['testX']) ? 'NULL' : $row['testX'];
+          $row['testY'] = (null === $row['testY']) ? 'NULL' : $row['testY'];
+          return $row;
+        }, $todo)
+      ]);
+    } catch (Exception $e) {
+      UI::alert('danger', "Error #" . $e->getCode() .  "|" . $e->getLine() .  ": " . $e->getMessage());
+      DBG::log($e);
+    }
+    UI::endTag('div');
+    UI::dol();
+  }
+
+}