dbmsv2 init...1

This commit is contained in:
choi.jh 2025-08-27 19:31:14 +09:00
parent 058e3c535e
commit dca85a817b
7 changed files with 94 additions and 45 deletions

View File

@ -51,6 +51,20 @@ class ServerController extends EquipmentController
parent::create_form_process(); parent::create_form_process();
} }
//추가 파트정보 생성 //추가 파트정보 생성
private function getFormDatasForServerInfo(array $formDatas): array
{
$tempDatas = [
"code" => $formDatas['code'],
"type" => $formDatas['type'],
"title" => $formDatas['title'],
"price" => $formDatas['price'],
"amount" => $formDatas['amount'],
"manufactur_at" => $formDatas['manufactur_at'],
"format_at" => $formDatas['format_at'],
"status" => $formDatas['status'],
];
return $formDatas;
}
private function getFormDatasForServerPartInfo(ServerEntity $entity, string $partType): array private function getFormDatasForServerPartInfo(ServerEntity $entity, string $partType): array
{ {
$formDatas = [ $formDatas = [
@ -75,7 +89,18 @@ class ServerController extends EquipmentController
]; ];
return $formDatas; return $formDatas;
} }
private function createIpInfo(ServerEntity $entity): IPEntity //생성
private function createServerPartInfo(ServerEntity $entity): ServerEntity
{
foreach (SERVER['PARTTYPES'] as $partType) {
$serverPartEnty = $this->getService()->getServerPartService()->create(
$this->getFormDatasForServerPartInfo($entity, $partType)
);
$entity->setServerPartEntity($partType, $serverPartEnty);
}
return $entity;
}
private function setIpInfo(ServerEntity $entity): ServerEntity
{ {
//기존 Entity 가져오기 //기존 Entity 가져오기
$ipinfo_uid = $this->request->getPost("ipinfo_uid"); $ipinfo_uid = $this->request->getPost("ipinfo_uid");
@ -83,31 +108,47 @@ class ServerController extends EquipmentController
if (!$ipEntity) { if (!$ipEntity) {
throw new \Exception("{$ipinfo_uid}에 대한 정보를 찾을수 없습니다."); throw new \Exception("{$ipinfo_uid}에 대한 정보를 찾을수 없습니다.");
} }
return $this->getService()->getIPService()->modify($ipEntity, $this->getFormDatasForIPInfo($entity, $ipEntity::STATUS_OCCUPIED)); $formDatas = $this->getFormDatasForIPInfo($entity, $ipEntity::STATUS_OCCUPIED);
$ipEntity = $this->getService()->getIPService()->modify($ipEntity, $formDatas);
$entity->addIPEntity($ipEntity);
return $entity;
} }
protected function create_process(array $formDatas): ServerEntity protected function create_process(array $formDatas): ServerEntity
{ {
//코드 패턴체크 //코드 패턴체크
$pattern = env("Server.Prefix.code.pattern", false); $this->getService()->codeCheck($formDatas);
if (!$pattern) { $entity = parent::create_process($this->getFormDatasForServerInfo($formDatas));
throw new \Exception(__METHOD__ . "에서 code의 prefix[Server.Prefix.code.pattern]가 정의되지 않았습니다.");
}
if (!array_key_exists('code', $formDatas)) {
throw new \Exception("Server코드가 정의되지 않았습니다");
}
if (!preg_match($pattern, $formDatas['code'])) {
throw new \Exception("Server코드[{$formDatas['code']}의 형식이 맞지않습니다");
}
$entity = parent::create_process($formDatas);
//ServerPart정보 생성 후 ServerEntity에 설정 //ServerPart정보 생성 후 ServerEntity에 설정
$entity = $this->createServerPartInfo($entity);
//IP정보 속성 수정후 ServerEntity에 설정
$entity = $this->setIpInfo($entity);
return $entity;
}
//수정
private function modifyServerPartInfo(ServerEntity $entity): ServerEntity
{
foreach (SERVER['PARTTYPES'] as $partType) { foreach (SERVER['PARTTYPES'] as $partType) {
$serverPartEnty = $this->getService()->getServerPartService()->create( $serverPartEnty = $entity->getServerPartEntity($partType);
$this->getFormDatasForServerPartInfo($entity, $partType) if ($serverPartEnty) {
); $serverPartEnty = $this->getService()->getServerPartService()->modify(
$serverPartEnty,
$this->getFormDatasForServerPartInfo($entity, $partType)
);
}
$entity->setServerPartEntity($partType, $serverPartEnty); $entity->setServerPartEntity($partType, $serverPartEnty);
} }
return $entity;
}
protected function modify_process(mixed $entity, array $formDatas): ServerEntity
{
//코드 패턴체크
$this->getService()->codeCheck($formDatas);
$entity = parent::modify_process($entity, $this->getFormDatasForServerInfo($formDatas));
//ServerPart정보 생성 후 ServerEntity에 설정
$entity = $this->modifyServerPartInfo($entity);
//IP정보 속성 수정후 ServerEntity에 설정 //IP정보 속성 수정후 ServerEntity에 설정
$entity->setIPEntities([$this->createIpInfo($entity)]); $entity = $this->setIpInfo($entity);
return $entity; return $entity;
} }
} }

View File

@ -30,17 +30,23 @@ class ServerEntity extends EquipmentEntity
} }
return $this->attributes['serverPartEntities'][$partType]; return $this->attributes['serverPartEntities'][$partType];
} }
public function setIPEntities(array $entities): void public function addIPEntity(IPEntity $entity): void
{ {
$this->attributes['ipEntities'] = $entities; if (!array_key_exists('ipEntities', $this->attributes)) {
$this->attributes['ipEntities'] = [];
}
$this->attributes['ipEntities'][] = $entity;
} }
public function getIPEntities(): array public function getIPEntities(): array
{ {
return $this->attributes['ipEntities'] ?? []; return $this->attributes['ipEntities'] ?? [];
} }
public function setCSEntities(array $entities): void public function addCSEntity(CSEntity $entity): void
{ {
$this->attributes['csEntities'] = $entities; if (!array_key_exists('csEntities', $this->attributes)) {
$this->attributes['csEntities'] = [];
}
$this->attributes['csEntities'] = $entity;
} }
public function getCSEntities(): array public function getCSEntities(): array
{ {

View File

@ -21,16 +21,16 @@ class ServerHelper extends EquipmentHelper
break; break;
case 'CPU': case 'CPU':
case 'RAM': case 'RAM':
case 'SOFTWARE':
case 'OS':
case 'serverpartinfo_DB_uid':
$form = $this->form_dropdown_custom($field, old($field) ?? (array_key_exists('entity', $viewDatas) ? $viewDatas['entity']->getServerPartEntity('CPU')->getPK() : null), $viewDatas, $extras);
$form .= " " . form_dropdown("{$field}_cnt", $viewDatas['serverpartinfo_cnt_range'], old("{$field}_cnt") ?? $viewDatas['entity']->$field ?? 1) . "";
break;
case 'DISK': case 'DISK':
$form = $this->form_dropdown_custom($field, old($field) ?? (array_key_exists('entity', $viewDatas) ? $viewDatas['entity']->getPartInfoUID() : null), $viewDatas, $extras); echo $field . ":" . $viewDatas['entity']->getServerPartEntity($field)->getPartInfoUID();
$form .= " " . form_dropdown("{$field}_cnt", $viewDatas['serverpartinfo_cnt_range'], old("{$field}_cnt") ?? $viewDatas['entity']->$field ?? 1) . ""; case 'OS':
$form .= form_dropdown("{$field}_extra", $viewDatas['serverpartinfo_extra_options'], old("{$field}_extra") ?? $viewDatas['entity']->$field ?? 1); case 'SOFTWARE':
case 'DB':
$form = $this->form_dropdown_custom($field, old($field) ?? (array_key_exists('entity', $viewDatas) ? $viewDatas['entity']->getServerPartEntity($field)->getPartInfoUID() : null), $viewDatas, $extras);
$form .= " " . form_dropdown("{$field}_cnt", $viewDatas['serverpartinfo_cnt_range'], old("{$field}_cnt") ?? $viewDatas['entity']->getServerPartEntity($field)->getCnt() ?? 1) . "";
if (in_array($field, ['DISK'])) {
$form .= form_dropdown("{$field}_extra", $viewDatas['serverpartinfo_extra_options'], old("{$field}_extra") ?? $viewDatas['entity']->getServerPartEntity($field)->getExtra() ?? 1);
}
break; break;
case 'ipinfo_uid': case 'ipinfo_uid':
case 'csinfo_uid': case 'csinfo_uid':
@ -51,7 +51,6 @@ class ServerHelper extends EquipmentHelper
$value = $value ? date("Y-m-d", strtotime($value)) : ""; $value = $value ? date("Y-m-d", strtotime($value)) : "";
break; break;
case 'serverpartinfo': case 'serverpartinfo':
// dd($viewDatas['entity']);
$value = ""; $value = "";
foreach (SERVER['PARTTYPES'] as $partType) { foreach (SERVER['PARTTYPES'] as $partType) {
$serverPartEntity = $viewDatas['entity']->getServerPartEntity($partType); $serverPartEntity = $viewDatas['entity']->getServerPartEntity($partType);

View File

@ -22,7 +22,7 @@ return [
'RAM' => "RAM", 'RAM' => "RAM",
'DISK' => "DISK", 'DISK' => "DISK",
'OS' => "OS", 'OS' => "OS",
'serverpartinfo_DB_uid' => "DB", 'DB' => "DB",
'SOFTWARE' => "기타SW", 'SOFTWARE' => "기타SW",
], ],
"TITLE" => [ "TITLE" => [

View File

@ -96,17 +96,6 @@ class IPService extends EquipmentService
]; ];
return $this->create($formDatas); return $this->create($formDatas);
} }
//상태변경
public function setStatus(int $uid, string $status): IPEntity
{
//code의 경우 사용가능/사용중으로 설정작업
$entity = $this->getEntity($uid);
if (!$entity) {
throw new \Exception("{$uid}에 대한 IP정보를 찾을수 없습니다.");
}
return $this->getModel()->modify($entity, ['status' => $status]);
}
//List 검색용 //List 검색용
//OrderBy 처리 //OrderBy 처리
public function setOrderBy(mixed $field = null, mixed $value = null): void public function setOrderBy(mixed $field = null, mixed $value = null): void

View File

@ -52,7 +52,7 @@ class PartService extends EquipmentService
//OrderBy 처리 //OrderBy 처리
public function setOrderBy(mixed $field = null, mixed $value = null): void public function setOrderBy(mixed $field = null, mixed $value = null): void
{ {
$this->getModel()->orderBy('type ASC, title ASC'); $this->getModel()->orderBy('type ASC');
parent::setOrderBy($field, $value); parent::setOrderBy($field, $value);
} }
} }

View File

@ -158,7 +158,7 @@ class ServerService extends EquipmentService
case 'OS': case 'OS':
$options = $this->getServerPartService()->getFormFieldOption('partinfo_OS_uid'); $options = $this->getServerPartService()->getFormFieldOption('partinfo_OS_uid');
break; break;
case 'serverpartinfo_DB_uid': case 'DB':
$options = $this->getServerPartService()->getFormFieldOption('partinfo_DB_uid'); $options = $this->getServerPartService()->getFormFieldOption('partinfo_DB_uid');
break; break;
case 'SOFTWARE': case 'SOFTWARE':
@ -182,6 +182,20 @@ class ServerService extends EquipmentService
{ {
return $this->getModel()->getLastestCode($format, $default); return $this->getModel()->getLastestCode($format, $default);
} }
final public function codeCheck(array $formDatas)
{
//코드 패턴체크
$pattern = env("Server.Prefix.code.pattern", false);
if (!$pattern) {
throw new \Exception(__METHOD__ . "에서 code의 prefix[Server.Prefix.code.pattern]가 정의되지 않았습니다.");
}
if (!array_key_exists('code', $formDatas)) {
throw new \Exception("Server코드가 정의되지 않았습니다");
}
if (!preg_match($pattern, $formDatas['code'])) {
throw new \Exception("Server코드[{$formDatas['code']}의 형식이 맞지않습니다");
}
}
//List 검색용 //List 검색용
//OrderBy 처리 //OrderBy 처리
public function setOrderBy(mixed $field = null, mixed $value = null): void public function setOrderBy(mixed $field = null, mixed $value = null): void