Jelajahi Sumber

fixed PDO bug in ColumnDealsStatus

Piotr Labudda 6 tahun lalu
induk
melakukan
6aebb8cedd

+ 0 - 1
SE/se-lib/ColumnDealsStatus.php

@@ -401,7 +401,6 @@ class ColumnDealsStatus {
 		DB::getPDO()->execSql($sql);
 
 		$sql = self::run_update_data_wyk_podlaczenia_query($userID);
-		DB::getPDO()->execSql($sql);
 
 		return true;
 	}

+ 64 - 0
SE/se-lib/Route/Test/ConvertDitaRelatedFeature.php

@@ -0,0 +1,64 @@
+<?php
+
+Lib::loadClass('RouteBase');
+Lib::loadClass('XML');
+
+class Route_Test_ConvertDitaRelatedFeature extends RouteBase {
+
+	function defaultAction() {
+		UI::layout( [ $this, 'defaultView' ], [ 'showMenu' => false ] );
+	}
+	function defaultView() {
+		$inputPath = APP_PATH_ROOT . DS . 'schema/ant-url_action/default_db.in7_dziennik_koresp/test-druk/IN7_DZIENNIK_KORESP.dita';
+		$inputBody = file_get_contents($inputPath);
+		DBG::nicePrint(htmlspecialchars($inputBody), "input");
+		DBG::nicePrint(null, "memory_get_usage: " . round(memory_get_usage() / 1024) . " KB");
+
+		$inputXmlArray = XML::readXmlFileToArray($inputPath); // tag
+		// tag => [ 0 => tagName, 1 => attributes, 2 => childrens ]
+		// tagName string
+		// attributes => [ name => value ]
+		// childrens => [ childTag, ... ]
+		// childTag => tag | string
+		DBG::nicePrint($inputXmlArray, "inputXmlArray");
+		DBG::nicePrint(null, "memory_get_usage: " . round(memory_get_usage() / 1024) . " KB");
+
+		{ // find all RelatedFeature recurse
+			$rootTag = $inputXmlArray;
+			$relTagsReader = new RelatedFeatureTagReader($rootTag);
+			$allRelatedFeature = $relTagsReader->findRelatedFeatureRecurse($rootTag);
+			DBG::nicePrint($allRelatedFeature, "allRelatedFeature");
+			DBG::nicePrint(null, "memory_get_usage: " . round(memory_get_usage() / 1024) . " KB");
+
+			$ogcSelectFields = $relTagsReader->findRelatedFeatureRecurse($rootTag);
+			DBG::nicePrint($allRelatedFeature, "allRelatedFeature");
+			DBG::nicePrint(null, "memory_get_usage: " . round(memory_get_usage() / 1024) . " KB");
+		}
+
+		DBG::nicePrint(null, "memory_get_usage: " . round(memory_get_usage() / 1024) . " KB");
+		die('.EOF');
+	}
+
+}
+
+
+class RelatedFeatureTagReader {
+	function __construct() {
+		$this->_parsedTags = [];
+	}
+	function findRelatedFeatureRecurse($tag, $parentTagId = 0, $parsedTags = []) {
+		if (!is_array($tag)) return $parsedTags; // string 
+		DBG::nicePrint([ 'tag' => $tag[0], 'attrs' => $tag[1], '$parsedTags' => $parsedTags ], "findRelatedFeatureRecurse({$tag[0]})");
+		if (empty($tag)) return [];
+		if ('RelatedFeature' === $tag[0]) {
+			$parsedTags[] = [ 'tag' => $tag[0], 'attrs' => $tag[1], 'parentTagId' => $parentTagId ];
+			$parentTagId = count($parsedTags) - 1;
+		}
+		else if (!empty($tag[1]['xpath'])) $parsedTags[] = [ 'tag' => $tag[0], 'attrs' => $tag[1], 'parentTagId' => $parentTagId ];
+		if (empty($tag[2])) return $parsedTags;
+		return array_reduce($tag[2], function ($ret, $childTag) use ($parentTagId) {
+			return $this->findRelatedFeatureRecurse($childTag, $parentTagId, $ret);
+		}, $parsedTags);
+	}
+
+}

+ 168 - 0
SE/se-lib/Route/Test/Umowy.php

@@ -0,0 +1,168 @@
+<?php
+
+Lib::loadClass('RouteBase');
+Lib::loadClass('ColumnDealsStatus');
+
+class Route_Test_Umowy extends RouteBase {
+
+	function allAction() {
+		UI::layout( [ $this, 'allView' ], [ 'showMenu' => false ] );
+	}
+	function allView() {
+		ColumnDealsStatus::reinstall();
+
+		ColumnDealsStatus::run_update($force = true);
+		DBG::nicePrint($msgs, '$msgs');
+
+		$items = DB::getPDO()->fetchAll("
+			select d.ID, d.A_STATUS, t.SERVICES_STATUS
+				, d.*, t.*
+			from `temp_DEALS_STATUS` t
+				left join DEALS_TABLE d on ( d.ID = t.ID_DEALS )
+		");
+	}
+
+	function defaultAction() {
+		UI::layout( [ $this, 'defaultView' ], [ 'showMenu' => false ] );
+	}
+	function defaultView() {
+		$id = V::get('id', 0, $_GET, 'int');
+		if ($id <= 0) throw new Exception("Missing id company");
+
+		echo UI::h('div', [], [
+			"Klient {$id}: ",
+			UI::h('a', [
+				'href' => "index.php?MENU_INIT=USERS2_WINDYKACJA_STATUS&q={$id}&_f=&_oby=ID&_odir=DESC&_user_id={$id}",
+				'target' => "_blank",
+			], "Windykacja"),
+			" | ",
+			UI::h('a', [
+				'href' => "index.php?MENU_INIT=POKAZ_OFERTY_AKTUALNE_FUNC&task=klient_umowy&id_user={$id}",
+				'target' => "_blank",
+			], "Umowy"),
+			" | ",
+			UI::h('a', [
+				'href' => "index.php?FUNCTION_INIT=bm_make_faktura&ARG1_VAL={$id}",
+				'target' => "_blank",
+			], "Faktury"),
+		]);
+
+		$totalDeals = DB::getPDO()->fetchValue(" select count(*) from DEALS_TABLE ");
+		$totalActivatedDeals = DB::getPDO()->fetchValue(" select count(*) from DEALS_TABLE where A_STATUS = 'NORMAL' ");
+		$itemDealsTable = DB::getPDO()->fetchAll(" select * from DEALS_TABLE where ID_BILLING_USERS = :id ", [ ':id' => $id ]);
+		UI::table([ 'rows' => $itemDealsTable, 'caption' => "`DEALS_TABLE`: itemDealsTable, Client = {$id}, total rows = {$totalDeals} (activated: {$totalActivatedDeals})" ]);
+
+		UI::table([ 'rows' => array_map(function ($item) {
+			return array_merge([
+				'ID' => '',
+				'A_STATUS' => '',
+				'P_DEALDATE' => '',
+				'P_DEALDATE_TERM' => '',
+				'USTALONA_DATA_PODLACZENIA' => '',
+				'DATA_WYK_PODLACZENIA' => '',
+				'TODO__DATA_WYK_PODLACZENIA' => DB::getPDO()->fetchValue("
+						(
+							select T_WHEN_CONNECTED, a.ID, s.ID_DEALS_TABLE
+							from SES_USERS2_A a
+								join SERVICES s on ( s.ID = a.ID_SERVICES )
+							where a.ID_BILLING_USERS = :id_client
+								and s.ID_DEALS_TABLE = :id_deal
+						)
+						union
+						(
+							select T_WHEN_CONNECTED, a.ID, s.ID_DEALS_TABLE
+							from SES_TV_A a
+								join SERVICES s on ( s.ID = a.ID_SERVICES )
+							where a.ID_BILLING_USERS = :id_client
+								and s.ID_DEALS_TABLE = :id_deal
+						)
+						union
+						(
+							select T_WHEN_CONNECTED, a.ID, s.ID_DEALS_TABLE
+							from SES_VOIP_A a
+								join SERVICES s on ( s.ID = a.ID_SERVICES )
+							where a.ID_BILLING_USERS = :id_client
+								and s.ID_DEALS_TABLE = :id_deal
+						)
+						order by T_WHEN_CONNECTED asc
+					", [
+						':id_client' => $item['ID_BILLING_USERS'],
+						':id_deal' => $item['ID'],
+					]),
+				'DEALDESC' => '',
+			], $item);
+		}, $itemDealsTable), 'caption' => "`DEALS_TABLE`: itemDealsTable, Client = {$id}, total rows = {$totalDeals} (activated: {$totalActivatedDeals})" ]);
+
+		$itemServices = DB::getPDO()->fetchAll(" select * from SERVICES where ID_BILLING_USERS = :id ", [ ':id' => $id ]);
+		UI::table([ 'rows' => $itemServices, 'caption' => "`SERVICES`: itemServices, Client = {$id}" ]);
+
+		$itemSesNET = DB::getPDO()->fetchAll("
+			select *
+				, '***' as P_SERVICE_QUOTA_PROFILE
+				, '***' as N_AVG_TRAFFIC
+			from SES_USERS2_A
+			where ID_BILLING_USERS = :id
+		", [ ':id' => $id ]);
+		UI::table([ 'rows' => $itemSesNET, 'caption' => "`SES_USERS2_A`: itemSesNET, Client = {$id}" ]);
+
+		$itemSesTV = DB::getPDO()->fetchAll(" select * from SES_TV_A where ID_BILLING_USERS = :id ", [ ':id' => $id ]);
+		UI::table([ 'rows' => $itemSesTV, 'caption' => "`SES_TV_A`: itemSesTV, Client = {$id}" ]);
+
+		$itemSesVOIP = DB::getPDO()->fetchAll(" select * from SES_VOIP_A where ID_BILLING_USERS = :id ", [ ':id' => $id ]);
+		UI::table([ 'rows' => $itemSesVOIP, 'caption' => "`SES_VOIP_A`: itemSesVOIP, Client = {$id}" ]);
+
+		// `SES_*_A`: `T_WHEN_CONNECTED`, `T_WHO_CONNECTED`
+		echo UI::h('div', [ 'style' => "padding:3px 12px; background-color:#eee" ], [
+			UI::h('h3', [], "Daty podłączenia (Aktywacji?):"),
+			UI::h('div', [ 'style' => "padding: 12px; background-color:#eee" ], [
+				UI::h('div', [ 'style' => "background-color:#fff" ], [
+					UI::hTable([ 'rows' => array_map([ $this, 'whenConnectedTableRowView' ], $itemSesNET),  'caption' => "SES_USERS2_A" ]),
+					UI::hTable([ 'rows' => array_map([ $this, 'whenConnectedTableRowView' ], $itemSesTV),   'caption' => "SES_TV_A" ]),
+					UI::hTable([ 'rows' => array_map([ $this, 'whenConnectedTableRowView' ], $itemSesVOIP), 'caption' => "SES_VOIP_A" ]),
+				]),
+			]),
+		]);
+
+		$itemDbTasks = DB::getPDO()->fetchAll("
+			select t.*
+			from DEALS_TABLE d
+				left join _DB_TASKS t on ( t.TRANSACTION_ID = concat('DEALS_TABLE-', d.ID) )
+			where d.ID_BILLING_USERS = :id
+		", [ ':id' => $id ]);
+		UI::table([ 'rows' => $itemDbTasks, 'caption' => "`_DB_TASKS`: itemDbTasks, Client = {$id}" ]);
+
+		DBG::nicePrint(null, "memory_get_usage: " . round(memory_get_usage() / 1024) . " KB");
+		die('.EOF');
+	}
+
+	function whenConnectedTableRowView($item) { // ID, T_WHEN_CONNECTED, T_WHO_CONNECTED
+		return array_merge([
+			'ID' => '',
+			'ID_DEALS_TABLE' => DB::getPDO()->fetchValue(" select ID_DEALS_TABLE from SERVICES where ID = :id ", [ ':id' => $item['ID_SERVICES'] ]),
+			'T_WHEN_CONNECTED' => '',
+			'T_WHO_CONNECTED' => '',
+		], $item);
+	}
+}
+
+
+class RelatedFeatureTagReader {
+	function __construct() {
+		$this->_parsedTags = [];
+	}
+	function findRelatedFeatureRecurse($tag, $parentTagId = 0, $parsedTags = []) {
+		if (!is_array($tag)) return $parsedTags; // string 
+		DBG::nicePrint([ 'tag' => $tag[0], 'attrs' => $tag[1], '$parsedTags' => $parsedTags ], "findRelatedFeatureRecurse({$tag[0]})");
+		if (empty($tag)) return [];
+		if ('RelatedFeature' === $tag[0]) {
+			$parsedTags[] = [ 'tag' => $tag[0], 'attrs' => $tag[1], 'parentTagId' => $parentTagId ];
+			$parentTagId = count($parsedTags) - 1;
+		}
+		else if (!empty($tag[1]['xpath'])) $parsedTags[] = [ 'tag' => $tag[0], 'attrs' => $tag[1], 'parentTagId' => $parentTagId ];
+		if (empty($tag[2])) return $parsedTags;
+		return array_reduce($tag[2], function ($ret, $childTag) use ($parentTagId) {
+			return $this->findRelatedFeatureRecurse($childTag, $parentTagId, $ret);
+		}, $parsedTags);
+	}
+
+}