dbms_init...1

This commit is contained in:
최준흠 2025-05-27 15:17:35 +09:00
parent f8ac6038fd
commit 4ad3a18494
29 changed files with 310 additions and 383 deletions

View File

@ -93,6 +93,19 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au
$routes->post('batchjob_delete', 'PointController::batchjob_delete');
$routes->get('download/(:alpha)', 'PointController::download/$1');
});
$routes->group('domain', ['namespace' => 'App\Controllers\Admin\Customer'], function ($routes) {
$routes->get('/', 'DomainController::index', []);
$routes->get('create', 'DomainController::create_form');
$routes->post('create', 'DomainController::create');
$routes->get('modify/(:num)', 'DomainController::modify_form/$1');
$routes->post('modify/(:num)', 'DomainController::modify/$1');
$routes->get('view/(:num)', 'DomainController::view/$1');
$routes->get('delete/(:num)', 'DomainController::delete/$1');
$routes->get('toggle/(:num)/(:any)', 'DomainController::toggle/$1/$2');
$routes->post('batchjob', 'DomainController::batchjob');
$routes->post('batchjob_delete', 'DomainController::batchjob_delete');
$routes->get('download/(:alpha)', 'DomainController::download/$1');
});
$routes->group('service', ['namespace' => 'App\Controllers\Admin\Customer'], function ($routes) {
$routes->get('/', 'ServiceController::index', []);
$routes->get('create', 'ServiceController::create_form');
@ -174,19 +187,6 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au
$routes->post('batchjob_delete', 'SoftwareController::batchjob_delete');
$routes->get('download/(:alpha)', 'SoftwareController::download/$1');
});
$routes->group('domain', ['namespace' => 'App\Controllers\Admin\Equipment\Part'], function ($routes) {
$routes->get('/', 'DomainController::index', []);
$routes->get('create', 'DomainController::create_form');
$routes->post('create', 'DomainController::create');
$routes->get('modify/(:num)', 'DomainController::modify_form/$1');
$routes->post('modify/(:num)', 'DomainController::modify/$1');
$routes->get('view/(:num)', 'DomainController::view/$1');
$routes->get('delete/(:num)', 'DomainController::delete/$1');
$routes->get('toggle/(:num)/(:any)', 'DomainController::toggle/$1/$2');
$routes->post('batchjob', 'DomainController::batchjob');
$routes->post('batchjob_delete', 'DomainController::batchjob_delete');
$routes->get('download/(:alpha)', 'DomainController::download/$1');
});
$routes->group('cpu', ['namespace' => 'App\Controllers\Admin\Equipment\Part'], function ($routes) {
$routes->get('/', 'CpuController::index', []);
$routes->get('create', 'CpuController::create_form');
@ -268,19 +268,6 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au
$routes->post('batchjob_delete', 'SoftwareController::batchjob_delete');
$routes->get('download/(:alpha)', 'SoftwareController::download/$1');
});
$routes->group('domain', ['namespace' => 'App\Controllers\Admin\Equipment\Link'], function ($routes) {
$routes->get('/', 'DomainController::index', []);
$routes->get('create', 'DomainController::create_form');
$routes->post('create', 'DomainController::create');
$routes->get('modify/(:num)', 'DomainController::modify_form/$1');
$routes->post('modify/(:num)', 'DomainController::modify/$1');
$routes->get('view/(:num)', 'DomainController::view/$1');
$routes->get('delete/(:num)', 'DomainController::delete/$1');
$routes->get('toggle/(:num)/(:any)', 'DomainController::toggle/$1/$2');
$routes->post('batchjob', 'DomainController::batchjob');
$routes->post('batchjob_delete', 'DomainController::batchjob_delete');
$routes->get('download/(:alpha)', 'DomainController::download/$1');
});
$routes->group('cpu', ['namespace' => 'App\Controllers\Admin\Equipment\Link'], function ($routes) {
$routes->get('/', 'CpuController::index', []);
$routes->get('create', 'CpuController::create_form');

View File

@ -7,6 +7,7 @@ use CodeIgniter\Validation\StrictRules\CreditCardRules;
use CodeIgniter\Validation\StrictRules\FileRules;
use CodeIgniter\Validation\StrictRules\FormatRules;
use CodeIgniter\Validation\StrictRules\Rules;
use App\Validations\UrlRules; // <- 추가
class Validation extends BaseConfig
{
@ -25,6 +26,7 @@ class Validation extends BaseConfig
FormatRules::class,
FileRules::class,
CreditCardRules::class,
UrlRules::class, // <- 추가
];
/**

View File

@ -1,15 +1,15 @@
<?php
namespace App\Controllers\Admin\Equipment\Part;
namespace App\Controllers\Admin\Customer;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
use App\Helpers\Equipment\Part\DomainHelper;
use App\Services\Equipment\Part\DomainService;
use App\Helpers\Customer\DomainHelper;
use App\Services\Customer\DomainService;
class DomainController extends PartController
class DomainController extends CustomerController
{
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
@ -46,7 +46,7 @@ class DomainController extends PartController
protected function index_process(): array
{
$fields = [
'fields' => ['domain', 'price', 'status'],
'fields' => ['clientinfo_uid', 'domain', 'price', 'status'],
];
$this->init('index', $fields);
return parent::index_process();

View File

@ -1,57 +0,0 @@
<?php
namespace App\Controllers\Admin\Equipment\Link;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
use App\Helpers\Equipment\Link\DomainHelper;
use App\Services\Equipment\Link\DomainService;
use App\Services\Equipment\Part\DomainService as PartService;
class DomainController extends LinkController
{
protected ?PartService $_partService = null;
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
parent::initController($request, $response, $logger);
$this->title = lang("{$this->getService()->getClassName()}.title");
$this->class_path .= $this->getService()->getClassName();
$this->uri_path .= strtolower($this->getService()->getClassName('/')) . '/';
// $this->view_path .= strtolower($this->getService()->getClassName()) . DIRECTORY_SEPARATOR;
}
public function getService(): DomainService
{
if (!$this->_service) {
$this->_service = new DomainService($this->request);
}
return $this->_service;
}
public function getHelper(): DomainHelper
{
if (!$this->_helper) {
$this->_helper = new DomainHelper($this->request);
}
return $this->_helper;
}
public function getPartService(): PartService
{
if (!$this->_partService) {
$this->_partService = new PartService($this->request);
}
return $this->_partService;
}
//Index,FieldForm관련
protected function index_process(): array
{
$fields = [
'fields' => ['serverinfo_uid', 'domaininfo_uid'],
];
// dd($fields);
$this->init('index', $fields);
return parent::index_process();
}
}

View File

@ -16,8 +16,6 @@ use App\Services\Equipment\Link\LINEService;
use App\Services\Equipment\Link\IpService;
use App\Services\Equipment\Link\DefenceService;
use App\Services\Equipment\Link\SoftwareService;
use App\Services\Equipment\Link\DomainService;
class ServerController extends EquipmentController
{
@ -70,9 +68,6 @@ class ServerController extends EquipmentController
case 'SOFTWARE':
$this->_adapterService[$key] = new SoftwareService();
break;
case 'DOMAIN':
$this->_adapterService[$key] = new DomainService();
break;
default:
throw new \Exception("Unknown adapter service key: {$key}");
}
@ -96,11 +91,11 @@ class ServerController extends EquipmentController
protected function index_process(): array
{
$fields = [
'fields' => ['code', 'type', 'model', 'price', "raid", 'status'],
'fields' => ['code', 'switch', 'type', 'model', 'price', "raid", 'status', 'manufactur_at', 'created_at'],
];
$this->init('index', $fields);
// $this->modal_type = 'modal_fetch_v2'; //기본은 modal_iframe임
$this->adapterFields = ['LINE', 'IP', 'CPU', 'RAM', 'DISK', 'DEFENCE', 'SOFTWARE', 'DOMAIN'];
$this->adapterFields = ['LINE', 'IP', 'CPU', 'RAM', 'DISK', 'DEFENCE', 'SOFTWARE'];
$entities = [];
foreach (parent::index_process() as $entity) {
foreach ($this->adapterFields as $field) {

View File

@ -530,28 +530,10 @@ abstract class CommonController extends BaseController
$this->getMyAuth()->pushCurrentUrl($this->request->getUri()->getPath() . ($this->request->getUri()->getQuery() ? "?" . $this->request->getUri()->getQuery() : ""));
helper(['form']);
$this->init(__FUNCTION__);
// if (env('app.debug.index')) {
// echo "ClassName: " . $this->getService()->getClassName() . "<BR>";
// echo "Title: " . $this->title . "<BR>";
// echo "uri_path: " . $this->uri_path . " <BR>";
// echo "view_path: " . $this->view_path . "<BR>";
// echo "action: " . $this->action . "<BR>";
// echo "fields: " . implode(",", $this->fields) . "<BR>";
// // exit;
// }
$this->entities = $this->index_process();
return $this->getResultPageByActon($this->action);
} catch (\Exception $e) {
// if (env('app.debug.index')) {
// echo "Error ClassName: " . $this->getService()->getClassName() . "<BR>";
// echo "Error Title: " . $this->title . "<BR>";
// echo "Error uri_path: " . $this->uri_path . " <BR>";
// echo "Error view_path: " . $this->view_path . "<BR>";
// echo "Error action: " . $this->action . "<BR>";
// echo "Error fields: " . implode(",", $this->fields) . "<BR>";
// // exit;
// }
return redirect()->with('error', $e->getMessage());
return redirect()->back()->withInput()->with('error', $e->getMessage());
}
}

File diff suppressed because one or more lines are too long

View File

@ -4,9 +4,9 @@
"settings": {
"width": 4000,
"height": 4000,
"scrollTop": -2807.42,
"scrollLeft": -1213.1454,
"zoomLevel": 0.79,
"scrollTop": -1479.9394,
"scrollLeft": -1047.3419,
"zoomLevel": 0.76,
"show": 511,
"database": 4,
"databaseName": "",
@ -57,7 +57,6 @@
"XywAFAP3s5Xl6G-3txHTH",
"kHLWAzQmZ3CCs0KpilqZ7",
"x7rn2-q2i7C6Lin0XwIR_",
"DKSom-hQqNhI1z7FqSa6Y",
"QmgAf0ZVXXxPIZ-HUgQlY"
],
"relationshipIds": [
@ -84,10 +83,9 @@
"GNsC6xDRv10hUO6q9Xdnc",
"J7H72NkdPg1gZdSAur4la",
"7aO23DPo-ueZ6G-9dCKXu",
"2yh_-sL8npRIpX_JwH3Vl",
"c9fmyTtPkeRt6aHosMiSQ",
"U2nR5f47vV7PnW-80gxhR",
"iQCazIDeUufmN-nNXDo5I"
"iQCazIDeUufmN-nNXDo5I",
"qgPy4U4lAP_gp6rQEuti-"
],
"indexIds": [],
"memoIds": []
@ -229,13 +227,14 @@
"columnIds": [
"F9EPb6nsDx6Tf3GG8rvP1",
"GUAjQ-qFNvMHOaqY-rBXq",
"qqj-irJP2zNacGj8PMN6E",
"BAzGsBrmLOwZGYLchLmyP",
"9F6QpQqxeEggZ0FHM81O1",
"T1h0jM57gCedXd5wWL30b",
"C_yfBNgyfir7swSSCwZIF",
"70VrVnWpv5vcn3MTsTHC4",
"54iuIW4knok06vP4JH-oN",
"bh-W1plz0vCW2rURDnfDR",
"hmZlcR-Pw2C_ife1zzo5o",
"tNaVOzr3vywCXiQdfUJWq",
"6bQ_6eGfINic9LpM6PtDw"
],
@ -248,6 +247,7 @@
"J97WIRanerqkRvOlQCnL3",
"dluCt7VimWWwGu4Is8V0v",
"GUAjQ-qFNvMHOaqY-rBXq",
"qqj-irJP2zNacGj8PMN6E",
"BAzGsBrmLOwZGYLchLmyP",
"9F6QpQqxeEggZ0FHM81O1",
"T1h0jM57gCedXd5wWL30b",
@ -261,21 +261,22 @@
"o0KMVEBZAnWRSsxx10HmA",
"Djbw3B6xZWKAvwJDto9xl",
"bh-W1plz0vCW2rURDnfDR",
"hmZlcR-Pw2C_ife1zzo5o",
"tNaVOzr3vywCXiQdfUJWq",
"6bQ_6eGfINic9LpM6PtDw",
"yjaoHnd4nFaa-3REXvRfN",
"AlvBDBVGfLoVcNjd__kFZ"
],
"ui": {
"x": 1156.7379,
"y": 1717.6012,
"x": 1162.0011,
"y": 1693.9169,
"zIndex": 2,
"widthName": 60,
"widthComment": 60,
"color": ""
},
"meta": {
"updateAt": 1748244309373,
"updateAt": 1748326092981,
"createAt": 1745819764137
}
},
@ -287,7 +288,6 @@
"2HB01q46-mugMjuOz85YG",
"4acJag7ORjUzX7FP-gnhZ",
"1q8jG5dQKdD35_XYimkSk",
"D7Q_X02LvMZbBtg71_hCK",
"lwe5PLEmpyTipKEVSCHRJ",
"P84ZMnZu1nZtRhDY18T5o",
"VycsOgeM1SXkcq_5XYUMS",
@ -316,7 +316,7 @@
"color": ""
},
"meta": {
"updateAt": 1748244321138,
"updateAt": 1748325348107,
"createAt": 1745819764138
}
},
@ -354,15 +354,15 @@
"liJON6hIBB9aS-pQgM0Q6"
],
"ui": {
"x": 1781.6193,
"y": 1161.13,
"x": 1985.4168,
"y": 1320.6241,
"zIndex": 2,
"widthName": 60,
"widthComment": 60,
"color": ""
},
"meta": {
"updateAt": 1748244616364,
"updateAt": 1748318179654,
"createAt": 1745819764138
}
},
@ -373,7 +373,6 @@
"columnIds": [
"Id0h8QbOdlhPj9P1zTm5o",
"f7_MGvRjkwL1xkCWrAgDR",
"OGLPunD1CL5Yx1Onabetn",
"6qd6rcTkraI_AbHcVbp6T",
"2-mxsDaVU45SAAkg_CmAZ",
"nDoaVrEhO8hLuHbgZV4il",
@ -405,7 +404,7 @@
"color": ""
},
"meta": {
"updateAt": 1748244376705,
"updateAt": 1748325276937,
"createAt": 1745819764138
}
},
@ -633,7 +632,6 @@
"columnIds": [
"Jh6e_-9QYe1Tqve0PE3kT",
"DC7TvFFpBT7vY0UKKHt-W",
"VDwq7FTa8NVFgubAOFjso",
"AdK-ftiebHNTIjlPzqGxQ",
"qcYZvSlfu93cigmIRzU_C",
"3nwgqrQd_qDGdg6Fe3kEp",
@ -668,19 +666,18 @@
"color": ""
},
"meta": {
"updateAt": 1748244312026,
"updateAt": 1748325310304,
"createAt": 1746783410914
}
},
"RTq5rHQupiXXJPXqpN8K5": {
"id": "RTq5rHQupiXXJPXqpN8K5",
"name": "defenceinfo",
"comment": "방어정보",
"comment": "방어(CS)정보",
"columnIds": [
"zBz4vBOZSIA8vKmfqXckO",
"YqInlreLnga0pOXtaP8GF",
"ixoWg1kPLrUYL069d75Kq",
"3JKv9gwi5ig1yLoBJsLC9",
"tTTzHZFvoMJ0RzAexXY2L",
"BvHyGw9Xf_gz7bEkZhLbk",
"0STHSEXiceoCa6a7jGXV5",
@ -709,11 +706,11 @@
"y": 3160.8644,
"zIndex": 796,
"widthName": 64,
"widthComment": 60,
"widthComment": 71,
"color": ""
},
"meta": {
"updateAt": 1748244322259,
"updateAt": 1748325421181,
"createAt": 1747374666215
}
},
@ -724,7 +721,6 @@
"columnIds": [
"203b3hUKUQ_Gu5wKShBgZ",
"kohhWoNuei3x97SzgQUF4",
"jmi6LrAtLmYLaoDiEZ10f",
"Tuyrnk-V3RykdGluC-86m",
"SzD5tmOIoZodU1wBH56I4",
"EEerVyCwkEAuiRc-gon8s",
@ -751,7 +747,7 @@
"color": ""
},
"meta": {
"updateAt": 1748244314623,
"updateAt": 1748325313953,
"createAt": 1747808112554
}
},
@ -762,7 +758,6 @@
"columnIds": [
"WaCB3uNZYFReAPiBqQ97v",
"tn-GhYT445kEh1tzf8Lf1",
"zdhazSc2UskbRIFTbn0MV",
"vzqaqaPuF4guI7nUCRFIE",
"FOr_RCEoaL3a0M7smSYRC",
"cMe_lKgwfS-LNTHhHIYrk",
@ -786,7 +781,7 @@
"color": ""
},
"meta": {
"updateAt": 1748244316485,
"updateAt": 1748325333969,
"createAt": 1747808548333
}
},
@ -834,8 +829,8 @@
"comment": "도메인 정보",
"columnIds": [
"XnNj7H0bnTxo_NuZm7BOs",
"skdAqnMsTEE6ZKbCD14VX",
"w404_rDrrYyt26iqY8Eur",
"gHKfQQEPUr_YKqvm5K_gd",
"EcVzL-sPHB3OIUYfPrAs6",
"E8iokQ-rKyw43cNe746kt",
"SeMtkfNiltpn4j-M-XkG-",
@ -843,6 +838,7 @@
],
"seqColumnIds": [
"XnNj7H0bnTxo_NuZm7BOs",
"skdAqnMsTEE6ZKbCD14VX",
"w404_rDrrYyt26iqY8Eur",
"gHKfQQEPUr_YKqvm5K_gd",
"ftF3nsGwio93Yhy60Pn99",
@ -856,15 +852,15 @@
"6T7sNUPqpTPJm6TI7Qbbe"
],
"ui": {
"x": 1190.6231,
"y": 3513.7977,
"x": 1985.5598,
"y": 1016.3294,
"zIndex": 1276,
"widthName": 63,
"widthComment": 65,
"color": ""
},
"meta": {
"updateAt": 1748244325173,
"updateAt": 1748318220855,
"createAt": 1748218895681
}
},
@ -973,15 +969,15 @@
"HYNanPfS08M6xRE32jR_Q"
],
"ui": {
"x": 588.8799,
"y": 1900.8701,
"x": 641.5115,
"y": 1902.1859,
"zIndex": 1406,
"widthName": 69,
"widthComment": 60,
"color": ""
},
"meta": {
"updateAt": 1748229315470,
"updateAt": 1748325851902,
"createAt": 1748224021135
}
},
@ -1055,7 +1051,7 @@
"color": ""
},
"meta": {
"updateAt": 1748244862354,
"updateAt": 1748325064428,
"createAt": 1748226446838
}
},
@ -5050,7 +5046,7 @@
"widthDefault": 60
},
"meta": {
"updateAt": 1747638862777,
"updateAt": 1748325676006,
"createAt": 1747632565731
}
},
@ -7117,7 +7113,7 @@
"9bxqG90EvnSGBkyWVty3j": {
"id": "9bxqG90EvnSGBkyWVty3j",
"tableId": "4Phnxm-pTS6CW9EX4iqu1",
"name": "reason",
"name": "title",
"comment": "이유",
"dataType": "VARCHAR(255)",
"default": "",
@ -7130,7 +7126,7 @@
"widthDefault": 60
},
"meta": {
"updateAt": 1748226828842,
"updateAt": 1748325069591,
"createAt": 1748226822189
}
},
@ -7663,7 +7659,7 @@
"default": "",
"options": 8,
"ui": {
"keys": 2,
"keys": 0,
"widthName": 76,
"widthComment": 60,
"widthDataType": 60,
@ -7683,7 +7679,7 @@
"default": "",
"options": 8,
"ui": {
"keys": 2,
"keys": 0,
"widthName": 84,
"widthComment": 60,
"widthDataType": 60,
@ -7793,6 +7789,66 @@
"updateAt": 1748244634796,
"createAt": 1748244625113
}
},
"skdAqnMsTEE6ZKbCD14VX": {
"id": "skdAqnMsTEE6ZKbCD14VX",
"tableId": "GRBrbb1hqwKSRMfod3I7U",
"name": "clientinfo_uid",
"comment": "",
"dataType": "INT",
"default": "",
"options": 8,
"ui": {
"keys": 2,
"widthName": 73,
"widthComment": 60,
"widthDataType": 60,
"widthDefault": 60
},
"meta": {
"updateAt": 1748318214801,
"createAt": 1748318198955
}
},
"qqj-irJP2zNacGj8PMN6E": {
"id": "qqj-irJP2zNacGj8PMN6E",
"tableId": "B4qGh3KZsXHQ3_4EOgwJZ",
"name": "switch",
"comment": "",
"dataType": "VARCHAR(20)",
"default": "",
"options": 8,
"ui": {
"keys": 0,
"widthName": 60,
"widthComment": 60,
"widthDataType": 75,
"widthDefault": 60
},
"meta": {
"updateAt": 1748325712931,
"createAt": 1748325689339
}
},
"hmZlcR-Pw2C_ife1zzo5o": {
"id": "hmZlcR-Pw2C_ife1zzo5o",
"tableId": "B4qGh3KZsXHQ3_4EOgwJZ",
"name": "created_at",
"comment": "",
"dataType": "TIMESTAMP",
"default": "CURRENT_TIMESTAMP",
"options": 8,
"ui": {
"keys": 0,
"widthName": 60,
"widthComment": 60,
"widthDataType": 65,
"widthDefault": 122
},
"meta": {
"updateAt": 1748326090783,
"createAt": 1748326062212
}
}
},
"relationshipEntities": {
@ -7863,7 +7919,7 @@
"_AcWUYKzNJd-V0fRHq8Cx"
],
"x": 1701.0947,
"y": 857.4039,
"y": 830.7372333333333,
"direction": 2
},
"end": {
@ -7918,8 +7974,8 @@
"columnIds": [
"7B0zaLoZnOoMNW8OHZlrQ"
],
"x": 1781.6193,
"y": 1365.13,
"x": 1985.4168,
"y": 1524.6241,
"direction": 1
},
"end": {
@ -7928,7 +7984,7 @@
"f7_MGvRjkwL1xkCWrAgDR"
],
"x": 1648.0778,
"y": 1495.0726,
"y": 1489.0726,
"direction": 2
},
"meta": {
@ -7947,7 +8003,7 @@
"_AcWUYKzNJd-V0fRHq8Cx"
],
"x": 1701.0947,
"y": 1017.4039,
"y": 1044.0705666666665,
"direction": 2
},
"end": {
@ -7955,8 +8011,8 @@
"columnIds": [
"5KRw8TtT2nLqpYfKFOBwe"
],
"x": 1781.6193,
"y": 1229.13,
"x": 1985.4168,
"y": 1388.6241,
"direction": 1
},
"meta": {
@ -8123,8 +8179,8 @@
"columnIds": [
"eCpp9N4KVZH6f5eRxZxvU"
],
"x": 842.8799,
"y": 1900.8701,
"x": 895.5115,
"y": 1902.1859,
"direction": 4
},
"meta": {
@ -8199,7 +8255,7 @@
"Id0h8QbOdlhPj9P1zTm5o"
],
"x": 1648.0778,
"y": 1619.0726,
"y": 1601.0726,
"direction": 2
},
"end": {
@ -8226,8 +8282,8 @@
"columnIds": [
"F9EPb6nsDx6Tf3GG8rvP1"
],
"x": 1653.7379,
"y": 1777.6012,
"x": 1659.0011,
"y": 1767.6311857142855,
"direction": 2
},
"end": {
@ -8254,8 +8310,8 @@
"columnIds": [
"F9EPb6nsDx6Tf3GG8rvP1"
],
"x": 1653.7379,
"y": 1817.6012,
"x": 1659.0011,
"y": 1816.7740428571426,
"direction": 2
},
"end": {
@ -8283,7 +8339,7 @@
"Jh6e_-9QYe1Tqve0PE3kT"
],
"x": 1659.0777,
"y": 2190.6735,
"y": 2178.6735,
"direction": 2
},
"end": {
@ -8310,8 +8366,8 @@
"columnIds": [
"F9EPb6nsDx6Tf3GG8rvP1"
],
"x": 1653.7379,
"y": 1857.6012,
"x": 1659.0011,
"y": 1865.9168999999997,
"direction": 2
},
"end": {
@ -8339,7 +8395,7 @@
"203b3hUKUQ_Gu5wKShBgZ"
],
"x": 1664.9716,
"y": 2459.2306,
"y": 2447.2306,
"direction": 2
},
"end": {
@ -8366,8 +8422,8 @@
"columnIds": [
"F9EPb6nsDx6Tf3GG8rvP1"
],
"x": 1653.7379,
"y": 1897.6012,
"x": 1659.0011,
"y": 1915.0597571428568,
"direction": 2
},
"end": {
@ -8395,7 +8451,7 @@
"WaCB3uNZYFReAPiBqQ97v"
],
"x": 1665.2797,
"y": 2709.4913,
"y": 2697.4913,
"direction": 2
},
"end": {
@ -8422,8 +8478,8 @@
"columnIds": [
"F9EPb6nsDx6Tf3GG8rvP1"
],
"x": 1653.7379,
"y": 1977.6012,
"x": 1659.0011,
"y": 2013.345471428571,
"direction": 2
},
"end": {
@ -8451,7 +8507,7 @@
"zBz4vBOZSIA8vKmfqXckO"
],
"x": 1671.2675,
"y": 3320.8644,
"y": 3308.8644,
"direction": 2
},
"end": {
@ -8478,8 +8534,8 @@
"columnIds": [
"F9EPb6nsDx6Tf3GG8rvP1"
],
"x": 1653.7379,
"y": 1937.6012,
"x": 1659.0011,
"y": 1964.202614285714,
"direction": 2
},
"end": {
@ -8507,7 +8563,7 @@
"2HB01q46-mugMjuOz85YG"
],
"x": 1664.7414,
"y": 2982.6365,
"y": 2970.6365,
"direction": 2
},
"end": {
@ -8562,7 +8618,7 @@
"columnIds": [
"XnNj7H0bnTxo_NuZm7BOs"
],
"x": 1687.6231,
"x": 1667.3699,
"y": 3625.7977,
"direction": 2
},
@ -8590,8 +8646,8 @@
"columnIds": [
"F9EPb6nsDx6Tf3GG8rvP1"
],
"x": 1653.7379,
"y": 1737.6012,
"x": 1659.0011,
"y": 1718.4883285714284,
"direction": 2
},
"end": {
@ -8646,8 +8702,8 @@
"columnIds": [
"7B0zaLoZnOoMNW8OHZlrQ"
],
"x": 2297.6193000000003,
"y": 1297.13,
"x": 2501.4168,
"y": 1456.6241,
"direction": 2
},
"end": {
@ -8663,6 +8719,34 @@
"updateAt": 1748244625114,
"createAt": 1748244625114
}
},
"qgPy4U4lAP_gp6rQEuti-": {
"id": "qgPy4U4lAP_gp6rQEuti-",
"identification": false,
"relationshipType": 16,
"startRelationshipType": 2,
"start": {
"tableId": "6ajvOCaGuXU9pzV0Y9jEi",
"columnIds": [
"_AcWUYKzNJd-V0fRHq8Cx"
],
"x": 1701.0947,
"y": 937.4038999999999,
"direction": 2
},
"end": {
"tableId": "GRBrbb1hqwKSRMfod3I7U",
"columnIds": [
"skdAqnMsTEE6ZKbCD14VX"
],
"x": 1985.5598,
"y": 1128.3294,
"direction": 1
},
"meta": {
"updateAt": 1748318198956,
"createAt": 1748318198956
}
}
},
"indexEntities": {},

View File

@ -0,0 +1,11 @@
<?php
namespace App\Entities\Customer;
use App\Models\Customer\DomainModel;
class DomainEntity extends CustomerEntity
{
const PK = DomainModel::PK;
const TITLE = DomainModel::TITLE;
}

View File

@ -1,15 +0,0 @@
<?php
namespace App\Entities\Equipment\Link;
use App\Models\Equipment\Link\DomainModel;
class DomainEntity extends LinkEntity
{
const PK = DomainModel::PK;
const TITLE = DomainModel::TITLE;
public function getAdapterInfoUID(): string
{
return $this->attributes['domaininfo_uid'];
}
}

View File

@ -1,11 +0,0 @@
<?php
namespace App\Entities\Equipment\Part;
use App\Models\Equipment\Part\DomainModel;
class DomainEntity extends PartEntity
{
const PK = DomainModel::PK;
const TITLE = DomainModel::TITLE;
}

View File

@ -1,11 +1,11 @@
<?php
namespace App\Helpers\Equipment\Link;
namespace App\Helpers\Customer;
use App\Models\Equipment\Link\DomainModel;
use App\Models\Customer\DomainModel;
use CodeIgniter\HTTP\IncomingRequest;
class DomainHelper extends LinkHelper
class DomainHelper extends CustomerHelper
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)

View File

@ -1,16 +0,0 @@
<?php
namespace App\Helpers\Equipment\Part;
use App\Models\Equipment\Part\DomainModel;
use CodeIgniter\HTTP\IncomingRequest;
class DomainHelper extends PartHelper
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
{
parent::__construct($request);
$this->setTitleField(field: DomainModel::TITLE);
}
}

View File

@ -66,7 +66,6 @@ class ServerHelper extends EquipmentHelper
case "DISK":
case "DEFENCE":
case "SOFTWARE":
case "DOMAIN":
$temps = [];
foreach ($viewDatas['entity']->getPartEntities($field) as $partEntity) {
$temps[] = "<div>" . $partEntity->getTitle() . "</div>";

View File

@ -2,6 +2,7 @@
return [
'title' => "Domain정보",
'label' => [
'clientinfo_uid' => "고객",
'domain' => "도메인",
'price' => "금액",
'description' => "설명",

View File

@ -1,9 +0,0 @@
<?php
return [
'title' => "Domain연결정보",
'label' => [
'serverinfo_uid' => "서버",
'domaininfo_uid' => "Domain",
'created_at' => "작성일",
],
];

View File

@ -3,32 +3,38 @@ return [
'title' => "서버장비정보",
'label' => [
'code' => "장비코드",
'type' => "종류",
'switch' => "스위치",
'type' => "용도",
'model' => "모델",
'price' => "금액",
'raid' => "RAID",
'description' => "설명",
'status' => "상태",
'manufactur_at' => "입고일",
'updated_at' => "수정일",
'created_at' => "작성일",
'LINE' => "회선",
'IP' => "IP",
'LINE' => "회선",
'IP' => "IP",
'CPU' => "CPU",
'RAM' => "RAM",
'DISK' => "DISK",
'DEFENCE' => "방어",
'DEFENCE' => "방어(CS)",
'SOFTWARE' => "소프트웨어",
'DOMAIN' => "도메인",
],
'DEFAULTS' => [
'type' => 'RacKMount',
'type' => 'default',
'status' => 'default',
],
"TYPE" => [
"Rack" => "RacKMount",
"PC" => "조립PC",
"MiniPC" => "MiniPC",
"colocation" => "코로케이션",
"default" => "일반",
"defence" => "방어",
"dedicated" => "전용",
"alternative" => "대체",
"test" => "테스트",
"VPN" => "VPN",
"own" => "자사용",
"colocation" => "코로케이션",
],
"MODEL" => [
"HP DL360 Gen 6" => "HP DL360 Gen 6",
@ -42,14 +48,14 @@ return [
"12,13,14세대 MiniPC" => "12,13,14세대 MiniPC",
],
"RAID" => [
'default' => "없음",
'default' => "없음",
"RAID0" => "RAID0",
"RAID1" => "RAID1",
"RAID5" => "RAID5",
"RAID6" => "RAID6",
],
"STATUS" => [
'default' => "사용가능",
'default' => "사용가능",
"pause" => "일시정지",
"occupied" => "사용중",
],

View File

@ -1,4 +1,6 @@
<?php
// override core en language system validation or define your own en language validation message
return [];
return [
'valid_domain' => '올바른 도메인 형식이 아닙니다.',
];

View File

@ -1,10 +1,10 @@
<?php
namespace App\Models\Equipment\Part;
namespace App\Models\Customer;
use App\Entities\Equipment\Part\DomainEntity;
use App\Entities\Customer\DomainEntity;
class DomainModel extends PartModel
class DomainModel extends CustomerModel
{
const TABLE = "domaininfo";
const PK = "uid";
@ -13,6 +13,7 @@ class DomainModel extends PartModel
protected $primaryKey = self::PK;
protected $returnType = DomainEntity::class;
protected $allowedFields = [
"clientinfo_uid",
"domain",
"price",
"status",
@ -29,8 +30,9 @@ class DomainModel extends PartModel
}
switch ($field) {
case "domain":
$rule = "required|trim|string";
$rule = "required|trim|valid_domain";
break;
case "clientinfo_uid":
case "price":
$rule = "required|numeric";
break;

View File

@ -6,7 +6,7 @@ use App\Entities\Equipment\Link\DefenceEntity;
class DefenceModel extends LinkModel
{
const TABLE = "serverinfos_domaininfos";
const TABLE = "serverinfos_defenceinfos";
const PK = "uid";
const TITLE = "uid";
protected $table = self::TABLE;

View File

@ -1,24 +0,0 @@
<?php
namespace App\Models\Equipment\Link;
use App\Entities\Equipment\Link\DomainEntity;
class DomainModel extends LinkModel
{
const TABLE = "serverinfos_domaininfos";
const PK = "uid";
const TITLE = "uid";
protected $table = self::TABLE;
protected $primaryKey = self::PK;
protected $returnType = DomainEntity::class;
protected $allowedFields = [
"serverinfo_uid",
"domaininfo_uid",
"updated_at",
];
public function __construct()
{
parent::__construct();
}
}

View File

@ -14,10 +14,12 @@ class ServerModel extends EquipmentModel
protected $returnType = ServerEntity::class;
protected $allowedFields = [
"code",
"switch",
"type",
"model",
"price",
"raid",
"manufactur_at",
"description",
"status",
"updated_at"
@ -33,6 +35,7 @@ class ServerModel extends EquipmentModel
}
switch ($field) {
case "code":
case "switch":
case "model":
case "type":
case "raid":
@ -41,6 +44,9 @@ class ServerModel extends EquipmentModel
case "price":
$rule = "required|numeric";
break;
case "manufactur_at":
$rule = "required|valid_date";
break;
default:
$rule = parent::getFieldRule($action, $field);
break;

View File

@ -1,12 +1,12 @@
<?php
namespace App\Services\Equipment\Part;
namespace App\Services\Customer;
use App\Entities\Equipment\Part\DomainEntity;
use App\Models\Equipment\Part\DomainModel;
use App\Entities\Customer\DomainEntity;
use App\Models\Customer\DomainModel;
use CodeIgniter\HTTP\IncomingRequest;
class DomainService extends PartService
class DomainService extends CustomerService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
@ -25,6 +25,7 @@ class DomainService extends PartService
public function getFields(): array
{
return [
"clientinfo_uid",
"domain",
"price",
"status",
@ -32,7 +33,7 @@ class DomainService extends PartService
}
public function getFilterFields(): array
{
return ['status',];
return ["clientinfo_uid", 'status',];
}
public function getBatchJobFields(): array
{

View File

@ -1,35 +0,0 @@
<?php
namespace App\Services\Equipment\Link;
use CodeIgniter\HTTP\IncomingRequest;
use App\Entities\Equipment\Link\DomainEntity;
use App\Models\Equipment\Link\DomainModel;
use App\Services\Equipment\Part\DomainService as AdapterService;
class DomainService extends LinkService
{
protected ?IncomingRequest $request = null;
public function __construct(?IncomingRequest $request = null)
{
parent::__construct($request);
$this->addClassName('Domain');
}
public function getModelClass(): DomainModel
{
return new DomainModel;
}
public function getEntityClass(): DomainEntity
{
return new DomainEntity();
}
protected function getAdapterService(): AdapterService
{
return new AdapterService();
}
protected function getAdapterField(): string
{
return "domaininfo_uid";
}
}

View File

@ -27,6 +27,8 @@ class ServerService extends EquipmentService
{
return [
"code",
"switch",
"manufactur_at",
"type",
"model",
"price",

View File

@ -0,0 +1,20 @@
<?php
namespace App\Validations;
class UrlRules
{
/**
* 유효한 도메인인지 확인
*/
public function valid_domain(string $str, string $fields, array $data): bool
{
// 기본적인 정규식 검사 (예: example.com, sub.example.co.kr)
if (!preg_match('/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i', $str)) {
return false;
}
// 실제 DNS 확인도 하고 싶다면 (옵션)
// return checkdnsrr($str, 'A') || checkdnsrr($str, 'AAAA') || checkdnsrr($str, 'MX');
return true;
}
}

View File

@ -41,7 +41,7 @@
<td><?= $viewDatas['helper']->getListButton('delete', $viewDatas) ?></td>
</tr>
<tr>
<td colspan="8">
<td colspan="11">
<table class="table table-bordered table-hover table-striped">
<tr>
<?php foreach ($viewDatas['adapterFields'] as $field): ?>

View File

@ -17,6 +17,9 @@
<div class="accordion-item">
<a href="/admin/customer/point"><?= ICONS['FLAG'] ?> Point내역</a>
</div>
<div class="accordion-item">
<a href="/admin/customer/domain"><?= ICONS['FLAG'] ?>도메인정보</a>
</div>
<div class="accordion-item">
<a href="/admin/customer/service"><?= ICONS['CARD'] ?> 서비스내역</a>
</div>

View File

@ -17,9 +17,6 @@
<div class="accordion-item">
<a href="/admin/equipment/part/software"><?= ICONS['FLAG'] ?>Software정보</a>
</div>
<div class="accordion-item">
<a href="/admin/equipment/part/domain"><?= ICONS['FLAG'] ?>도메인정보</a>
</div>
<div class="accordion-item">
<a href="/admin/equipment/part/cpu"><?= ICONS['SETUP'] ?>CPU정보</a>
</div>