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();
}
//추가 파트정보 생성
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
{
$formDatas = [
@ -75,7 +89,18 @@ class ServerController extends EquipmentController
];
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 가져오기
$ipinfo_uid = $this->request->getPost("ipinfo_uid");
@ -83,31 +108,47 @@ class ServerController extends EquipmentController
if (!$ipEntity) {
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
{
//코드 패턴체크
$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']}의 형식이 맞지않습니다");
}
$entity = parent::create_process($formDatas);
$this->getService()->codeCheck($formDatas);
$entity = parent::create_process($this->getFormDatasForServerInfo($formDatas));
//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) {
$serverPartEnty = $this->getService()->getServerPartService()->create(
$this->getFormDatasForServerPartInfo($entity, $partType)
);
$serverPartEnty = $entity->getServerPartEntity($partType);
if ($serverPartEnty) {
$serverPartEnty = $this->getService()->getServerPartService()->modify(
$serverPartEnty,
$this->getFormDatasForServerPartInfo($entity, $partType)
);
}
$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에 설정
$entity->setIPEntities([$this->createIpInfo($entity)]);
$entity = $this->setIpInfo($entity);
return $entity;
}
}

View File

@ -30,17 +30,23 @@ class ServerEntity extends EquipmentEntity
}
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
{
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
{

View File

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

View File

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

View File

@ -96,17 +96,6 @@ class IPService extends EquipmentService
];
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 검색용
//OrderBy 처리
public function setOrderBy(mixed $field = null, mixed $value = null): void

View File

@ -52,7 +52,7 @@ class PartService extends EquipmentService
//OrderBy 처리
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);
}
}

View File

@ -158,7 +158,7 @@ class ServerService extends EquipmentService
case 'OS':
$options = $this->getServerPartService()->getFormFieldOption('partinfo_OS_uid');
break;
case 'serverpartinfo_DB_uid':
case 'DB':
$options = $this->getServerPartService()->getFormFieldOption('partinfo_DB_uid');
break;
case 'SOFTWARE':
@ -182,6 +182,20 @@ class ServerService extends EquipmentService
{
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 검색용
//OrderBy 처리
public function setOrderBy(mixed $field = null, mixed $value = null): void