diff --git a/extdbms/lib/Configs/Constant.php b/extdbms/lib/Configs/Constant.php index ef75a59..f6ccce2 100644 --- a/extdbms/lib/Configs/Constant.php +++ b/extdbms/lib/Configs/Constant.php @@ -124,3 +124,7 @@ define('DBMS_GEARLIST_CPU_TYPES', [ 'DX3', 'DQ233' ]); +define('DBMS_CLIENT_POINT_TYPE', [ + 'deposit' => '입금', + 'withdrawal' => '출금', +]); diff --git a/extdbms/lib/Configs/Route.php b/extdbms/lib/Configs/Route.php index 98fe997..0f9469f 100644 --- a/extdbms/lib/Configs/Route.php +++ b/extdbms/lib/Configs/Route.php @@ -2,7 +2,7 @@ namespace lib\Configs; -use lib\Controllers\DBMS\Client\ClientController; +use lib\Controllers\DBMS\Client\DashboardController as ClientDashboardController; use lib\Controllers\DBMS\Client\CouponController; use lib\Controllers\DBMS\Client\MemoController; use lib\Controllers\DBMS\Client\PaymentController; @@ -16,10 +16,13 @@ use lib\Core\Router; //Client관련련 $router->group('dbms/client', function (Router $router) { - $router->add('GET', 'totalcount', function ($params) { - $controller = new ClientCOntroller($params); - return $controller->totalcount(); - // Response::view($result); + //Dashboard관련 + $router->group('dashboard', function (Router $router) { + $router->add('GET', 'totalcount', function ($params) { + $controller = new ClientDashboardController($params); + return $controller->totalcount(); + // Response::view($result); + }); }); //메모관련 $router->group('memo', function (Router $router) { diff --git a/extdbms/lib/Controllers/CommonController.php b/extdbms/lib/Controllers/CommonController.php index 810b6d3..3a07645 100644 --- a/extdbms/lib/Controllers/CommonController.php +++ b/extdbms/lib/Controllers/CommonController.php @@ -4,10 +4,10 @@ namespace lib\Controllers; use lib\Core\Controller as Core; -class CommonController extends Core +abstract class CommonController extends Core { - protected function __construct() + protected function __construct(array $params = []) { - parent::__construct(); + parent::__construct($params); } // } //Class diff --git a/extdbms/lib/Controllers/DBMS/Client/ClientController.php b/extdbms/lib/Controllers/DBMS/Client/ClientController.php index bb038b7..58711f9 100644 --- a/extdbms/lib/Controllers/DBMS/Client/ClientController.php +++ b/extdbms/lib/Controllers/DBMS/Client/ClientController.php @@ -6,13 +6,13 @@ use lib\Controllers\DBMS\DBMSController; use lib\Services\ClientService; use lib\Services\MemberService; -class ClientController extends DBMSController +abstract class ClientController extends DBMSController { private ?ClientService $_clientService = null; private ?MemberService $_memberService = null; - public function __construct() + protected function __construct(array $params = []) { - parent::__construct(); + parent::__construct($params); $this->getView()->setPath('client'); } // final public function getClientService(): ClientService @@ -29,7 +29,6 @@ class ClientController extends DBMSController } return $this->_memberService; } - protected function setDefaultRequestData(): array { $this->client = null; @@ -71,46 +70,4 @@ class ClientController extends DBMSController } return [$client_code, $member_code, $service_code]; } - - //서비스카운팅 , total_counting_customer.php - //CLI 접속방법 : php index.php site/client/totalcount/client_code/코드번호 - //WEB 접속방법 : http://localhost/site/client/totalcount/client_code/코드번호 - public function totalcount() - { - //사용자정보 - $client_code = $this->request->get('client_code'); - // echo "Client_Code:" . $client_code; - if ($client_code) { - $this->getClientService()->getModel()->where('Client_Code', $client_code); - $client = $this->getClientService()->getEntity(); - if (!$client) { - throw new \Exception("[$client_code]에 해당하는 고객정보가 존재하지 않습니다."); - } - $this->client = $client; - } - //서비스위치별(치바,도쿄등) - $dashboard = []; - foreach (DBMS_SERVICE_SWITCHCODE as $district => $switchcodes) { - $switchcode_begin = $switchcodes['begin']; - $switchcode_end = $switchcodes['end']; - $this->getServiceService()->getModel()->where("client_code", "{$client_code}"); - $this->getServiceService()->getModel()->where("service_sw BETWEEN '{$switchcode_begin}' AND '{$switchcode_end}'"); - $this->getServiceService()->getModel()->where("service_status", "o"); - $this->getServiceService()->getModel()->whereNotIn("service_line", ['solo', 'test', 'event', 'substitution']); - $dashboard[$district] = $this->getServiceService()->getCount(); - } //foreach - //서비스라인별(일반,방어,전용,테스트,대체,vpn,event등) - foreach (DBMS_SERVICE_LINE_ALL as $service_line => $label) { - $this->getServiceService()->getModel()->where('client_code', $client_code); - $this->getServiceService()->getModel()->where('service_line', $service_line); - $dashboard[$service_line] = $this->getServiceService()->getCount("SUM(coupon) as cnt"); - } //foreach - //서비스상태별(일반,방어만) - $this->getServiceService()->getModel()->where("client_code", $client_code); - $this->getServiceService()->getModel()->whereNotIn("service_line", ['solo', 'test', 'event', 'substitution']); - $dashboard['coupon'] = $this->getServiceService()->getCount("SUM(coupon) as cnt"); - $this->dashboard = $dashboard; - $this->client_code = $client_code; - return $this->render(__FUNCTION__); - } } //Class diff --git a/extdbms/lib/Controllers/DBMS/Client/CouponController.php b/extdbms/lib/Controllers/DBMS/Client/CouponController.php index 09092d1..e6bb65c 100644 --- a/extdbms/lib/Controllers/DBMS/Client/CouponController.php +++ b/extdbms/lib/Controllers/DBMS/Client/CouponController.php @@ -10,9 +10,9 @@ class CouponController extends ClientController { private ?OnetimeService $_onetimeService = null; private ?HistoryService $_historyService = null; - public function __construct() + public function __construct(array $params = []) { - parent::__construct(); + parent::__construct($params); $this->getView()->setPath('coupon'); } // public function getOnetimeService(): OnetimeService diff --git a/extdbms/lib/Controllers/DBMS/Client/DashboardController.php b/extdbms/lib/Controllers/DBMS/Client/DashboardController.php new file mode 100644 index 0000000..0ee20f4 --- /dev/null +++ b/extdbms/lib/Controllers/DBMS/Client/DashboardController.php @@ -0,0 +1,99 @@ +getView()->setPath('dashboard'); + } // + + protected function setDefaultRequestData(): array + { + $this->client = null; + $this->member = null; + $this->service = null; + //사용자정보 + $client_code = $this->request->get('client_code'); + // echo "Client_Code:" . $client_code; + // exit; + if ($client_code) { + $this->getClientService()->getModel()->where('Client_Code', $client_code); + $client = $this->getClientService()->getEntity(); + if (!$client) { + throw new \Exception("[$client_code]에 해당하는 고객정보가 존재하지 않습니다."); + } + $this->client = $client; + } + //관리자정보(등록자) + $member_code = $this->request->get('mkid'); + // echo "member_code:" . $member_code; + if ($member_code) { + $this->getMemberService()->getModel()->where($this->getMemberService()->getModel()::PKField, $member_code); + $member = $this->getMemberService()->getEntity(); + if (!$member) { + throw new \Exception("[$member_code]에 해당하는 관리자정보가 존재하지 않습니다."); + } + $this->member = $member; + } + //서비스정보 + $service_code = $this->request->get('service_code'); + // echo "service_code:" . $service_code; + if ($service_code) { + $this->getServiceService()->getModel()->where($this->getServiceService()->getModel()::PKField, $service_code); + $service = $this->getServiceService()->getEntity(); + if (!$service) { + throw new \Exception("[$service_code]에 해당하는 서비스정보가 존재하지 않습니다."); + } + $this->service = $service; + } + return [$client_code, $member_code, $service_code]; + } + + //서비스카운팅 , total_counting_customer.php + //CLI 접속방법 : php index.php site/client/totalcount/client_code/코드번호 + //WEB 접속방법 : http://localhost/site/client/totalcount/client_code/코드번호 + public function totalcount() + { + //사용자정보 + $client_code = $this->request->get('client_code'); + // echo "Client_Code:" . $client_code; + if ($client_code) { + $this->getClientService()->getModel()->where('Client_Code', $client_code); + $client = $this->getClientService()->getEntity(); + if (!$client) { + throw new \Exception("[$client_code]에 해당하는 고객정보가 존재하지 않습니다."); + } + $this->client = $client; + } + //서비스위치별(치바,도쿄등) + $dashboard = []; + foreach (DBMS_SERVICE_SWITCHCODE as $district => $switchcodes) { + $switchcode_begin = $switchcodes['begin']; + $switchcode_end = $switchcodes['end']; + $this->getServiceService()->getModel()->where("client_code", "{$client_code}"); + $this->getServiceService()->getModel()->where("service_sw BETWEEN '{$switchcode_begin}' AND '{$switchcode_end}'"); + $this->getServiceService()->getModel()->where("service_status", "o"); + $this->getServiceService()->getModel()->whereNotIn("service_line", ['solo', 'test', 'event', 'substitution']); + $dashboard[$district] = $this->getServiceService()->getCount(); + } //foreach + //서비스라인별(일반,방어,전용,테스트,대체,vpn,event등) + foreach (DBMS_SERVICE_LINE_ALL as $service_line => $label) { + $this->getServiceService()->getModel()->where('client_code', $client_code); + $this->getServiceService()->getModel()->where('service_line', $service_line); + $dashboard[$service_line] = $this->getServiceService()->getCount("SUM(coupon) as cnt"); + } //foreach + //서비스상태별(일반,방어만) + $this->getServiceService()->getModel()->where("client_code", $client_code); + $this->getServiceService()->getModel()->whereNotIn("service_line", ['solo', 'test', 'event', 'substitution']); + $dashboard['coupon'] = $this->getServiceService()->getCount("SUM(coupon) as cnt"); + $this->dashboard = $dashboard; + $this->client_code = $client_code; + return $this->render(__FUNCTION__); + } +} //Class diff --git a/extdbms/lib/Controllers/DBMS/Client/MemoController.php b/extdbms/lib/Controllers/DBMS/Client/MemoController.php index 71b08fb..00b412c 100644 --- a/extdbms/lib/Controllers/DBMS/Client/MemoController.php +++ b/extdbms/lib/Controllers/DBMS/Client/MemoController.php @@ -6,9 +6,9 @@ use lib\Helpers\ServiceHelper; class MemoController extends ClientController { - public function __construct() + public function __construct(array $params = []) { - parent::__construct(); + parent::__construct($params); $this->getView()->setPath('memo'); $this->helper = new ServiceHelper(); } // diff --git a/extdbms/lib/Controllers/DBMS/Client/PaymentController.php b/extdbms/lib/Controllers/DBMS/Client/PaymentController.php index 5ed90f3..53da7e2 100644 --- a/extdbms/lib/Controllers/DBMS/Client/PaymentController.php +++ b/extdbms/lib/Controllers/DBMS/Client/PaymentController.php @@ -6,9 +6,9 @@ use lib\Utils\Pagination; class PaymentController extends ClientController { - public function __construct() + public function __construct(array $params = []) { - parent::__construct(); + parent::__construct($params); $this->getView()->setPath('payment'); } // diff --git a/extdbms/lib/Controllers/DBMS/Client/PointController.php b/extdbms/lib/Controllers/DBMS/Client/PointController.php index 2b4f77a..fb68cfa 100644 --- a/extdbms/lib/Controllers/DBMS/Client/PointController.php +++ b/extdbms/lib/Controllers/DBMS/Client/PointController.php @@ -6,16 +6,18 @@ use lib\Services\HistoryService; use lib\Services\OnetimeService; use lib\Services\PointService; use lib\Utils\Pagination; +use lib\Helpers\DBMS\Client\PointHelper; class PointController extends ClientController { private ?PointService $_pointService = null; private ?OnetimeService $_onetimeService = null; private ?HistoryService $_historyService = null; - public function __construct() + public function __construct(array $params = []) { - parent::__construct(); + parent::__construct($params); $this->getView()->setPath('point'); + $this->helper = new PointHelper(); } // public function getPointService(): PointService { @@ -39,20 +41,19 @@ class PointController extends ClientController return $this->_historyService; } - //IdcPointListMK.jsp -> domain_point.php + //IdcClientPointList.jsp //CLI 접속방법 : php index.php site/client/point/index //WEB 접속방법 : http://localhost/site/client/point/index public function index() { //전체 고객객정보 $this->clients = $this->getClientService()->getEntities(); - //전체 관리자정보(등록자) - $this->members = $this->getMemberService()->getEntities(); - //사용자별 포인트내역 + //사용자코드가 있으면, $client_code = $this->request->get('client_code'); if ($client_code) { $this->getPointService()->getModel()->where('client_code', $client_code); } + $this->client_code = $client_code; $this->curPage = intval($this->request->get('curPage', 1)); $this->perPage = intval($this->request->get('perPage', VIEW_LIST_PERPAGE)); [$this->total, $this->entities] = $this->getPointService()->getList($this->curPage, $this->perPage); @@ -60,14 +61,19 @@ class PointController extends ClientController return $this->render(__FUNCTION__); } - //IdcPointBuyMK.jsp -> domain_point_buy.php + //IdcClientPointInsert.jsp //CLI 접속방법 : php index.php site/client/point/insert_form //WEB 접속방법 : http://localhost/site/client/point/insert_form public function insert_form() { - //기본적으로 필요한 client_code, mkid, service_code를 설정합니다. - list($client_code, $member_code, $service_code) = $this->setDefaultRequestData(); - $this->today = date("Y-m-d"); + //전체 고객객정보 + $this->clients = $this->getClientService()->getEntities(); + //사용자코드가 있으면, + $client_code = $this->request->get('client_code'); + if ($client_code) { + $this->getPointService()->getModel()->where('client_code', $client_code); + } + $this->client_code = $client_code; return $this->render(__FUNCTION__); } @@ -76,35 +82,32 @@ class PointController extends ClientController //WEB 접속방법 : http://localhost/site/client/point/insert_form public function insert() { - //기본적으로 필요한 client_code, mkid, service_code를 설정합니다. - list($client_code, $member_code, $service_code) = $this->setDefaultRequestData(); - //포인트 형식 - $type = $this->request->get('type'); - if (!$type) { - throw new \Exception("포인트 형식이 정의되지 않았습니다."); - } - //포인트 제목 - $title = $this->request->get('title'); - if (!$title) { - throw new \Exception("포인트 제목이 정의되지 않았습니다."); - } - //포인트 값 - $amount = intval($this->request->get('amount')); - if (! $amount || $amount < 1) { - throw new \Exception("포인트 값이 정의되지 않았거나, 포인트값은 1 이상이어야 합니다."); - } - //포인트 작업 내용 - $note = $this->request->get('note'); - // //onetime_case 사용용도 - // $onetime_case = $this->request->get('onetime_case', 'point'); - // //onetime_request_date 사용일 - // $onetime_request_date = $this->request->get('onetime_request_date') ?? date("Y-m-d"); try { + //Client Code 형식 + $client_code = $this->request->get('client_code'); + if (!$client_code) { + throw new \Exception("고객을 선택하지 않으셨습니다."); + } + //포인트 형식 + $type = $this->request->get('type'); + if (!$type) { + throw new \Exception("포인트 형식이 정의되지 않았습니다."); + } + //포인트 값 + $amount = intval($this->request->get('amount')); + if (! $amount || $amount < 1) { + throw new \Exception("포인트 값이 정의되지 않았거나, 포인트값은 1 이상이어야 합니다."); + } + //포인트 작업 내용 + $note = $this->request->get('note'); + // //onetime_case 사용용도 + // $onetime_case = $this->request->get('onetime_case', 'point'); + // //onetime_request_date 사용일 + // $onetime_request_date = $this->request->get('onetime_request_date') ?? date("Y-m-d"); $formDatas = [ 'client_code' => $client_code, - 'member_code' => $member_code, 'type' => $type, - 'title' => $title, + 'title' => date("Y-m-d") . ", [$amount] 포인트, " . DBMS_CLIENT_POINT_TYPE[$type], 'amount' => $amount, 'note' => $note ]; @@ -118,9 +121,11 @@ class PointController extends ClientController $this->getPointService()->getModel()->insert($formDatas); $this->getServiceService()->commit(); return $this->redirect->to(DBMS_SITE_URL . "/IdcPointList.cup")->with('success', ['message' => '포인트 작업이 완료되었습니다.']); - } catch (\Exception $e) { + } catch (\PDOException $e) { $this->getServiceService()->rollback(); return $this->redirect->back()->withInput()->with('error', ['message' => '포인트 사용에 실패하였습니다.:' . $e->getMessage()]); + } catch (\Exception $e) { + return $this->redirect->back()->withInput()->with('error', ['message' => '포인트 사용에 실패하였습니다.:' . $e->getMessage()]); } } } //Class diff --git a/extdbms/lib/Controllers/DBMS/DBMSController.php b/extdbms/lib/Controllers/DBMS/DBMSController.php index 419c39f..8a3337b 100644 --- a/extdbms/lib/Controllers/DBMS/DBMSController.php +++ b/extdbms/lib/Controllers/DBMS/DBMSController.php @@ -8,9 +8,9 @@ use lib\Services\ServiceService; abstract class DBMSController extends CommonController { private ?ServiceService $_service = null; - protected function __construct() + protected function __construct(array $params = []) { - parent::__construct(); + parent::__construct($params); //View의 추가디렉토리 $this->getView()->setPath('dbms'); } // diff --git a/extdbms/lib/Controllers/DBMS/DashboardController.php b/extdbms/lib/Controllers/DBMS/DashboardController.php index 4a3cf0c..4300752 100644 --- a/extdbms/lib/Controllers/DBMS/DashboardController.php +++ b/extdbms/lib/Controllers/DBMS/DashboardController.php @@ -7,7 +7,7 @@ use lib\Services\ClientService; use lib\Services\VPCService; use lib\Services\KCSService; use lib\Services\HistoryService; -use lib\Helpers\ServiceHelper; +use lib\Helpers\DBMS\ServiceHelper; class DashboardController extends DBMSController { @@ -17,9 +17,9 @@ class DashboardController extends DBMSController private ?KCSService $_kcsService = null; private ?HistoryService $_historyService = null; - public function __construct() + public function __construct(array $params = []) { - parent::__construct(); + parent::__construct($params); $this->getView()->setPath('dashboard'); $this->helper = new ServiceHelper(); } // diff --git a/extdbms/lib/Controllers/DBMS/DefenceController.php b/extdbms/lib/Controllers/DBMS/DefenceController.php index f78803f..f800f8d 100644 --- a/extdbms/lib/Controllers/DBMS/DefenceController.php +++ b/extdbms/lib/Controllers/DBMS/DefenceController.php @@ -8,9 +8,9 @@ use lib\Utils\Pagination; class DefenceController extends DBMSController { private ?DefenceService $_clientService = null; - public function __construct() + public function __construct(array $params = []) { - parent::__construct(); + parent::__construct($params); $this->getView()->setPath('defence'); } // public function getDefenceService(): DefenceService diff --git a/extdbms/lib/Controllers/DBMS/GearlistController.php b/extdbms/lib/Controllers/DBMS/GearlistController.php index 0afcf2f..a3b95ac 100644 --- a/extdbms/lib/Controllers/DBMS/GearlistController.php +++ b/extdbms/lib/Controllers/DBMS/GearlistController.php @@ -10,9 +10,9 @@ class GearlistController extends DBMSController { private ?GearlistService $_gearlistServicerService = null; private ?ServerService $_serverService = null; - public function __construct() + public function __construct(array $params = []) { - parent::__construct(); + parent::__construct($params); $this->getView()->setPath('gearlist'); } // public function getGearlistService(): GearlistService diff --git a/extdbms/lib/Controllers/DBMS/NavigatorController.php b/extdbms/lib/Controllers/DBMS/NavigatorController.php index 7fb53b5..c97e7d4 100644 --- a/extdbms/lib/Controllers/DBMS/NavigatorController.php +++ b/extdbms/lib/Controllers/DBMS/NavigatorController.php @@ -10,9 +10,9 @@ class NavigatorController extends DBMSController { private ?ClientService $_clientService = null; - public function __construct() + public function __construct(array $params = []) { - parent::__construct(); + parent::__construct($params); $this->getView()->setPath('navigator'); $this->helper = new ServiceHelper(); } // diff --git a/extdbms/lib/Controllers/DBMS/ServerController.php b/extdbms/lib/Controllers/DBMS/ServerController.php index 2c72c4d..3b42fe5 100644 --- a/extdbms/lib/Controllers/DBMS/ServerController.php +++ b/extdbms/lib/Controllers/DBMS/ServerController.php @@ -10,9 +10,9 @@ class ServerController extends DBMSController { private ?ServerService $_serverService = null; private ?ClientService $_clientService = null; - public function __construct() + public function __construct(array $params = []) { - parent::__construct(); + parent::__construct($params); $this->getView()->setPath('server'); } // public function getServerService(): ServerService diff --git a/extdbms/lib/Controllers/DBMS/ServiceController.php b/extdbms/lib/Controllers/DBMS/ServiceController.php index 1bfef33..1162158 100644 --- a/extdbms/lib/Controllers/DBMS/ServiceController.php +++ b/extdbms/lib/Controllers/DBMS/ServiceController.php @@ -12,9 +12,9 @@ class ServiceController extends DBMSController private ?ClientService $_clientService = null; private ?AddDbService $_addDbService = null; - public function __construct() + public function __construct(array $params = []) { - parent::__construct(); + parent::__construct($params); $this->getView()->setPath('service'); } // public function getClientService(): ClientService diff --git a/extdbms/lib/Controllers/HomeController.php b/extdbms/lib/Controllers/HomeController.php index 641ec0a..a84f7e6 100644 --- a/extdbms/lib/Controllers/HomeController.php +++ b/extdbms/lib/Controllers/HomeController.php @@ -4,7 +4,11 @@ namespace lib\Controllers; use lib\Http\Response; -class HomeController +class HomeController extends CommonController { + public function __construct(array $params = []) + { + parent::__construct($params); + } // public function index(): void {} } diff --git a/extdbms/lib/Core/Controller.php b/extdbms/lib/Core/Controller.php index 0862913..ca7dbb3 100644 --- a/extdbms/lib/Core/Controller.php +++ b/extdbms/lib/Core/Controller.php @@ -13,9 +13,9 @@ use lib\Http\Url; abstract class Controller { private ?View $_view = null; - protected ?Url $url = null; protected ?Session $session = null; protected ?Redirect $redirect = null; + protected ?Url $url = null; protected ?Request $request = null; protected function __construct(array $params = []) { @@ -36,6 +36,10 @@ abstract class Controller { if ($this->_view === null) { $this->_view = new View(); + $this->_view->url = $this->url; + $this->_view->session = $this->session; + $this->_view->redirect = $this->redirect; + $this->_view->request = $this->request; } return $this->_view; } diff --git a/extdbms/lib/Entities/ClientEntity.php b/extdbms/lib/Entities/ClientEntity.php index 9574599..7604882 100644 --- a/extdbms/lib/Entities/ClientEntity.php +++ b/extdbms/lib/Entities/ClientEntity.php @@ -32,6 +32,6 @@ class ClientEntity extends Entity } public function getPoint(): string { - return $this->Client_Poinit; + return $this->Client_Point; } } //Class diff --git a/extdbms/lib/Entities/CommonEntity.php b/extdbms/lib/Entities/CommonEntity.php index da0b7df..3062949 100644 --- a/extdbms/lib/Entities/CommonEntity.php +++ b/extdbms/lib/Entities/CommonEntity.php @@ -25,5 +25,9 @@ class CommonEntity extends Core $field = constant("static::PairField"); return $this->$field; } + public function getCreatedAt(): string + { + return $this->created_at; + } // //공통부분 } //Class diff --git a/extdbms/lib/Entities/PointEntity.php b/extdbms/lib/Entities/PointEntity.php index 0d599ce..de54f4d 100644 --- a/extdbms/lib/Entities/PointEntity.php +++ b/extdbms/lib/Entities/PointEntity.php @@ -14,4 +14,21 @@ class PointEntity extends Entity { parent::__construct($datas); } // + public function getClientCode(): string + { + return $this->client_code; + } // + + public function getType(): string + { + return $this->type; + } // + public function getAmount(): string + { + return $this->amount; + } // + public function getNote(): string + { + return $this->note; + } // } //Class diff --git a/extdbms/lib/Helpers/DBMS/Client/ClientHelper.php b/extdbms/lib/Helpers/DBMS/Client/ClientHelper.php new file mode 100644 index 0000000..ab7591a --- /dev/null +++ b/extdbms/lib/Helpers/DBMS/Client/ClientHelper.php @@ -0,0 +1,14 @@ +