dbmsv3 init...1
This commit is contained in:
parent
5ab978b3cb
commit
48538d8ffb
140
app/Processors/Equipment/ServerPartV1Processor.php
Normal file
140
app/Processors/Equipment/ServerPartV1Processor.php
Normal file
@ -0,0 +1,140 @@
|
||||
<?php
|
||||
|
||||
namespace App\Processors\Equipment;
|
||||
|
||||
use App\Entities\Equipment\ServerEntity;
|
||||
use App\Services\Customer\ServiceService;
|
||||
use App\Services\Equipment\ServerPartService;
|
||||
use App\Services\Equipment\ServerService;
|
||||
use App\Services\MyLogService;
|
||||
use App\Services\Part\IPService;
|
||||
use App\Services\Part\SWITCHService;
|
||||
use CodeIgniter\Database\BaseConnection;
|
||||
use RuntimeException;
|
||||
|
||||
class ServerPartV1Processor
|
||||
{
|
||||
public function __construct(
|
||||
private BaseConnection $db,
|
||||
private ServerService $service,
|
||||
private ServiceService $serviceService,
|
||||
private ServerPartService $serverPartService,
|
||||
private IPService $ipService,
|
||||
private SWITCHService $switchService,
|
||||
private MyLogService $logService,
|
||||
) {}
|
||||
|
||||
public function create(array $formDatas): ServerEntity
|
||||
{
|
||||
$this->db->transStart();
|
||||
//1) 서버정보 생성
|
||||
//switch값이 없으면 null처리
|
||||
if (array_key_exists('switch', $formDatas) && !$formDatas['switch']) {
|
||||
$formDatas['switch'] = null;
|
||||
}
|
||||
//ip값이 없으면 null처리
|
||||
if (array_key_exists('ip', $formDatas) && !$formDatas['ip']) {
|
||||
$formDatas['ip'] = null;
|
||||
}
|
||||
$entity = $this->service->getModel()->create($formDatas);
|
||||
//2) 서버의 Type별 서버파트정보등록(서버파트연결 자동등록용)
|
||||
$this->serverPartService->attachToServer($entity);
|
||||
//3) Switch가 정의되어 있으면
|
||||
if ($entity->getSwitch() !== null) { //
|
||||
$this->switchService->attachToServer($entity);
|
||||
}
|
||||
//4) //IP가 정의되어 있으면
|
||||
if ($entity->getIP() !== null) {
|
||||
$this->ipService->attachToServer($entity);
|
||||
}
|
||||
//5) Log처리
|
||||
$this->logService->create([
|
||||
'title' => "[{$entity->getTitle()}] 서버 추가",
|
||||
'status' => $entity->getStatus()
|
||||
]);
|
||||
$this->db->transComplete();
|
||||
if ($this->db->transStatus() === false) {
|
||||
throw new RuntimeException('트랜잭션 실패');
|
||||
}
|
||||
return $entity;
|
||||
}
|
||||
public function modify(ServerEntity $entity, array $formDatas): ServerEntity
|
||||
{
|
||||
$this->db->transStart();
|
||||
//1) 사전처리 작업
|
||||
//Switch값이 정의되어 있으면
|
||||
$formDatas['switch'] = null; //기본Switch 정보 유지
|
||||
$isChangedSwitch = false;
|
||||
if (array_key_exists('switch', $formDatas) && !$formDatas['switch']) {
|
||||
//기존 Switch값과 다르면
|
||||
if ($entity->getSwitch() != $formDatas['switch']) {
|
||||
//기존 Switch값이 있으면 해지
|
||||
if ($entity->getSwitch() != null) {
|
||||
$this->switchService->detachFromServer($entity);
|
||||
}
|
||||
$isChangedSwitch = true;
|
||||
}
|
||||
}
|
||||
//IP값이 정의되어 있으면
|
||||
$formDatas['ip'] = null; //기본IPh 정보 유지
|
||||
$isChangedIP = false;
|
||||
if (array_key_exists('ip', $formDatas) && !$formDatas['ip']) {
|
||||
//기존 IP값과 다르면
|
||||
if ($entity->getSwitch() != $formDatas['ip']) {
|
||||
//기존 IP값이 있으면 해지
|
||||
if ($entity->getIP() != null) {
|
||||
$this->ipService->detachFromServer($entity);
|
||||
}
|
||||
$isChangedIP = true;
|
||||
}
|
||||
}
|
||||
//2) 서버정보 수정
|
||||
$entity = $this->service->getModel()->modify($entity, $formDatas);
|
||||
//3) Switch값이 있고 신규값인경우
|
||||
if ($entity->getSwitch() && $isChangedSwitch) {
|
||||
$this->switchService->attachToServer($entity);
|
||||
}
|
||||
//3) IP값이 있고 신규값인경우
|
||||
if ($entity->getIP() && $isChangedIP) {
|
||||
$this->ipService->attachToServer($entity);
|
||||
}
|
||||
//5) 서비스금액 설정:서비스가 연결되어 있고 대체서버가 아니면, 서비스정보수정(청구액수정)
|
||||
if ($entity->getServiceInfoUID() !== null && $entity->getType() !== SERVER['TYPES']['ALTERNATIVE']) {
|
||||
$this->serviceService->setAmount($entity->getServiceInfoUID());
|
||||
}
|
||||
//5) Log처리
|
||||
$this->logService->create([
|
||||
'title' => "[{$entity->getTitle()}] 서버 정보변경",
|
||||
'status' => $entity->getStatus()
|
||||
]);
|
||||
$this->db->transComplete();
|
||||
if ($this->db->transStatus() === false) {
|
||||
throw new RuntimeException('트랜잭션 실패');
|
||||
}
|
||||
return $entity;
|
||||
}
|
||||
|
||||
public function delete(ServerEntity $entity): ServerEntity
|
||||
{
|
||||
//서비스가 연결되어있거나 , 사용가능 상태가 아니면 삭제불가
|
||||
if ($entity->getServiceInfoUID() !== null || $entity->getStatus() !== STATUS['AVAILABLE']) {
|
||||
throw new \Exception("서비스중인 서버는 삭제하실수 없습니다.");
|
||||
}
|
||||
$this->db->transStart();
|
||||
//기존 Switch값이 있으면 해지
|
||||
if ($entity->getSwitch() != null) {
|
||||
$this->switchService->detachFromServer($entity);
|
||||
}
|
||||
//기존 IP값이 있으면 해지
|
||||
if ($entity->getIP() != null) {
|
||||
$this->ipService->detachFromServer($entity);
|
||||
}
|
||||
//기존 서버파트 해지
|
||||
$this->serverPartService->detachFromServer($entity);
|
||||
$this->db->transComplete();
|
||||
if ($this->db->transStatus() === false) {
|
||||
throw new RuntimeException('트랜잭션 실패');
|
||||
}
|
||||
return $entity;
|
||||
}
|
||||
}
|
||||
@ -3,12 +3,12 @@
|
||||
namespace App\Processors\Equipment;
|
||||
|
||||
use App\Entities\Equipment\ServerEntity;
|
||||
use App\Services\Customer\ServiceService;
|
||||
use App\Services\Equipment\ServerPartService;
|
||||
use App\Services\Equipment\ServerService;
|
||||
use App\Services\MyLogService;
|
||||
use App\Services\Part\IPService;
|
||||
use App\Services\Part\SWITCHService;
|
||||
use App\Services\PaymentService;
|
||||
use CodeIgniter\Database\BaseConnection;
|
||||
use RuntimeException;
|
||||
|
||||
@ -17,6 +17,7 @@ class ServerV1Processor
|
||||
public function __construct(
|
||||
private BaseConnection $db,
|
||||
private ServerService $service,
|
||||
private ServiceService $serviceService,
|
||||
private ServerPartService $serverPartService,
|
||||
private IPService $ipService,
|
||||
private SWITCHService $switchService,
|
||||
@ -97,6 +98,10 @@ class ServerV1Processor
|
||||
if ($entity->getIP() && $isChangedIP) {
|
||||
$this->ipService->attachToServer($entity);
|
||||
}
|
||||
//5) 서비스금액 설정:서비스가 연결되어 있고 대체서버가 아니면, 서비스정보수정(청구액수정)
|
||||
if ($entity->getServiceInfoUID() !== null && $entity->getType() !== SERVER['TYPES']['ALTERNATIVE']) {
|
||||
$this->serviceService->setAmount($entity->getServiceInfoUID());
|
||||
}
|
||||
//5) Log처리
|
||||
$this->logService->create([
|
||||
'title' => "[{$entity->getTitle()}] 서버 정보변경",
|
||||
@ -108,4 +113,28 @@ class ServerV1Processor
|
||||
}
|
||||
return $entity;
|
||||
}
|
||||
|
||||
public function delete(ServerEntity $entity): ServerEntity
|
||||
{
|
||||
//서비스가 연결되어있거나 , 사용가능 상태가 아니면 삭제불가
|
||||
if ($entity->getServiceInfoUID() !== null || $entity->getStatus() !== STATUS['AVAILABLE']) {
|
||||
throw new \Exception("서비스중인 서버는 삭제하실수 없습니다.");
|
||||
}
|
||||
$this->db->transStart();
|
||||
//기존 Switch값이 있으면 해지
|
||||
if ($entity->getSwitch() != null) {
|
||||
$this->switchService->detachFromServer($entity);
|
||||
}
|
||||
//기존 IP값이 있으면 해지
|
||||
if ($entity->getIP() != null) {
|
||||
$this->ipService->detachFromServer($entity);
|
||||
}
|
||||
//기존 서버파트 해지
|
||||
$this->serverPartService->detachFromServer($entity);
|
||||
$this->db->transComplete();
|
||||
if ($this->db->transStatus() === false) {
|
||||
throw new RuntimeException('트랜잭션 실패');
|
||||
}
|
||||
return $entity;
|
||||
}
|
||||
}
|
||||
@ -166,7 +166,8 @@ class ServiceService extends CustomerService
|
||||
{
|
||||
return $entity->getRack() + $entity->getLine() + $this->getServerService()->getCalculatedAmount($serverEntity) - $entity->getSale();
|
||||
}
|
||||
public function setAmount(int $uid): PaymentEntity
|
||||
//서비스금액변경
|
||||
public function setAmount(string $uid): PaymentEntity
|
||||
{
|
||||
$entity = $this->getEntity($uid);
|
||||
if (!$entity instanceof ServiceEntity) {
|
||||
|
||||
@ -231,6 +231,7 @@ class ServerService extends EquipmentService implements ServerInterface
|
||||
$processor = new Proceessor(
|
||||
\Config\Database::connect(),
|
||||
$this,
|
||||
$this->getServiceService(),
|
||||
$this->getServerPartService(),
|
||||
$this->getIPService(),
|
||||
$this->getSwitchService(),
|
||||
@ -241,62 +242,30 @@ class ServerService extends EquipmentService implements ServerInterface
|
||||
//수정
|
||||
public function modify(mixed $entity, array $formDatas): ServerEntity
|
||||
{
|
||||
//수정전 정보
|
||||
//Switch정보 수정
|
||||
if ($entity->getSwitch() !== null) { //기존 서버정보에 Switch가 정의되어 있으면
|
||||
$this->getSwitchService()->unsetServer($entity);
|
||||
}
|
||||
//IP정보 수정
|
||||
if ($entity->getSwitch() !== null) { //기존 서버정보에 IP가 정의되어 있으면
|
||||
$this->getIPService()->unsetServer($entity);
|
||||
}
|
||||
//ip값이 없으면 null처리
|
||||
if (array_key_exists('ip', $formDatas) && !$formDatas['ip']) {
|
||||
$formDatas['ip'] = null;
|
||||
}
|
||||
//서버정보 수정
|
||||
$entity = parent::modify($entity, $formDatas);
|
||||
//서비스가 연결되어 있고 대체서버가 아니면, 서비스정보수정(청구액수정)
|
||||
if ($entity->getServiceInfoUID() !== null && $entity->getType() !== SERVER['TYPES']['ALTERNATIVE']) {
|
||||
$this->getServiceService()->setAmount($entity->getServiceInfoUID());
|
||||
}
|
||||
if ($entity->getSwitch() !== null) { //Switch가 정의되어 있으면
|
||||
$this->getSwitchService()->setServer($entity);
|
||||
}
|
||||
if ($entity->getIP() !== null) { //IP가 정의되어 있으면
|
||||
$this->getIPService()->setServer($entity);
|
||||
}
|
||||
//Log처리
|
||||
$this->getMylogService()->create([
|
||||
'title' => "[{$entity->getTitle()}] 서버 수정",
|
||||
'status' => $entity->getStatus()
|
||||
]);
|
||||
return $entity;
|
||||
$processor = new Proceessor(
|
||||
\Config\Database::connect(),
|
||||
$this,
|
||||
$this->getServiceService(),
|
||||
$this->getServerPartService(),
|
||||
$this->getIPService(),
|
||||
$this->getSwitchService(),
|
||||
$this->getMylogService()
|
||||
);
|
||||
return $processor->modify($entity, $formDatas);
|
||||
}
|
||||
//삭제
|
||||
public function delete(mixed $entity): ServerEntity
|
||||
{
|
||||
//서비스가 연결되어있거나 , 사용가능 상태가 아니면 삭제불가
|
||||
if ($entity->getServiceInfoUID() !== null || $entity->getStatus() !== STATUS['AVAILABLE']) {
|
||||
throw new \Exception("서비스중인 서버는 삭제하실수 없습니다.");
|
||||
}
|
||||
//Switch정보 해지
|
||||
if ($entity->getSwitch() !== null) { //기존 서버정보에 Switch가 정의되어 있으면
|
||||
$this->getSwitchService()->unsetServer($entity);
|
||||
}
|
||||
//IP정보해지
|
||||
if ($entity->getIP() !== null) { //기존 서버정보에 IP가 정의되어 있으면
|
||||
$this->getIPService()->unsetServer($entity);
|
||||
}
|
||||
//서버파트정보해지
|
||||
$this->getServerPartService()->unsetServer($entity);
|
||||
$entity = parent::delete($entity);
|
||||
//Log처리
|
||||
$this->getMylogService()->create([
|
||||
'title' => "[{$entity->getTitle()}] 서버 삭제",
|
||||
'status' => $entity->getStatus()
|
||||
]);
|
||||
return $entity;
|
||||
$processor = new Proceessor(
|
||||
\Config\Database::connect(),
|
||||
$this,
|
||||
$this->getServiceService(),
|
||||
$this->getServerPartService(),
|
||||
$this->getIPService(),
|
||||
$this->getSwitchService(),
|
||||
$this->getMylogService()
|
||||
);
|
||||
return $processor->delete($entity);
|
||||
}
|
||||
//List 검색용
|
||||
//OrderBy 처리
|
||||
|
||||
Loading…
Reference in New Issue
Block a user