dbmsv2 init...1

This commit is contained in:
choi.jh 2025-09-10 17:48:54 +09:00
parent 49a050ca68
commit 5de8920a2e
75 changed files with 616 additions and 723 deletions

View File

@ -69,6 +69,7 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au
$routes->post('batchjob', 'ClientController::batchjob');
$routes->post('batchjob_delete', 'ClientController::batchjob_delete');
$routes->get('download/(:alpha)', 'ClientController::download/$1');
$routes->get('detail/(:num)', 'ClientController::detail/$1');
});
$routes->group('account', ['namespace' => 'App\Controllers\Admin\Customer'], function ($routes) {
$routes->get('/', 'AccountController::index');
@ -121,7 +122,6 @@ $routes->group('admin', ['namespace' => 'App\Controllers\Admin', 'filter' => 'au
$routes->post('batchjob', 'ServiceController::batchjob');
$routes->post('batchjob_delete', 'ServiceController::batchjob_delete');
$routes->get('download/(:alpha)', 'ServiceController::download/$1');
$routes->get('detail', 'ServiceController::detail');
});
$routes->group('serviceitem', ['namespace' => 'App\Controllers\Admin\Customer'], function ($routes) {
$routes->get('/', 'ServiceItemController::index');

View File

@ -18,7 +18,6 @@ abstract class AdminController extends CommonController
$this->uri_path = "admin/";
$this->view_path = "admin" . DIRECTORY_SEPARATOR;
$this->content_title = "관리자";
$this->helper = $this->getHelper();
}
//Service,ServicePaymentController사용
final public function getServiceService(): ServiceService

View File

@ -28,13 +28,6 @@ class AccountController extends CustomerController
}
return $this->_service;
}
public function getHelper(): AccountHelper
{
if (!$this->_helper) {
$this->_helper = new AccountHelper();
}
return $this->_helper;
}
//Index,FieldForm관련.
protected function create_process(array $formDatas): AccountEntity
{

View File

@ -3,9 +3,13 @@
namespace App\Controllers\Admin\Customer;
use App\Entities\Customer\ClientEntity;
use App\Entities\Customer\ServiceEntity;
use App\Helpers\Customer\ClientHelper;
use App\Services\Customer\ClientService;
use App\Helpers\Customer\ServiceHelper;
use App\Helpers\Equipment\ServerHelper;
use App\Services\Customer\ClientService;
use CodeIgniter\HTTP\RedirectResponse;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Validation\Validation;
@ -29,13 +33,6 @@ class ClientController extends CustomerController
}
return $this->_service;
}
public function getHelper(): ClientHelper
{
if (!$this->_helper) {
$this->_helper = new ClientHelper();
}
return $this->_helper;
}
//Index,FieldForm관련
//생성관련
protected function create_process(array $formDatas): ClientEntity
@ -75,4 +72,61 @@ class ClientController extends CustomerController
return $validation;
}
//Index,FieldForm관련.
protected function getResultSuccess(string $message = MESSAGES["SUCCESS"], ?string $actionTemplate = null): RedirectResponse|string
{
switch ($this->getAction()) {
// case 'create_form':
// case 'modify_form':
case 'detail':
$this->service = $this->getService();
$this->control = $this->getService()->getControlDatas();
$this->getService()->getHelper()->setViewDatas($this->getViewDatas());
$actionTemplate = $this->request->getVar('ActionTemplate') ?? $actionTemplate ?? 'client';
if ($actionTemplate) {
$view_file = $this->view_path . $actionTemplate . DIRECTORY_SEPARATOR . $this->getAction();
} else {
$view_file = $this->view_path . $this->getAction();
}
$result = view($view_file, ['viewDatas' => $this->getViewDatas()]);
break;
default:
$result = parent::getResultSuccess($message, $actionTemplate);
break;
}
return $result;
}
public function detail(mixed $uid): RedirectResponse|string
{
try {
$this->setAction(__FUNCTION__);
$this->setFormFields();
$this->setFormFilters();
$this->setFormRules();
//기본값정의
$this->setFormDatas($this->request->getGet());
$this->setFormOptions();
//일괄작업용 Fields정의
$entity = $this->getService()->getEntity($uid);
if (!($entity instanceof ClientEntity)) {
throw new \Exception("{$uid}에 해당하는 고객정보를 찾을수 없습니다.");
}
$this->totalCounts = $this->getService()->getServiceService()->getTotalCountsByType(['clientinfo_uid' => $entity->getPK()]);
$this->totalAmounts = $this->getService()->getServiceService()->getTotalAmounts([
'clientinfo_uid' => $entity->getPK(),
'status' => STATUS['AVAILABLE']
]);
$this->unPaids = $this->getService()->getPaymentService()->getUnPaids('clientinfo_uid', [
'clientinfo_uid' => $entity->getPK()
]);
$this->serviceEntities = $this->getService()->getServiceService()->getEntities(['clientinfo_uid' => $entity->getPK()]);
$this->entity = $entity;
helper(['form']);
$this->serviceHelper = new ServiceHelper();
$this->serverHelper = new ServerHelper();
return $this->getResultSuccess();
} catch (\Exception $e) {
return $e->getMessage();
// return $this->getResultFail($e->getMessage());
}
}
}

View File

@ -28,13 +28,6 @@ class CouponController extends CustomerController
}
return $this->_service;
}
public function getHelper(): CouponHelper
{
if (!$this->_helper) {
$this->_helper = new CouponHelper();
}
return $this->_helper;
}
//Index,FieldForm관련.
protected function create_process(array $formDatas): CouponEntity
{

View File

@ -34,13 +34,6 @@ class PaymentController extends CustomerController
}
return $this->_service;
}
public function getHelper(): PaymentHelper
{
if (!$this->_helper) {
$this->_helper = new PaymentHelper();
}
return $this->_helper;
}
public function getClientService(): ClientService
{
if (!$this->_clientService) {
@ -52,8 +45,9 @@ class PaymentController extends CustomerController
{
switch ($this->getAction()) {
case 'invoice':
$this->control = $this->getControlDatas();
$this->getHelper()->setViewDatas($this->getViewDatas());
$this->service = $this->getService();
$this->control = $this->getService()->getControlDatas();
$this->getService()->getHelper()->setViewDatas($this->getViewDatas());
$actionTemplate = $this->request->getVar('ActionTemplate') ?? $actionTemplate ?? 'payment';
if ($actionTemplate) {
$view_file = $this->view_path . $actionTemplate . DIRECTORY_SEPARATOR . $this->getAction();

View File

@ -28,13 +28,6 @@ class PointController extends CustomerController
}
return $this->_service;
}
public function getHelper(): PointHelper
{
if (!$this->_helper) {
$this->_helper = new PointHelper();
}
return $this->_helper;
}
//Index,FieldForm관련.
protected function create_process(array $formDatas): PointEntity
{

View File

@ -31,13 +31,6 @@ class ServiceController extends CustomerController
}
return $this->_service;
}
public function getHelper(): ServiceHelper
{
if (!$this->_helper) {
$this->_helper = new ServiceHelper();
}
return $this->_helper;
}
public function getPaymentService(): PaymentService
{
if (!$this->_paymentService) {
@ -51,11 +44,11 @@ class ServiceController extends CustomerController
switch ($this->getAction()) {
// case 'create_form':
// case 'modify_form':
case 'detail':
case 'view':
case 'index':
$this->control = $this->getControlDatas();
$this->getHelper()->setViewDatas($this->getViewDatas());
$this->service = $this->getService();
$this->control = $this->getService()->getControlDatas();
$this->getService()->getHelper()->setViewDatas($this->getViewDatas());
$actionTemplate = $this->request->getVar('ActionTemplate') ?? $actionTemplate ?? 'service';
if ($actionTemplate) {
$view_file = $this->view_path . $actionTemplate . DIRECTORY_SEPARATOR . $this->getAction();
@ -88,49 +81,13 @@ class ServiceController extends CustomerController
protected function index_process(array $entities = []): array
{
//서비스별 미납 Count
$this->unPaids = $this->getPaymentService()->getUnPaidCount();
$unpaids = ['count' => 0, 'amount' => 0];
foreach ($this->getPaymentService()->getUnPaids('serviceinfo_uid') as $row) {
$unpaids[$row->serviceinfo_uid]['count'] = $row->cnt;
$unpaids[$row->serviceinfo_uid]['amount'] = $row->amount;
};
$this->unpaids = $unpaids;
//부모함수처리
return parent::index_process($entities);
}
public function detail(): RedirectResponse|string
{
try {
$this->setAction(__FUNCTION__);
$this->setFormFields();
$this->setFormFilters();
$this->setFormRules();
//기본값정의
$this->setFormDatas($this->request->getGet());
$this->setFormOptions();
//일괄작업용 Fields정의
$this->setControlDatas('batchjob_fields', $this->getService()->getBatchjobFields());
//일괄작업용 버튼정의
$this->setControlDatas('batchjob_buttions', $this->getService()->getBatchjobButtons());
helper(['form']);
//Return Url정의
$this->getMyAuth()->pushCurrentUrl($this->request->getUri()->getPath() . ($this->request->getUri()->getQuery() ? "?" . $this->request->getUri()->getQuery() : ""));
//조건절 처리
$this->index_condition_process();
//TotalCount (SoftDelete적용이 되려면 countAllResults를 사용해야함)
$this->total_count = $this->getService()->getTotalCount();
//Pagination 처리
$this->pagination = $this->index_pagenation_process();
//줄수 처리용
$this->page_options = $this->index_pageOptions_process();
//조건절 처리
//OrcerBy , Limit 처리
$this->order_field = $this->request->getVar('order_field');
$this->order_value = $this->request->getVar('order_value');
$this->getService()->setOrderBy($this->order_field, $this->order_value);
$this->getService()->setLimit($this->per_page);
$this->getService()->setOffset(($this->page - 1) * $this->per_page);
$this->index_condition_process();
$this->entities = $this->index_process();
return $this->getResultSuccess();
} catch (\Exception $e) {
return $e->getMessage();
// return $this->getResultFail($e->getMessage());
}
}
}

View File

@ -27,12 +27,5 @@ class CSController extends EquipmentController
}
return $this->_service;
}
public function getHelper(): CSHelper
{
if (!$this->_helper) {
$this->_helper = new CSHelper();
}
return $this->_helper;
}
//Index,FieldForm관련
}

View File

@ -30,13 +30,6 @@ class IPController extends EquipmentController
}
return $this->_service;
}
public function getHelper(): IPHelper
{
if (!$this->_helper) {
$this->_helper = new IPHelper();
}
return $this->_helper;
}
final public function getLineService(): LineService
{
if (!$this->_lineService) {

View File

@ -30,13 +30,6 @@ class LineController extends EquipmentController
}
return $this->_service;
}
public function getHelper(): LineHelper
{
if (!$this->_helper) {
$this->_helper = new LineHelper();
}
return $this->_helper;
}
final public function getIPService(): IpService
{
if (!$this->_ipService) {
@ -50,13 +43,13 @@ class LineController extends EquipmentController
protected function create_process(array $formDatas): LineEntity
{
//Line 등록
if (!$this->getHelper()->isValidCIDR($formDatas['bandwith'])) {
if (!$this->getService()->getHelper()->isValidCIDR($formDatas['bandwith'])) {
throw new \Exception("{$formDatas['bandwith']}는 CIDR 형식에 부합되지 않습니다.");
}
//부모처리
$entity = parent::create_process($formDatas);
//Prefixed IP to array 자동 등록
foreach ($this->getHelper()->cidrToIpRange($formDatas['bandwith']) as $ip) {
foreach ($this->getService()->getHelper()->cidrToIpRange($formDatas['bandwith']) as $ip) {
$this->getIPService()->createByLineInfo($entity, $ip);
}
return $entity;

View File

@ -27,13 +27,6 @@ class PartController extends EquipmentController
}
return $this->_service;
}
public function getHelper(): PartHelper
{
if (!$this->_helper) {
$this->_helper = new PartHelper();
}
return $this->_helper;
}
//Index,FieldForm관
// protected function index_process(array $entities = []): array
// {

View File

@ -27,21 +27,15 @@ class ServerController extends EquipmentController
}
return $this->_service;
}
public function getHelper(): ServerHelper
{
if (!$this->_helper) {
$this->_helper = new ServerHelper();
}
return $this->_helper;
}
//Index,FieldForm관련
protected function getResultSuccess(string $message = MESSAGES["SUCCESS"], ?string $actionTemplate = null): RedirectResponse|string
{
switch ($this->getAction()) {
case 'view':
case 'index':
$this->control = $this->getControlDatas();
$this->getHelper()->setViewDatas($this->getViewDatas());
$this->service = $this->getService();
$this->control = $this->getService()->getControlDatas();
$this->getService()->getHelper()->setViewDatas($this->getViewDatas());
$actionTemplate = $this->request->getVar('ActionTemplate') ?? $actionTemplate ?? 'server';
if ($actionTemplate) {
$view_file = $this->view_path . $actionTemplate . DIRECTORY_SEPARATOR . $this->getAction();

View File

@ -26,13 +26,6 @@ class ServerPartController extends EquipmentController
}
return $this->_service;
}
public function getHelper(): ServerPartHelper
{
if (!$this->_helper) {
$this->_helper = new ServerPartHelper();
}
return $this->_helper;
}
//Index,FieldForm관련
public function getFormOption(string $field, array $options = []): array
{

View File

@ -28,13 +28,6 @@ class SwitchController extends EquipmentController
}
return $this->_service;
}
public function getHelper(): SwitchHelper
{
if (!$this->_helper) {
$this->_helper = new SwitchHelper();
}
return $this->_helper;
}
//Index,FieldForm관
protected function create_process(array $formDatas): SwitchEntity
{

View File

@ -30,13 +30,6 @@ class Home extends AdminController
}
return $this->_service;
}
public function getHelper(): mixed
{
if (!$this->_helper) {
$this->_helper = new HomeHelper();
}
return $this->_helper;
}
final public function getPaymentService(): PaymentService
{
if (!$this->_PaymentService) {
@ -48,8 +41,9 @@ class Home extends AdminController
{
switch ($this->getAction()) {
case 'index':
$this->control = $this->getControlDatas();
$this->getHelper()->setViewDatas($this->getViewDatas());
$this->service = $this->getService();
$this->control = $this->getService()->getControlDatas();
$this->getService()->getHelper()->setViewDatas($this->getViewDatas());
$actionTemplate = $this->request->getVar('ActionTemplate') ?? $actionTemplate;
if ($actionTemplate) {
$view_file = $this->view_path . $actionTemplate . DIRECTORY_SEPARATOR . $this->getAction();
@ -79,8 +73,15 @@ class Home extends AdminController
$this->newServiceEntities = $this->getService()->getEntitiesByNewService($this->interval);
$this->newServiceCount = count($this->newServiceEntities);
//서비스별 미납 Count
$this->unPaids = $this->getPaymentService()->getUnPaidCount();
$this->unPaidCount = count($this->unPaids);
$totalUnPaidCount = 0;
$unpaids = ['count' => 0, 'amount' => 0];
foreach ($this->getPaymentService()->getUnPaids('serviceinfo_uid') as $row) {
$unpaids[$row->serviceinfo_uid]['count'] = $row->cnt;
$unpaids[$row->serviceinfo_uid]['amount'] = $row->amount;
$totalUnPaidCount += $row->cnt;
};
$this->unpaids = $unpaids;
$this->totalUnPaidCount = $totalUnPaidCount;
helper(['form']);
return $this->getResultSuccess();
}

View File

@ -12,7 +12,7 @@ use App\Helpers\MyLogHelper;
class MyLogController extends AdminController
{
private $_helper = null;
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
parent::initController($request, $response, $logger);
@ -29,12 +29,5 @@ class MyLogController extends AdminController
}
return $this->_service;
}
public function getHelper(): MyLogHelper
{
if (!$this->_helper) {
$this->_helper = new MyLogHelper();
}
return $this->_helper;
}
//Index,FieldForm관련
}

View File

@ -29,13 +29,6 @@ class SearchController extends AdminController
}
return $this->_service;
}
public function getHelper(): ServiceHelper
{
if (!$this->_helper) {
$this->_helper = new ServiceHelper();
}
return $this->_helper;
}
protected function getResultSuccess(string $message = MESSAGES["SUCCESS"], ?string $actionTemplate = null): RedirectResponse|string
{
switch ($this->getAction()) {

View File

@ -16,7 +16,7 @@ class UserController extends AdminController
{
private $_db;
private $_service = null;
private $_helper = null;
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
parent::initController($request, $response, $logger);
@ -33,24 +33,14 @@ class UserController extends AdminController
}
return $this->_service;
}
public function getHelper(): UserHelper
{
if (!$this->_helper) {
$this->_helper = new UserHelper();
}
return $this->_helper;
}
//Index,FieldForm관련
protected function getResultSuccess(string $message = MESSAGES["SUCCESS"], ?string $actionTemplate = null): RedirectResponse|string
{
switch ($this->getAction()) {
case 'profile_modify':
$this->getMyLogService()->save($this->getService()->getClassName(), $this->getAction(), $message, $this->getMyAuth()->getUIDByAuthInfo());
$result = $this->view($this->entity->getPK());
break;
case 'profile_modify_form':
$this->control = $this->getControlDatas();
$this->getHelper()->setViewDatas($this->getViewDatas());
$this->service = $this->getService();
$this->control = $this->getService()->getControlDatas();
$this->getService()->getHelper()->setViewDatas($this->getViewDatas());
$actionTemplate = $this->request->getVar('ActionTemplate') ?? $actionTemplate;
if ($actionTemplate) {
$view_file = $this->view_path . $actionTemplate . DIRECTORY_SEPARATOR . 'modify_form';
@ -59,6 +49,10 @@ class UserController extends AdminController
}
$result = view($view_file, ['viewDatas' => $this->getViewDatas()]);
break;
case 'profile_modify':
$this->getMyLogService()->save($this->getService()->getClassName(), $this->getAction(), $message, $this->getMyAuth()->getUIDByAuthInfo());
$result = $this->view($this->entity->getPK());
break;
default:
$result = parent::getResultSuccess($message, $actionTemplate);
break;

View File

@ -13,7 +13,7 @@ use Psr\Log\LoggerInterface;
abstract class AuthController extends CommonController
{
private $_helper = null;
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
parent::initController($request, $response, $logger);
@ -24,13 +24,6 @@ abstract class AuthController extends CommonController
}
abstract protected function getSNSButton(): string;
abstract protected function login_process(array $formDatas): UserEntity;
final public function getHelper(): mixed
{
if (!$this->_helper) {
$this->_helper = new AuthHelper();
}
return $this->_helper;
}
protected function getResultFail(string $message = MESSAGES["FAILED"]): RedirectResponse
{
if ($this->request->getMethod() === 'POST') {
@ -74,7 +67,6 @@ abstract class AuthController extends CommonController
$this->forms = ['attributes' => ['method' => "post",], 'hiddens' => []];
return $this->getResultSuccess();
} catch (\Exception $e) {
dd($e->getMessage());
return $this->getResultFail($e->getMessage());
}
}

View File

@ -23,9 +23,7 @@ abstract class CommonController extends BaseController
private $_myAuth = null;
private ?MyLogService $_myLogService = null;
private $_viewDatas = [];
private $_control = [];
abstract public function getService(): mixed;
abstract function getHelper(): mixed;
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
parent::initController($request, $response, $logger);
@ -55,20 +53,6 @@ abstract class CommonController extends BaseController
}
return $this->_myAuth;
}
final protected function getControlDatas(?string $key = null): mixed
{
if (!$key) {
return $this->_control;
}
return array_key_exists($key, $this->_control) ? $this->_control[$key] : null;
}
final protected function setControlDatas(string $key, mixed $values): void
{
if (!array_key_exists($key, $this->_control)) {
$this->_control[$key] = [];
}
$this->_control[$key] = $values;
}
final protected function getViewDatas(): array
{
return $this->_viewDatas;
@ -83,19 +67,19 @@ abstract class CommonController extends BaseController
//Index,FieldForm관련
final protected function setAction(string $action): void
{
$this->_control['action'] = $action;
$this->getService()->setControlDatas('action', $action);
}
final protected function getAction(): string
{
if (!array_key_exists('action', $this->_control)) {
if (!$this->getService()->getControlDatas('action')) {
throw new \Exception("action이 정의되지 않았습니다.");
}
return $this->_control['action'];
return $this->getService()->getControlDatas('action');
}
//FormFields정의
final protected function getFormFields($fields = []): array
{
return array_merge($fields, $this->getControlDatas('actionFields'));
return array_merge($fields, $this->getService()->getControlDatas('actionFields'));
}
final protected function setFormFields(?array $fields = null): void
{
@ -110,11 +94,11 @@ abstract class CommonController extends BaseController
$actionFields = $this->getService()->getFormFields();
break;
}
$this->setControlDatas('actionFields', is_array($fields) ? $fields : $actionFields);
$this->getService()->setControlDatas('actionFields', is_array($fields) ? $fields : $actionFields);
}
final protected function getFormFilters($filters = []): array
{
return array_merge($filters, $this->getControlDatas('actionFilters'));
return array_merge($filters, $this->getService()->getControlDatas('actionFilters'));
}
final protected function setFormFilters(?array $filters = null): void
{
@ -129,12 +113,12 @@ abstract class CommonController extends BaseController
$actionFilters = $this->getService()->getFormFilters();
break;
}
$this->setControlDatas('actionFilters', is_array($filters) ? $filters : $actionFilters);
$this->getService()->setControlDatas('actionFilters', is_array($filters) ? $filters : $actionFilters);
}
//FormRules정의
final protected function getFormRules(array $rules = []): array
{
foreach ($this->getControlDatas('field_rules') as $field => $rule) {
foreach ($this->getService()->getControlDatas('field_rules') as $field => $rule) {
$rules[$field] = $rule;
}
return $rules;
@ -142,15 +126,15 @@ abstract class CommonController extends BaseController
final protected function setFormRules(): void
{
$rules = [];
foreach ($this->getControlDatas('actionFields') as $field) {
foreach ($this->getService()->getControlDatas('actionFields') as $field) {
$rules = $this->getFormRule($field, $rules);
}
$this->setControlDatas('field_rules', $rules);
$this->getService()->setControlDatas('field_rules', $rules);
}
//FormOptions정의
final protected function getFormOptions(array $options = []): array
{
foreach ($this->getControlDatas('field_optons') as $field => $option) {
foreach ($this->getService()->getControlDatas('field_optons') as $field => $option) {
$options[$field] = $option;
}
return $options;
@ -159,29 +143,29 @@ abstract class CommonController extends BaseController
{
//기존 Filter Options 가져와서 field에 해당하는 option이 없으면 field를 key로 배열추가 후 다시 filter_options 전체 적용
$options = [];
foreach ($this->getControlDatas('actionFilters') as $field) {
foreach ($this->getService()->getControlDatas('actionFilters') as $field) {
$options[$field] = $this->getFormOption($field, $options);
}
$this->setControlDatas('field_optons', $options);
$this->getService()->setControlDatas('field_optons', $options);
}
//FormDatas 전달값,Default값
final protected function getFormDatas(): array
{
return $this->getControlDatas('form_datas');
return $this->getService()->getControlDatas('form_datas');
}
final protected function setFormDatas(array $requestDatas, array $formDatas = []): void
{
foreach ($this->getControlDatas('actionFields') as $field) {
foreach ($this->getService()->getControlDatas('actionFields') as $field) {
$formDatas = $this->setFormData($field, $requestDatas, $formDatas);
}
$this->setControlDatas('form_datas', $formDatas);
$this->getService()->setControlDatas('form_datas', $formDatas);
}
//FormDatas 검증
final protected function doValidations(): void
{
//변경할 값 확인 : Upload된 파일 검증시 $this->request->getPOST()보다 먼처 체크필요
$validation = service('validation');
foreach ($this->getControlDatas('field_rules') as $field => $rule) {
foreach ($this->getService()->getControlDatas('field_rules') as $field => $rule) {
$validation = $this->doValidation($validation, $field, $rule);
}
if (!$validation->run($this->getFormDatas())) {
@ -252,7 +236,7 @@ abstract class CommonController extends BaseController
protected function getResultSuccess(string $message = MESSAGES["SUCCESS"], ?string $actionTemplate = null): RedirectResponse|string
{
helper(['form']);
switch ($this->getControlDatas('action')) {
switch ($this->getService()->getControlDatas('action')) {
case 'create':
case 'modify':
// $this->getMyLogService()->save($this->getService()->getClassName(), $this->getAction(), $message, $this->getMyAuth()->getUIDByAuthInfo());
@ -264,8 +248,9 @@ abstract class CommonController extends BaseController
case 'view':
case 'index':
case 'download':
$this->control = $this->getControlDatas();
$this->getHelper()->setViewDatas($this->getViewDatas());
$this->service = $this->getService();
$this->control = $this->getService()->getControlDatas();
$this->getService()->getHelper()->setViewDatas($this->getViewDatas());
$actionTemplate = $this->request->getVar('ActionTemplate') ?? $actionTemplate;
if ($actionTemplate) {
$view_file = $this->view_path . $actionTemplate . DIRECTORY_SEPARATOR . $this->getAction();
@ -570,28 +555,28 @@ abstract class CommonController extends BaseController
{
//Filter조건절 처리
$index_filters = [];
foreach ($this->getControlDatas('actionFilters') as $field) {
foreach ($this->getService()->getControlDatas('actionFilters') as $field) {
$value = $this->request->getGet($field);
if ($value) {
$this->getService()->index_condition_filterField($field, $value);
$index_filters[$field] = $value;
}
}
$this->setControlDatas('index_filters', $index_filters);
$this->getService()->setControlDatas('index_filters', $index_filters);
//검색어조건절 처리
$index_word = $this->request->getVar('index_word');
if ($index_word !== null && $index_word !== '') {
$this->getService()->index_condition_filterWord($index_word);
}
$this->setControlDatas('index_word', $index_word);
$this->getService()->setControlDatas('index_word', $index_word);
//날자검색
$index_start = $this->request->getVar('index_start');
$index_end = $this->request->getVar('index_end');
if ($index_start !== null && $index_start !== '' && $index_end !== null && $index_end !== '') {
$this->getService()->index_condition_filterDate($index_start, $index_end);
}
$this->setControlDatas('index_start', $index_start);
$this->setControlDatas('index_end', $index_end);
$this->getService()->setControlDatas('index_start', $index_start);
$this->getService()->setControlDatas('index_end', $index_end);
}
//PageNation 처리
protected function index_pagenation_process($pager_group = 'default', int $segment = 0, $template = 'bootstrap_full')
@ -637,9 +622,9 @@ abstract class CommonController extends BaseController
$this->setFormDatas($this->request->getGet());
$this->setFormOptions();
//일괄작업용 Fields정의
$this->setControlDatas('batchjob_fields', $this->getService()->getBatchjobFields());
$this->getService()->setControlDatas('batchjob_fields', $this->getService()->getBatchjobFields());
//일괄작업용 버튼정의
$this->setControlDatas('batchjob_buttions', $this->getService()->getBatchjobButtons());
$this->getService()->setControlDatas('batchjob_buttions', $this->getService()->getBatchjobButtons());
helper(['form']);
//Return Url정의
$this->getMyAuth()->pushCurrentUrl($this->request->getUri()->getPath() . ($this->request->getUri()->getQuery() ? "?" . $this->request->getUri()->getQuery() : ""));

View File

@ -22,6 +22,10 @@ class ClientEntity extends CustomerEntity
{
return $this->attributes['role'];
}
public function getSaleRate(): int
{
return $this->attributes['sale_rate'] ?? 0;
}
public function getAccountBalance(): int
{
return $this->attributes['account_balance'];
@ -34,4 +38,8 @@ class ClientEntity extends CustomerEntity
{
return $this->attributes['point_balance'];
}
public function getHistory(): string
{
return $this->attributes['history'] ?? "";
}
}

View File

@ -10,13 +10,9 @@ class PaymentEntity extends CustomerEntity
const PK = PaymentModel::PK;
const TITLE = PaymentModel::TITLE;
const DEFAULT_STATUS = STATUS['UNPAID'];
public function getItemType(): string
public function getBilling(): string
{
return $this->attributes['item_type'];
}
public function getIsOnetime(): int
{
return $this->attributes['isOnetime'];
return $this->attributes['billing'];
}
public function getAmount(): int
{
@ -26,9 +22,9 @@ class PaymentEntity extends CustomerEntity
{
return $this->attributes['billing_at'];
}
public function getPayMethod(): string
public function getPay(): string
{
return $this->attributes['pay_method'];
return $this->attributes['pay'];
}
public function getCountDueAt(): string
{

View File

@ -3,6 +3,7 @@
namespace App\Entities\Customer;
use App\Entities\Equipment\ServerEntity;
use App\Entities\UserEntity;
use App\Models\Customer\ServiceModel;
class ServiceEntity extends CustomerEntity
@ -10,6 +11,24 @@ class ServiceEntity extends CustomerEntity
const PK = ServiceModel::PK;
const TITLE = ServiceModel::TITLE;
const DEFAULT_STATUS = STATUS['AVAILABLE'];
public function setUserEntity(UserEntity $entity): ServiceEntity
{
$this->attributes['userEntity'] = $entity;
return $this;
}
public function getUSerEntity(): UserEntity
{
return $this->attributes['userEntity'];
}
public function setClientEntity(UserEntity $entity): ServiceEntity
{
$this->attributes['clientEntity'] = $entity;
return $this;
}
public function getClientEntity(): ClientEntity
{
return $this->attributes['clientEntity'];
}
public function setServerEntity(ServerEntity $entity): ServiceEntity
{
$this->attributes['serverEntity'] = $entity;
@ -23,12 +42,24 @@ class ServiceEntity extends CustomerEntity
{
return $this->attributes['code'];
}
final public function getSite(): string
{
return $this->attributes['site'];
}
public function getType(): string
{
return $this->attributes['type'];
}
final public function getLocation(): string
{
return $this->attributes['location'];
}
final public function getBillingAt(): string
{
return $this->attributes['billing_at'];
}
final public function getAmount(): int
{
return $this->attributes['amount'] ?? 0;
}
}

View File

@ -37,7 +37,7 @@ class ServiceHelper extends CustomerHelper
{
switch ($field) {
case 'clientinfo_uid':
$value = "<a href=\"/admin/customer/service/detail?clientinfo_uid={$value}\">" . $viewDatas['control']['field_optons'][$field][$value]->getTitle() . "</a>";
$value = "<a href=\"/admin/customer/client/detail/{$value}\">" . $viewDatas['control']['field_optons'][$field][$value]->getTitle() . "</a>";
break;
case 'serverinfo_uid':
$value = array_key_exists('entity', $viewDatas) ? $viewDatas['entity']->getServerEntity()->getCustomTitle() : "지정된서버없음";

View File

@ -0,0 +1,27 @@
<?php
namespace App\Helpers;
use App\Models\UserModel;
class UserSNSHelper extends CommonHelper
{
public function __construct()
{
parent::__construct();
$this->setTitleField(UserModel::TITLE);
}
public function getFieldForm(string $field, mixed $value, array $viewDatas, array $extras = []): string
{
switch ($field) {
case 'passwd':
case 'confirmpassword':
$form = form_password($field, "", [...$extras]);
break;
default:
$form = parent::getFieldForm($field, $value, $viewDatas, $extras);
break;
}
return $form;
} //
}

View File

@ -33,9 +33,10 @@ return [
"normal" => "일반",
"defence" => "방어",
"dedicated" => "전용",
"alternative" => "대체",
"vpn" => "VPN",
"event" => "이벤트",
"test" => "테스트",
"VPN" => "VPN",
"alternative" => "대체",
"ours" => "자사용",
"colocation" => "코로케이션",
],

View File

@ -58,25 +58,4 @@ class PaymentModel extends CustomerModel
}
return $rule;
}
/**
* 서비스(고객) 미납결제정보
* @param array<string> checkDate = 'now' , '-1 day' , '-2 day'
* @return array<string, array<string,int>>
* [serviceinfo_uid => count], [clientinfo_uid => count]
*/
final public function getUnPaidCount(string $checkDate = 'now', string $idx_field = "serviceinfo_uid"): array
{
// strtotime 기준으로 날짜 계산
$dateTime = date('Y-m-d H:i:s', strtotime($checkDate));
$rows = $this->asArray()
->select("{$idx_field}, COUNT(*) as cnt")
->where('billing_at <', $dateTime)
->where('amount >', 0)
->where('status', STATUS['UNPAID'])
->groupBy($idx_field)
->findAll();
//array_column($rows, 'cnt', 'serviceinfo_uid')는 serviceinfo_uid를 키로 하고 cnt를 값으로 하는 연관 배열을 생성합니다.
return array_column($rows, 'cnt', $idx_field);
}
}

View File

@ -3,18 +3,20 @@
namespace App\Services\Auth;
use App\Entities\UserEntity;
use App\Helpers\CommonHelper;
use App\Models\CommonModel;
use App\Services\CommonService;
use CodeIgniter\Session\Session;
use CodeIgniter\Model;
// 참고:https://github.com/SyntaxPhoenix/iloclient
abstract class AuthService extends CommonService
{
private ?Session $_session = null;
private $url_stack_name = "url_stack";
protected function __construct(Model $model)
protected function __construct(CommonModel $model, CommonHelper $helper)
{
parent::__construct($model);
parent::__construct($model, $helper);
$this->addClassName('Auth');
}
abstract public function login(array $formDatas): UserEntity;

View File

@ -3,6 +3,7 @@
namespace App\Services\Auth;
use App\Entities\UserEntity;
use App\Helpers\UserHelper;
use App\Models\UserModel;
use App\Libraries\MySocket\GoogleSocket\CURL;
use CodeIgniter\Exceptions\PageNotFoundException;
@ -13,7 +14,7 @@ class GoogleService extends AuthService
public function __construct(mixed $mySocket)
{
$this->_mySocket = $mySocket;
parent::__construct(new UserModel());
parent::__construct(new UserModel(), new UserHelper());
$this->addClassName('Google');
}
public function getMySocket(): mixed

View File

@ -3,13 +3,14 @@
namespace App\Services\Auth;
use App\Entities\UserEntity;
use App\Helpers\UserHelper;
use App\Models\UserModel;
class LocalService extends AuthService
{
public function __construct()
{
parent::__construct(new UserModel());
parent::__construct(new UserModel(), new UserHelper());
$this->addClassName('Local');
}
public function getFormFields(): array

View File

@ -2,20 +2,45 @@
namespace App\Services;
use App\Entities\CommonEntity;
use App\Entities\FormOptionEntity;
use CodeIgniter\Model;
use App\Models\CommonModel;
use App\Helpers\CommonHelper;
abstract class CommonService
{
private $_model = null;
private $_helper = null;
private $_classNames = [];
protected function __construct(Model $model)
private $_control = [];
protected function __construct(CommonModel $model, CommonHelper $helper)
{
$this->_model = $model;
$this->_helper = $helper;
}
abstract public function getFormFields(): array;
abstract public function getFormFilters(): array;
final public function getHelper(): mixed
{
if (!$this->_helper) {
throw new \Exception("Helper가 정의되지 않았습니다. " . __METHOD__);
}
return $this->_helper;
}
final public function getControlDatas(?string $key = null): mixed
{
if (!$key) {
return $this->_control;
}
return array_key_exists($key, $this->_control) ? $this->_control[$key] : null;
}
final public function setControlDatas(string $key, mixed $values): void
{
if (!array_key_exists($key, $this->_control)) {
$this->_control[$key] = [];
}
$this->_control[$key] = $values;
}
final protected function addClassName(string $className): void
{
$this->_classNames[] = $className;

View File

@ -3,14 +3,14 @@
namespace App\Services\Customer;
use App\Entities\Customer\AccountEntity;
use App\Helpers\Customer\AccountHelper;
use App\Models\Customer\AccountModel;
use App\Entities\Customer\ClientEntity;
class AccountService extends CustomerService
{
public function __construct()
{
parent::__construct(new AccountModel());
parent::__construct(new AccountModel(), new AccountHelper());
$this->addClassName('Account');
}
public function getFormFields(): array

View File

@ -3,13 +3,14 @@
namespace App\Services\Customer;
use App\Entities\Customer\ClientEntity;
use App\Helpers\Customer\ClientHelper;
use App\Models\Customer\ClientModel;
class ClientService extends CustomerService
{
public function __construct()
{
parent::__construct(new ClientModel());
parent::__construct(new ClientModel(), new ClientHelper());
$this->addClassName('Client');
}
public function getFormFields(): array

View File

@ -3,14 +3,14 @@
namespace App\Services\Customer;
use App\Entities\Customer\CouponEntity;
use App\Helpers\Customer\CouponHelper;
use App\Models\Customer\CouponModel;
use App\Entities\Customer\ClientEntity;
class CouponService extends CustomerService
{
public function __construct()
{
parent::__construct(new CouponModel());
parent::__construct(new CouponModel(), new CouponHelper());
$this->addClassName('Coupon');
}
public function getFormFields(): array

View File

@ -3,9 +3,12 @@
namespace App\Services\Customer;
use App\Entities\Customer\ClientEntity;
use App\Services\CommonService;
use App\Helpers\CommonHelper;
use App\Models\CommonModel;
use App\Services\CommonService;
use App\Services\Customer\ClientService;
use App\Services\Customer\PaymentService;
use App\Services\Equipment\ServerService;
use App\Services\Equipment\SwitchService;
use App\Services\UserService;
@ -18,11 +21,12 @@ abstract class CustomerService extends CommonService
private ?ServiceService $_serviceService = null;
private ?ServerService $_serverService = null;
private ?SwitchService $_switchService = null;
private ?PaymentService $_paymentServiceService = null;
private $_equipmentService = [];
protected function __construct(Model $model)
protected function __construct(CommonModel $model, CommonHelper $helper)
{
parent::__construct($model);
parent::__construct($model, $helper);
$this->addClassName('Customer');
}
final public function getClientService(): ClientService
@ -46,6 +50,13 @@ abstract class CustomerService extends CommonService
}
return $this->_serviceService;
}
final public function getPaymentService(): PaymentService
{
if (!$this->_paymentServiceService) {
$this->_paymentServiceService = new PaymentService();
}
return $this->_paymentServiceService;
}
final public function getSwitchService(): SwitchService
{
if (!$this->_switchService) {

View File

@ -3,13 +3,14 @@
namespace App\Services\Customer;
use App\Entities\Customer\PaymentEntity;
use App\Helpers\Customer\PaymentHelper;
use App\Models\Customer\PaymentModel;
class PaymentService extends CustomerService
{
public function __construct()
{
parent::__construct(new PaymentModel());
parent::__construct(new PaymentModel(), new PaymentHelper());
$this->addClassName('Payment');
}
public function getModelClass(): PaymentModel
@ -95,9 +96,21 @@ class PaymentService extends CustomerService
$this->getModel()->orderBy('billing_at ASC');
parent::setOrderBy($field, $value);
}
//미납서비스 정보
final public function getUnPaidCount(string $checkDate = 'now', string $idx_field = "serviceinfo_uid"): array
//총 미납건수, 금액
public function getUnPaids(string $group, array $where = []): array
{
return $this->getModel()->getUnPaidCount($checkDate, $idx_field);
$rows = $this->getModel()->groupBy($group)
->select("{$group}, COUNT(uid) as cnt, SUM(amount) as amount")
->where(['billing_at <=' => date('Y-m-d')])
->where(['status' => STATUS['UNPAID']])
->where($where)
->get()->getResult();
$unpaids = [];
foreach ($rows as $row) {
$unpaids[$row->$group] = [];;
$unpaids[$row->$group]['count'] = $row->cnt;
$unpaids[$row->$group]['amount'] = $row->amount;
}
return $unpaids;
}
}

View File

@ -3,14 +3,14 @@
namespace App\Services\Customer;
use App\Entities\Customer\PointEntity;
use App\Helpers\Customer\PointHelper;
use App\Models\Customer\PointModel;
use App\Entities\Customer\ClientEntity;
class PointService extends CustomerService
{
public function __construct()
{
parent::__construct(new PointModel());
parent::__construct(new PointModel(), new PointHelper());
$this->addClassName('Point');
}
public function getFormFields(): array

View File

@ -2,8 +2,11 @@
namespace App\Services\Customer;
use App\Entities\Customer\ClientEntity;
use App\Entities\Customer\ServiceEntity;
use App\Entities\Equipment\ServerEntity;
use App\Entities\UserEntity;
use App\Helpers\Customer\ServiceHelper;
use App\Models\Customer\ServiceModel;
use App\Services\Equipment\ServerService;
use App\Traits\IPTrait;
@ -14,7 +17,7 @@ class ServiceService extends CustomerService
private ?ServerService $_serverService = null;
public function __construct()
{
parent::__construct(new ServiceModel());
parent::__construct(new ServiceModel(), new ServiceHelper());
$this->addClassName('Service');
}
public function getFormFields(): array
@ -95,6 +98,18 @@ class ServiceService extends CustomerService
if (!($entity instanceof ServiceEntity)) {
throw new \Exception(__METHOD__ . "에서 형식오류:ServiceEntity만 허용됩니다.");
}
//관리자정보 정의
$userEntity = $this->getUserService()->getEntity($entity->getUserUID());
if (!($userEntity instanceof UserEntity)) {
throw new \Exception("{$entity->getUserUID()}에 해당하는 관리자정보를 찾을수 없습니다.");
}
$entity = $entity->setUserEntity($userEntity);
//고객정보 정의
$clientEntity = $this->getClientService()->getEntity($entity->getClientInfoUID());
if (!($clientEntity instanceof ClientEntity)) {
throw new \Exception("{$entity->getClientInfoUID()}에 해당하는 고객정보를 찾을수 없습니다.");
}
$entity = $entity->setUserEntity($userEntity);
//서버정보 정의
$serverEntity = $this->getServerService()->getEntity(['serviceinfo_uid' => $entity->getPK()]);
if (!($serverEntity instanceof ServerEntity)) {
@ -130,7 +145,7 @@ class ServiceService extends CustomerService
return $this->getEntities(sprintf("start_at >= NOW()-INTERVAL {$interval} DAY AND status = '%s'", $status));
}
//서비스 방식에 따른 서비스별 Count
final public function getTotalCountsByType(): array
final public function getTotalCountsByType(array $where = []): array
{
$totalCounts = [
'chiba_total' => 0,
@ -139,15 +154,18 @@ class ServiceService extends CustomerService
'normal' => ['chiba' => 0, 'tokyo' => 0, 'total' => 0],
'defence' => ['chiba' => 0, 'tokyo' => 0, 'total' => 0],
'dedicated' => ['chiba' => 0, 'tokyo' => 0, 'total' => 0],
'alternative' => ['chiba' => 0, 'tokyo' => 0, 'total' => 0],
'vpn' => ['chiba' => 0, 'tokyo' => 0, 'total' => 0],
'event' => ['chiba' => 0, 'tokyo' => 0, 'total' => 0],
'test' => ['chiba' => 0, 'tokyo' => 0, 'total' => 0],
'alternative' => ['chiba' => 0, 'tokyo' => 0, 'total' => 0],
];
$sql = "SELECT type,
$rows = $this->getModel()->groupBy('type')->select("type,
COUNT(CASE WHEN location = 'chiba' THEN 1 END) AS chiba,
COUNT(CASE WHEN location = 'tokyo' THEN 1 END) AS tokyo,
COUNT(CASE WHEN location IN ('chiba', 'tokyo') THEN 1 END) AS total
FROM serviceinfo GROUP BY type";
foreach ($this->getModel()->query($sql)->getResult() as $row) {
COUNT(CASE WHEN location IN ('chiba', 'tokyo') THEN 1 END) AS total")
->where($where)
->get()->getResult();
foreach ($rows as $row) {
$totalCounts[$row->type] = [
'chiba' => $row->chiba,
'tokyo' => $row->tokyo,
@ -159,6 +177,18 @@ class ServiceService extends CustomerService
$totalCounts['all_total'] = $totalCounts['chiba_total'] + $totalCounts['tokyo_total'];
return $totalCounts;
}
//서비스별 총 금액
final public function getTotalAmounts($where = []): array
{
$rows = $this->getModel()->groupBy('clientinfo_uid')->select("clientinfo_uid,SUM(amount) AS amount")
->where($where)
->get()->getResult();
$amounts = [];
foreach ($rows as $row) {
$amounts[$row->clientinfo_uid] = $row->amount;
}
return $amounts;
}
//다음 달로 결제일을 연장합니다.
final public function extendBillingAt(string $billing_at, string $status): bool
{
@ -169,7 +199,6 @@ class ServiceService extends CustomerService
) WHERE billing_at = ? AND status = ?";
return $this->getModel()->query($sql, [$billing_at, $status]);
}
//서버정보 상태설정용
private function setServer_process(ServiceEntity $entity, mixed $serverinfo_uid, string $status): ServiceEntity
{

View File

@ -2,13 +2,14 @@
namespace App\Services\Equipment;
use App\Helpers\Equipment\CSHelper;
use App\Models\Equipment\CSModel;
class CSService extends EquipmentService
{
public function __construct()
{
parent::__construct(new CSModel());
parent::__construct(new CSModel(), new CSHelper());
$this->addClassName('CS');
}
public function getFormFields(): array

View File

@ -2,11 +2,13 @@
namespace App\Services\Equipment;
use App\Services\CommonService;
use App\Entities\Customer\ClientEntity;
use App\Helpers\CommonHelper;
use App\Models\CommonModel;
use App\Services\CommonService;
use App\Services\Customer\ClientService;
use App\Services\Customer\ServiceService;
use App\Entities\Customer\ClientEntity;
use App\Services\Equipment\ServerService;
use App\Services\UserService;
use CodeIgniter\Model;
@ -17,9 +19,9 @@ abstract class EquipmentService extends CommonService
private ?ClientService $_clientService = null;
private ?ServiceService $_serviceService = null;
private ?ServerService $_serverService = null;
protected function __construct(Model $model)
protected function __construct(CommonModel $model, CommonHelper $helper)
{
parent::__construct($model);
parent::__construct($model, $helper);
$this->addClassName('Equipment');
}
final public function getClientService(): ClientService

View File

@ -5,6 +5,7 @@ namespace App\Services\Equipment;
use App\Entities\Equipment\IPEntity;
use App\Entities\Equipment\LineEntity;
use App\Entities\Equipment\ServerEntity;
use App\Helpers\Equipment\IPHelper;
use App\Models\Equipment\IPModel;
use App\Services\Equipment\EquipmentService;
use App\Services\Equipment\LineService;
@ -14,7 +15,7 @@ class IPService extends EquipmentService
private ?LineService $_lineService = null;
public function __construct()
{
parent::__construct(new IPModel());
parent::__construct(new IPModel(), new IPHelper());
$this->addClassName('IP');
}
public function getFormFields(): array

View File

@ -2,13 +2,14 @@
namespace App\Services\Equipment;
use App\Helpers\Equipment\LineHelper;
use App\Models\Equipment\LineModel;
class LineService extends EquipmentService
{
public function __construct()
{
parent::__construct(new LineModel());
parent::__construct(new LineModel(), new LineHelper());
$this->addClassName('Line');
}
public function getFormFields(): array

View File

@ -3,13 +3,14 @@
namespace App\Services\Equipment;
use App\Entities\Equipment\PartEntity;
use App\Helpers\Equipment\PartHelper;
use App\Models\Equipment\PartModel;
class PartService extends EquipmentService
{
public function __construct()
{
parent::__construct(new PartModel());
parent::__construct(new PartModel(), new PartHelper());
$this->addClassName('Part');
}
public function getFormFields(): array

View File

@ -17,7 +17,7 @@ class ServerPartService extends EquipmentService
private ?CSService $_csService = null;
public function __construct()
{
parent::__construct(new ServerPartModel());
parent::__construct(new ServerPartModel(), new ServerPartHelper());
$this->addClassName('ServerPart');
}
public function getFormFields(): array

View File

@ -2,9 +2,9 @@
namespace App\Services\Equipment;
use App\Entities\CommonEntity;
use App\Entities\Customer\ServiceEntity;
use App\Entities\Equipment\ServerEntity;
use App\Helpers\Equipment\ServerHelper;
use App\Models\Equipment\ServerModel;
use App\Services\Equipment\EquipmentService;
@ -13,7 +13,7 @@ class ServerService extends EquipmentService
private ?ServerPartService $_serverPartService = null;
public function __construct()
{
parent::__construct(new ServerModel());
parent::__construct(new ServerModel(), new ServerHelper());
$this->addClassName('Server');
}
public function getFormFields(): array

View File

@ -2,16 +2,16 @@
namespace App\Services\Equipment;
use App\Services\Equipment\EquipmentService;
use App\Models\Equipment\SwitchModel;
use App\Entities\Equipment\SwitchEntity;
use App\Entities\Equipment\ServerEntity;
use App\Helpers\Equipment\SwitchHelper;
use App\Models\Equipment\SwitchModel;
use App\Services\Equipment\EquipmentService;
class SwitchService extends EquipmentService
{
public function __construct()
{
parent::__construct(new SwitchModel());
parent::__construct(new SwitchModel(), new SwitchHelper());
$this->addClassName('Switch');
}
public function getFormFields(): array

View File

@ -3,8 +3,10 @@
namespace App\Services;
use App\Entities\MyLogEntity;
use App\Models\MyLogModel;
use App\Helpers\MyLogHelper;
use App\Libraries\LogCollector;
use App\Models\MyLogModel;
use App\Services\CommonService;
use App\Services\UserService;
class MyLogService extends CommonService
@ -12,7 +14,7 @@ class MyLogService extends CommonService
private $_userService = null;
public function __construct()
{
parent::__construct(new MyLogModel());
parent::__construct(new MyLogModel(), new MyLogHelper());
$this->addClassName('MyLog');
}
public function getFormFields(): array

View File

@ -2,15 +2,15 @@
namespace App\Services;
use App\Helpers\UserSNSHelper;
use App\Models\UserSNSModel;
use App\Entities\UserSNSEntity;
// use Google\Service\AndroidEnterprise\Resource\Users;
class UserSNSService extends CommonService
{
public function __construct()
{
parent::__construct(new UserSNSModel());
parent::__construct(new UserSNSModel(), new UserSNSHelper());
$this->addClassName('UserSNS');
}
public function getFormFields(): array

View File

@ -3,13 +3,14 @@
namespace App\Services;
use App\Entities\UserEntity;
use App\Helpers\UserHelper;
use App\Models\UserModel;
class UserService extends CommonService
{
public function __construct()
{
parent::__construct(new UserModel());
parent::__construct(new UserModel(), new UserHelper());
$this->addClassName('User');
}
public function getFormFields(): array

View File

@ -0,0 +1,141 @@
<?= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
<?= $this->section('content') ?>
<?php if ($error = session('error')): echo $viewDatas['service']->getHelper()->alert($error) ?><?php endif ?>
<div class="layout_top"><?= $this->include(LAYOUTS[$viewDatas['layout']]['path'] . '/top'); ?></div>
<!-- Layout Middle Start -->
<table class="layout_middle">
<tr>
<td class="layout_left">
<!-- Layout Left Start -->
<?= $this->include(LAYOUTS[$viewDatas['layout']]['path'] . '/left_menu'); ?>
<!-- Layout Left End -->
</td>
<td class="layout_right">
<!-- Layout Right Start -->
<div class="layout_header"><?= $this->include("templates/{$viewDatas['layout']}/index_header"); ?></div>
<div id="container" class="layout_content">
<link href="/css/<?= $viewDatas['layout'] ?>/index.css" media="screen" rel="stylesheet" type="text/css" />
<link href="/css/admin/client/detail.css" media="screen" rel="stylesheet" type="text/css" />
<div class="index_body p-4">
<!-- index_body -->
<div class="row align-items-end rounded border border-gray p-2 mt-3">
<table class="table table-bordered table-hover table-striped">
<tr class="text-center">
<th rowspan="2">
<div><?= $viewDatas['entity']->getTitle() ?></div>
<div><a href="/admin/customer/payment?clientinfo_uid=<?= $viewDatas['entity']->getPK() ?>">[청구서발행]</a></div>
</th>
<th>도코</th>
<th>치바</th>
<th>VPN</th>
<th>일반</th>
<th>방어</th>
<th>전용</th>
<th>이벤트</th>
<th>테스트</th>
<th>대체</th>
<th>쿠폰</th>
<th>장기할인</th>
<th>예치금</th>
<th>전체요금</th>
<th>전체미납금</th>
</tr>
<tr class="text-center">
<td><?= $viewDatas['totalCounts']['tokyo_total'] ?></td>
<td><?= $viewDatas['totalCounts']['chiba_total'] ?></td>
<td><?= $viewDatas['totalCounts']['vpn']['total'] ?></td>
<td><?= $viewDatas['totalCounts']['normal']['total'] ?></td>
<td><?= $viewDatas['totalCounts']['defence']['total'] ?></td>
<td><?= $viewDatas['totalCounts']['dedicated']['total'] ?></td>
<td><?= $viewDatas['totalCounts']['event']['total'] ?></td>
<td><?= $viewDatas['totalCounts']['test']['total'] ?></td>
<td><?= $viewDatas['totalCounts']['alternative']['total'] ?></td>
<td><?= $viewDatas['entity']->getCouponBalance() ?>%</td>
<td><?= $viewDatas['entity']->getSaleRate() ?>%</td>
<td><?= $viewDatas['entity']->getAccountBalance() ?></td>
<td><?= array_key_exists($viewDatas['entity']->getPK(), $viewDatas['totalAmounts']) ? number_format($viewDatas['totalAmounts'][$viewDatas['entity']->getPK()]) : 0 ?></td>
<td><?= array_key_exists($viewDatas['entity']->getPK(), $viewDatas['unPaids']) ? number_format($viewDatas['unPaids'][$viewDatas['entity']->getPK()]['amount']) : 0 ?></td>
</td>
</tr>
</table>
</div>
<div class="row align-items-center rounded border border-gray p-2 mt-3">
<div class="col-1">
<div class="text-center fw-bold">고객 비고</div>
</div>
<div class="col-10">
<textarea class="form-control note-box"><?= nl2br($viewDatas['entity']->getHistory()) ?></textarea>
</div>
<div class="col-1">
<button class="btn btn-primary">저장</button>
</div>
</div>
<?php foreach ($viewDatas['serviceEntities'] as $serviceEntity): ?>
<div class="row align-items-end rounded border border-gray p-2 mt-3">
<table class="table table-bordered table-hover table-striped">
<tr class="text-center">
<th><a href="#">[상세정보]</a></th>
<th>사이트</th>
<th>위치</th>
<th>형식</th>
<th>CPU</th>
<th>메모리</th>
<th>저장장치</th>
<th>OS</th>
<th>SOFTWARE</th>
<th>IP주소</th>
<th>CS</th>
<th>결제처리</th>
</tr>
<tr class="text-center">
<td rowspan="4">
<div><?= $serviceEntity->getCode() ?></div>
<div><?= $serviceEntity->getServerEntity()->getCode() ?></div>
</td>
<td><?= $viewDatas['serviceHelper']->getFieldView('site', $serviceEntity->getSite(), $viewDatas) ?></td>
<td><?= $viewDatas['serviceHelper']->getFieldView('location', $serviceEntity->getLocation(), $viewDatas) ?></td>
<td><?= $viewDatas['serviceHelper']->getFieldView('type', $serviceEntity->getType(), $viewDatas) ?></td>
<td>CPU</td>
<td>메모리</td>
<td>저장장치</td>
<td>OS</td>
<th>SOFTWARE</th>
<th>IP주소</th>
<th>CS</th>
<td rowspan="4">
<table class="table">
<tr class="text-center">
<th class="text-start fw-bold">결제일</th>
<td>2025-09-11</td>
</tr>
<tr>
<th class="text-start fw-bold">결제금</th>
<td class="amount-green">500,000</td>
</tr>
<tr>
<th class="text-start fw-bold">미납금</th>
<td class="amount-red">500,000</td>
</tr>
</table>
</td>
</tr>
<tr>
<th colspan="10">서비스 비고</th>
</tr>
<tr>
<td colspan="10">서비스 비고</td>
</tr>
</table>
</div>
<?php endforeach; ?>
</div>
<!-- index_body -->
</div>
<div class="layout_footer"><?= $this->include("templates/{$viewDatas['layout']}/index_footer"); ?></div>
<!-- Layout Right End -->
</td>
</tr>
</table>
<!-- Layout Middle End -->
<div class="layout_bottom"><?= $this->include(LAYOUTS[$viewDatas['layout']]['path'] . '/bottom'); ?></div>
<?= $this->endSection() ?>

View File

@ -1,6 +1,6 @@
<?= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
<?= $this->section('content') ?>
<?php if ($error = session('error')): echo $viewDatas['helper']->alert($error) ?><?php endif ?>
<?php if ($error = session('error')): echo $viewDatas['service']->getHelper()->alert($error) ?><?php endif ?>
<div id="container" class="content">
<div class="form_top"><?= $this->include("templates/{$viewDatas['layout']}/form_content_top"); ?></div>
<?= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
@ -8,9 +8,9 @@
<table class="table table-bordered">
<?php foreach ($viewDatas['control']['actionFields'] as $field): ?>
<tr>
<th nowrap class="text-end"><?= $viewDatas['helper']->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<th nowrap class="text-end"><?= $viewDatas['service']->getHelper()->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<td nowrap class="text-start">
<?= $viewDatas['helper']->getFieldForm($field, old($field) ?? ($viewDatas['control']['form_datas'][$field] ?? null), $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getFieldForm($field, old($field) ?? ($viewDatas['control']['form_datas'][$field] ?? null), $viewDatas) ?>
<span><?= validation_show_error($field); ?></span>
</td>
</tr>

View File

@ -12,7 +12,7 @@
<?php $viewDatas['entity'] = $entity; ?>
<tr>
<?php foreach ($viewDatas['control']['actionFields'] as $field): ?>
<td><?= $viewDatas['helper']->getFieldView($field, $entity->$field, $viewDatas) ?></td>
<td><?= $viewDatas['service']->getHelper()->getFieldView($field, $entity->$field, $viewDatas) ?></td>
<?php endforeach ?>
</tr>
<?php $cnt++ ?>

View File

@ -1,6 +1,6 @@
<?= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
<?= $this->section('content') ?>
<?php if ($error = session('error')): echo $viewDatas['helper']->alert($error) ?><?php endif ?>
<?php if ($error = session('error')): echo $viewDatas['service']->getHelper()->alert($error) ?><?php endif ?>
<div class="layout_top"><?= $this->include(LAYOUTS[$viewDatas['layout']]['path'] . '/top'); ?></div>
<!-- Layout Middle Start -->
<table class="layout_middle">
@ -22,7 +22,7 @@
<nav class="condition nav">
조건:
<?php foreach ($viewDatas['control']['actionFilters'] as $field): ?>
<?= $viewDatas['helper']->getListFilter($field, $viewDatas['control']['index_filters'][$field] ?? old($field), $viewDatas) ?>&nbsp;
<?= $viewDatas['service']->getHelper()->getListFilter($field, $viewDatas['control']['index_filters'][$field] ?? old($field), $viewDatas) ?>&nbsp;
<?php endforeach ?>
</nav>
<?= $this->include("templates/{$viewDatas['layout']}/index_content_top"); ?>
@ -35,7 +35,7 @@
<tr>
<th class="index_head_short_column">번호</th>
<?php foreach ($viewDatas['control']['actionFields'] as $field): ?>
<th data-rtc-resizable="<?= $field ?>"><?= $viewDatas['helper']->getListLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<th data-rtc-resizable="<?= $field ?>"><?= $viewDatas['service']->getHelper()->getListLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<?php endforeach ?>
<th class="index_head_short_column">작업</th>
</thead>
@ -45,14 +45,14 @@
<?php $viewDatas['entity'] = $entity; ?>
<tr <?= $viewDatas['entity']->getStatus() === $viewDatas['entity']::DEFAULT_STATUS ? "" : 'class="table-danger"' ?>>
<?php $viewDatas['cnt'] = $viewDatas['total_count'] - (($viewDatas['page'] - 1) * $viewDatas['per_page'] + $cnt); ?>
<td nowrap><?= $viewDatas['helper']->getListButton('modify', '', $viewDatas) ?></td>
<td nowrap><?= $viewDatas['service']->getHelper()->getListButton('modify', '', $viewDatas) ?></td>
<?php foreach ($viewDatas['control']['actionFields'] as $field): ?>
<td><?= $viewDatas['helper']->getFieldView($field, $entity->$field, $viewDatas) ?></td>
<td><?= $viewDatas['service']->getHelper()->getFieldView($field, $entity->$field, $viewDatas) ?></td>
<?php endforeach ?>
<td nowrap>
<?= $viewDatas['helper']->getListButton('view', '', $viewDatas) ?>&nbsp;
<?= $viewDatas['helper']->getListButton('history', '', $viewDatas) ?>&nbsp;
<?= $viewDatas['helper']->getListButton('delete', '', $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getListButton('view', '', $viewDatas) ?>&nbsp;
<?= $viewDatas['service']->getHelper()->getListButton('history', '', $viewDatas) ?>&nbsp;
<?= $viewDatas['service']->getHelper()->getListButton('delete', '', $viewDatas) ?>
</td>
</tr>
<?php $cnt++ ?>

View File

@ -1,6 +1,6 @@
<?= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
<?= $this->section('content') ?>
<?php if ($error = session('error')): echo $viewDatas['helper']->alert($error) ?><?php endif ?>
<?php if ($error = session('error')): echo $viewDatas['service']->getHelper()->alert($error) ?><?php endif ?>
<div id="container" class="content">
<div class="form_top"><?= $this->include("templates/{$viewDatas['layout']}/form_content_top"); ?></div>
<?= form_open(current_url(), ['id' => 'action_form', ...$viewDatas['forms']['attributes']], $viewDatas['forms']['hiddens']) ?>
@ -8,9 +8,9 @@
<table class="table table-bordered">
<?php foreach ($viewDatas['control']['actionFields'] as $field): ?>
<tr>
<th nowrap class="text-end"><?= $viewDatas['helper']->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<th nowrap class="text-end"><?= $viewDatas['service']->getHelper()->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<td nowrap class="text-start">
<?= $viewDatas['helper']->getFieldForm($field, old($field) ?? $viewDatas['entity']->$field ?? null, $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getFieldForm($field, old($field) ?? $viewDatas['entity']->$field ?? null, $viewDatas) ?>
<div><?= validation_show_error($field); ?></div>
</td>
</tr>

View File

@ -1,6 +1,6 @@
<?= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
<?= $this->section('content') ?>
<?php if ($error = session('error')): echo $viewDatas['helper']->alert($error) ?><?php endif ?>
<?php if ($error = session('error')): echo $viewDatas['service']->getHelper()->alert($error) ?><?php endif ?>
<div id="container" class="content">
<div class="form_top"><?= $this->include("templates/{$viewDatas['layout']}/form_content_top"); ?></div>
<?= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
@ -8,9 +8,9 @@
<table class="table table-bordered">
<?php foreach ($viewDatas['control']['actionFields'] as $field): ?>
<tr>
<th nowrap class="text-end"><?= $viewDatas['helper']->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<th nowrap class="text-end"><?= $viewDatas['service']->getHelper()->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<td nowrap class="text-start">
<?= $viewDatas['helper']->getFieldForm($field, old($field) ?? ($viewDatas['control']['form_datas'][$field] ?? null), $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getFieldForm($field, old($field) ?? ($viewDatas['control']['form_datas'][$field] ?? null), $viewDatas) ?>
<span><?= validation_show_error($field); ?></span>
</td>
</tr>

View File

@ -1,6 +1,6 @@
<?= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
<?= $this->section('content') ?>
<?php if ($error = session('error')): echo $viewDatas['helper']->alert($error) ?><?php endif ?>
<?php if ($error = session('error')): echo $viewDatas['service']->getHelper()->alert($error) ?><?php endif ?>
<!-- Layout Right Start -->
<div id="container" class="layout_content">
<link href="/css/<?= $viewDatas['layout'] ?>/index.css" media="screen" rel="stylesheet" type="text/css" />
@ -11,7 +11,7 @@
<nav class="condition nav">
조건:
<?php foreach ($viewDatas['control']['actionFilters'] as $field): ?>
<?= $viewDatas['helper']->getListFilter($field, $viewDatas['control']['index_filters'][$field] ?? old($field), $viewDatas) ?>&nbsp;
<?= $viewDatas['service']->getHelper()->getListFilter($field, $viewDatas['control']['index_filters'][$field] ?? old($field), $viewDatas) ?>&nbsp;
<?php endforeach ?>
</nav>
</div>
@ -23,7 +23,7 @@
<tr>
<th class="index_head_short_column">번호</th>
<?php foreach ($viewDatas['control']['actionFields'] as $field): ?>
<th data-rtc-resizable="<?= $field ?>"><?= $viewDatas['helper']->getListLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<th data-rtc-resizable="<?= $field ?>"><?= $viewDatas['service']->getHelper()->getListLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<?php endforeach ?>
<th class="index_head_short_column">작업</th>
</tr>
@ -34,13 +34,13 @@
<?php $viewDatas['entity'] = $entity; ?>
<tr <?= $viewDatas['entity']->getStatus() === $viewDatas['entity']::DEFAULT_STATUS ? "" : 'class="table-danger"' ?>>
<?php $viewDatas['cnt'] = $viewDatas['total_count'] - (($viewDatas['page'] - 1) * $viewDatas['per_page'] + $cnt); ?>
<td nowrap><?= $viewDatas['helper']->getListButton('modify', '', $viewDatas) ?></td>
<td nowrap><?= $viewDatas['service']->getHelper()->getListButton('modify', '', $viewDatas) ?></td>
<?php foreach ($viewDatas['control']['actionFields'] as $field): ?>
<td><?= $viewDatas['helper']->getFieldView($field, $entity->$field, $viewDatas) ?></td>
<td><?= $viewDatas['service']->getHelper()->getFieldView($field, $entity->$field, $viewDatas) ?></td>
<?php endforeach ?>
<td nowrap>
<?= $viewDatas['helper']->getListButton('view', '', $viewDatas) ?>&nbsp;
<?= $viewDatas['helper']->getListButton('delete', '', $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getListButton('view', '', $viewDatas) ?>&nbsp;
<?= $viewDatas['service']->getHelper()->getListButton('delete', '', $viewDatas) ?>
</td>
</tr>
<?php $cnt++ ?>

View File

@ -1,6 +1,6 @@
<?= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
<?= $this->section('content') ?>
<?php if ($error = session('error')): echo $viewDatas['helper']->alert($error) ?><?php endif ?>
<?php if ($error = session('error')): echo $viewDatas['service']->getHelper()->alert($error) ?><?php endif ?>
<div id="container" class="content">
<div class="form_top"><?= $this->include("templates/{$viewDatas['layout']}/form_content_top"); ?></div>
<?= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
@ -8,9 +8,9 @@
<table class="table table-bordered">
<?php foreach ($viewDatas['control']['actionFields'] as $field): ?>
<tr>
<th nowrap class="text-end"><?= $viewDatas['helper']->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<th nowrap class="text-end"><?= $viewDatas['service']->getHelper()->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<td nowrap class="text-start">
<?= $viewDatas['helper']->getFieldForm($field, old($field) ?? ($viewDatas['entity']->$field ?? null), $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getFieldForm($field, old($field) ?? ($viewDatas['entity']->$field ?? null), $viewDatas) ?>
<span><?= validation_show_error($field); ?></span>
</td>
</tr>

View File

@ -1,14 +1,14 @@
<?= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
<?= $this->section('content') ?>
<?php if ($error = session('error')): echo $viewDatas['helper']->alert($error) ?><?php endif ?>
<?php if ($error = session('error')): echo $viewDatas['service']->getHelper()->alert($error) ?><?php endif ?>
<div id="container" class="content">
<link href="/css/<?= $viewDatas['layout'] ?>/form.css" media="screen" rel="stylesheet" type="text/css" />
<div class="action_form">
<table class="table table-bordered">
<?php foreach ($viewDatas['control']['actionFields'] as $field): ?>
<tr>
<th nowrap class="text-end"><?= $viewDatas['helper']->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<td nowrap class="text-start"><?= $viewDatas['helper']->getFieldView($field, $viewDatas['entity']->$field, $viewDatas) ?></td>
<th nowrap class="text-end"><?= $viewDatas['service']->getHelper()->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<td nowrap class="text-start"><?= $viewDatas['service']->getHelper()->getFieldView($field, $viewDatas['entity']->$field, $viewDatas) ?></td>
</tr>
<?php endforeach; ?>
</table>

View File

@ -1,70 +0,0 @@
<?= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
<?= $this->section('content') ?>
<?php if ($error = session('error')): echo $viewDatas['helper']->alert($error) ?><?php endif ?>
<div class="layout_top"><?= $this->include(LAYOUTS[$viewDatas['layout']]['path'] . '/top'); ?></div>
<!-- Layout Middle Start -->
<table class="layout_middle">
<tr>
<td class="layout_left">
<!-- Layout Left Start -->
<?= $this->include(LAYOUTS[$viewDatas['layout']]['path'] . '/left_menu'); ?>
<!-- Layout Left End -->
</td>
<td class="layout_right">
<!-- Layout Right Start -->
<div class="layout_header"><?= $this->include("templates/{$viewDatas['layout']}/index_header"); ?></div>
<div id="container" class="layout_content">
<link href="/css/<?= $viewDatas['layout'] ?>/index.css" media="screen" rel="stylesheet" type="text/css" />
<div class="index_body">
<?= $this->include("templates/{$viewDatas['layout']}/index_content_top"); ?>
<?= form_open(current_url(), ['id' => 'batchjob_form', 'method' => "post"]) ?>
<table class="index_table data table table-bordered table-hover table-striped" data-rtc-resizable-table="reisze_table">
<thead>
<tr>
<th class="index_head_short_column">번호</th>
<?php foreach ($viewDatas['control']['actionFields'] as $field): ?>
<th data-rtc-resizable="<?= $field ?>"><?= $viewDatas['helper']->getListLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<?php endforeach ?>
<th class="index_head_short_column">작업</th>
</tr>
</thead>
<tbody>
<?php $cnt = 0 ?>
<?php foreach ($viewDatas['entities'] as $entity): ?>
<?php $viewDatas['entity'] = $entity; ?>
<tr <?= $viewDatas['entity']->getStatus() === $viewDatas['entity']::DEFAULT_STATUS ? "" : 'class="table-danger"' ?>>
<?php $viewDatas['cnt'] = $viewDatas['total_count'] - (($viewDatas['page'] - 1) * $viewDatas['per_page'] + $cnt); ?>
<td nowrap><?= $viewDatas['helper']->getListButton('modify', '', $viewDatas) ?></td>
<?php foreach ($viewDatas['control']['actionFields'] as $field): ?>
<td><?= $viewDatas['helper']->getFieldView($field, $entity->$field, $viewDatas) ?></td>
<?php endforeach ?>
<td nowrap>
<?= $viewDatas['helper']->getListButton('view', '', $viewDatas) ?>&nbsp;
<?= $viewDatas['helper']->getListButton('history', '', $viewDatas) ?>&nbsp;
<?= $viewDatas['helper']->getListButton('delete', '', $viewDatas) ?>
</td>
</tr>
<tr>
<td colspan="<?= count($viewDatas['control']['actionFields']) + 2 ?>">
<table class="table table-bordered table-hover table-striped">
<tr><?php foreach (SERVICE_ITEM_TYPES as $item_type => $label): ?><th data-rtc-resizable="<?= $item_type ?>" nowrap><?= $viewDatas['helper']->getFieldLabel($item_type, $label, $viewDatas) ?></th><?php endforeach ?></tr>
<tr><?php foreach (SERVICE_ITEM_TYPES as $item_type => $label): ?><td class="text-nowrap"><?= $viewDatas['helper']->getFieldView($item_type, $entity->$item_type, $viewDatas) ?></td><?php endforeach ?></tr>
</table>
</td>
</tr>
<?php $cnt++ ?>
<?php endforeach ?>
</tbody>
</table>
<?= $this->include("templates/{$viewDatas['layout']}/index_content_bottom"); ?>
<?= form_close() ?>
</div>
</div>
<div class="layout_footer"><?= $this->include("templates/{$viewDatas['layout']}/index_footer"); ?></div>
<!-- Layout Right End -->
</td>
</tr>
</table>
<!-- Layout Middle End -->
<div class="layout_bottom"><?= $this->include(LAYOUTS[$viewDatas['layout']]['path'] . '/bottom'); ?></div>
<?= $this->endSection() ?>

View File

@ -1,6 +1,6 @@
<?= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
<?= $this->section('content') ?>
<?php if ($error = session('error')): echo $viewDatas['helper']->alert($error) ?><?php endif ?>
<?php if ($error = session('error')): echo $viewDatas['service']->getHelper()->alert($error) ?><?php endif ?>
<div id="container" class="content">
<div class="form_top"><?= $this->include("templates/{$viewDatas['layout']}/form_content_top"); ?></div>
<?= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
@ -15,9 +15,9 @@
<table class="table table-bordered">
<tr>
<?php foreach (["code", "type", "title", "price", "manufactur_at", "format_at", "status",] as $field): ?>
<th nowrap class="text-end"><?= $viewDatas['helper']->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<th nowrap class="text-end"><?= $viewDatas['service']->getHelper()->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<td nowrap class="text-start">
<?= $viewDatas['helper']->getFieldForm($field, old($field, $viewDatas['control']['form_datas'][$field] ?? null), $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getFieldForm($field, old($field, $viewDatas['control']['form_datas'][$field] ?? null), $viewDatas) ?>
<span><?= validation_show_error($field); ?></span>
</td>
</tr>
@ -28,12 +28,12 @@
<table class="table table-bordered">
<?php foreach (SERVERPART['SERVER_PARTTYPES'] as $field): ?>
<tr>
<th nowrap class="text-end"><?= $viewDatas['helper']->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<th nowrap class="text-end"><?= $viewDatas['service']->getHelper()->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<td nowrap class="text-start">
<?= $viewDatas['helper']->getFieldForm($field, old($field, $viewDatas['control']['form_datas'][$field] ?? null), $viewDatas) ?>
<?= $viewDatas['helper']->getFieldForm("{$field}_cnt", old("{$field}_cnt", $viewDatas['control']['form_datas']["{$field}_cnt"] ?? 1), $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getFieldForm($field, old($field, $viewDatas['control']['form_datas'][$field] ?? null), $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getFieldForm("{$field}_cnt", old("{$field}_cnt", $viewDatas['control']['form_datas']["{$field}_cnt"] ?? 1), $viewDatas) ?>
<?php if ($field === 'DISK'): ?>
<?= $viewDatas['helper']->getFieldForm("{$field}_extra", old("{$field}_extra", $viewDatas['control']['form_datas']["{$field}_extra"] ?? null), $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getFieldForm("{$field}_extra", old("{$field}_extra", $viewDatas['control']['form_datas']["{$field}_extra"] ?? null), $viewDatas) ?>
<?php endif ?>
<span><?= validation_show_error($field); ?></span>
</td>

View File

@ -1,6 +1,6 @@
<?= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
<?= $this->section('content') ?>
<?php if ($error = session('error')): echo $viewDatas['helper']->alert($error) ?><?php endif ?>
<?php if ($error = session('error')): echo $viewDatas['service']->getHelper()->alert($error) ?><?php endif ?>
<div class="layout_top"><?= $this->include(LAYOUTS[$viewDatas['layout']]['path'] . '/top'); ?></div>
<!-- Layout Middle Start -->
<table class="layout_middle">
@ -22,7 +22,7 @@
<nav class="condition nav">
조건:
<?php foreach ($viewDatas['control']['actionFilters'] as $field): ?>
<?= $viewDatas['helper']->getListFilter($field, $viewDatas['control']['index_filters'][$field] ?? old($field), $viewDatas) ?>&nbsp;
<?= $viewDatas['service']->getHelper()->getListFilter($field, $viewDatas['control']['index_filters'][$field] ?? old($field), $viewDatas) ?>&nbsp;
<?php endforeach ?>
</nav>
<?= $this->include("templates/{$viewDatas['layout']}/index_content_top"); ?>
@ -35,22 +35,22 @@
<tr>
<th class="index_head_short_column">번호</th>
<th class="index_head_short_column">
<?= $viewDatas['helper']->getListLabel('clientinfo_uid', lang("{$viewDatas['class_path']}.label.clientinfo_uid"), $viewDatas) ?>/
<?= $viewDatas['helper']->getListLabel('serviceinfo_uid', lang("{$viewDatas['class_path']}.label.serviceinfo_uid"), $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getListLabel('clientinfo_uid', lang("{$viewDatas['class_path']}.label.clientinfo_uid"), $viewDatas) ?>/
<?= $viewDatas['service']->getHelper()->getListLabel('serviceinfo_uid', lang("{$viewDatas['class_path']}.label.serviceinfo_uid"), $viewDatas) ?>
</th>
<th class="index_head_short_column">
<?= $viewDatas['helper']->getListLabel('type', lang("{$viewDatas['class_path']}.label.type"), $viewDatas) ?>/
<?= $viewDatas['helper']->getListLabel('title', lang("{$viewDatas['class_path']}.label.title"), $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getListLabel('type', lang("{$viewDatas['class_path']}.label.type"), $viewDatas) ?>/
<?= $viewDatas['service']->getHelper()->getListLabel('title', lang("{$viewDatas['class_path']}.label.title"), $viewDatas) ?>
</th>
<th class="index_head_short_column">
<?= $viewDatas['helper']->getListLabel('price', lang("{$viewDatas['class_path']}.label.price"), $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getListLabel('price', lang("{$viewDatas['class_path']}.label.price"), $viewDatas) ?>
</th>
<th class="index_head_short_column">
<?= $viewDatas['helper']->getListLabel('manufactur_at', lang("{$viewDatas['class_path']}.label.manufactur_at"), $viewDatas) ?>/
<?= $viewDatas['helper']->getListLabel('format_at', lang("{$viewDatas['class_path']}.label.format_at"), $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getListLabel('manufactur_at', lang("{$viewDatas['class_path']}.label.manufactur_at"), $viewDatas) ?>/
<?= $viewDatas['service']->getHelper()->getListLabel('format_at', lang("{$viewDatas['class_path']}.label.format_at"), $viewDatas) ?>
</th>
<th class="index_head_short_column">
<?= $viewDatas['helper']->getListLabel('status', lang("{$viewDatas['class_path']}.label.status"), $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getListLabel('status', lang("{$viewDatas['class_path']}.label.status"), $viewDatas) ?>
</th>
<th class="index_head_short_column">부품정보</th>
<th class="index_head_short_column">작업</th>
@ -61,37 +61,37 @@
<?php $viewDatas['entity'] = $entity; ?>
<tr <?= $entity->getStatus() === $entity::DEFAULT_STATUS ? "" : 'class="table-danger"' ?>>
<?php $viewDatas['cnt'] = $viewDatas['total_count'] - (($viewDatas['page'] - 1) * $viewDatas['per_page'] + $cnt); ?>
<td nowrap><?= $viewDatas['helper']->getListButton('modify', '', $viewDatas) ?></td>
<td nowrap><?= $viewDatas['service']->getHelper()->getListButton('modify', '', $viewDatas) ?></td>
<td nowrap>
<div><?= $viewDatas['helper']->getFieldView('clientinfo_uid', $entity->getClientInfoUID(), $viewDatas) ?></div>
<div><?= $viewDatas['helper']->getFieldView('serviceinfo_uid', $entity->getServiceInfoUID(), $viewDatas) ?></div>
<div><?= $viewDatas['service']->getHelper()->getFieldView('clientinfo_uid', $entity->getClientInfoUID(), $viewDatas) ?></div>
<div><?= $viewDatas['service']->getHelper()->getFieldView('serviceinfo_uid', $entity->getServiceInfoUID(), $viewDatas) ?></div>
</td>
<td nowrap>
<div><?= $viewDatas['helper']->getFieldView('type', $entity->type, $viewDatas) ?></div>
<div><?= $viewDatas['helper']->getFieldView('title', $entity->getTitle(), $viewDatas) ?></div>
<div><?= $viewDatas['service']->getHelper()->getFieldView('type', $entity->type, $viewDatas) ?></div>
<div><?= $viewDatas['service']->getHelper()->getFieldView('title', $entity->getTitle(), $viewDatas) ?></div>
</td>
<td nowrap>
<div><?= $viewDatas['helper']->getFieldView('price', $entity->price, $viewDatas) ?></div>
<div><?= $viewDatas['service']->getHelper()->getFieldView('price', $entity->price, $viewDatas) ?></div>
</td>
<td nowrap>
<div><?= $viewDatas['helper']->getFieldView('manufactur_at', $entity->manufactur_at, $viewDatas) ?></div>
<div><?= $viewDatas['helper']->getFieldView('format_at', $entity->format_at, $viewDatas) ?></div>
<div><?= $viewDatas['service']->getHelper()->getFieldView('manufactur_at', $entity->manufactur_at, $viewDatas) ?></div>
<div><?= $viewDatas['service']->getHelper()->getFieldView('format_at', $entity->format_at, $viewDatas) ?></div>
</td>
<td><?= $viewDatas['helper']->getFieldView('status', $entity->status, $viewDatas) ?></td>
<td><?= $viewDatas['service']->getHelper()->getFieldView('status', $entity->status, $viewDatas) ?></td>
<td nowrap>
<table class="table table-bordered table-striped m-0 p-0">
<?php foreach (SERVERPART['SERVER_PARTTYPES'] as $partType): ?>
<tr class="m-0 p-0">
<th class="m-0 p-0" width="15%"><?= $viewDatas['helper']->getListButton($partType, $partType, $viewDatas) ?></th>
<td class="m-0 p-0"><?= $viewDatas['helper']->getFieldView($partType, "", $viewDatas) ?></td>
<th class="m-0 p-0" width="15%"><?= $viewDatas['service']->getHelper()->getListButton($partType, $partType, $viewDatas) ?></th>
<td class="m-0 p-0"><?= $viewDatas['service']->getHelper()->getFieldView($partType, "", $viewDatas) ?></td>
</tr>
<?php endforeach ?>
</table>
</td>
<td nowrap>
<?= $viewDatas['helper']->getListButton('view', '', $viewDatas) ?>&nbsp;
<?= $viewDatas['helper']->getListButton('history', '', $viewDatas) ?>&nbsp;
<?= $viewDatas['helper']->getListButton('delete', '', $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getListButton('view', '', $viewDatas) ?>&nbsp;
<?= $viewDatas['service']->getHelper()->getListButton('history', '', $viewDatas) ?>&nbsp;
<?= $viewDatas['service']->getHelper()->getListButton('delete', '', $viewDatas) ?>
</td>
</tr>
<?php $cnt++ ?>

View File

@ -1,6 +1,6 @@
<?= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
<?= $this->section('content') ?>
<?php if ($error = session('error')): echo $viewDatas['helper']->alert($error) ?><?php endif ?>
<?php if ($error = session('error')): echo $viewDatas['service']->getHelper()->alert($error) ?><?php endif ?>
<div id="container" class="content">
<div class="form_top"><?= $this->include("templates/{$viewDatas['layout']}/form_content_top"); ?></div>
<?= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
@ -8,9 +8,9 @@
<table class="table table-bordered">
<?php foreach (["code", "type", "title", "price", "manufactur_at", "format_at", "status",] as $field): ?>
<tr>
<th nowrap class="text-end"><?= $viewDatas['helper']->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<th nowrap class="text-end"><?= $viewDatas['service']->getHelper()->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<td nowrap class="text-start">
<?= $viewDatas['helper']->getFieldForm($field, old($field) ?? ($viewDatas['entity']->$field ?? null), $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getFieldForm($field, old($field) ?? ($viewDatas['entity']->$field ?? null), $viewDatas) ?>
<span><?= validation_show_error($field); ?></span>
</td>
</tr>

View File

@ -1,6 +1,6 @@
<?= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
<?= $this->section('content') ?>
<?php if ($error = session('error')): echo $viewDatas['helper']->alert($error) ?><?php endif ?>
<?php if ($error = session('error')): echo $viewDatas['service']->getHelper()->alert($error) ?><?php endif ?>
<div id="container" class="content">
<div class="form_top"><?= $this->include("templates/{$viewDatas['layout']}/form_content_top"); ?></div>
<?= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
@ -15,9 +15,9 @@
<table class="table table-bordered">
<?php foreach (["code", "type", "title", "price", "manufactur_at", "format_at", "status",] as $field): ?>
<tr>
<th nowrap class="text-end"><?= $viewDatas['helper']->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<th nowrap class="text-end"><?= $viewDatas['service']->getHelper()->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<td nowrap class="text-start">
<?= $viewDatas['helper']->getFieldView($field, $viewDatas['entity']->$field ?? null, $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getFieldView($field, $viewDatas['entity']->$field ?? null, $viewDatas) ?>
<span><?= validation_show_error($field); ?></span>
</td>
</tr>
@ -28,8 +28,8 @@
<table class="table table-bordered table-striped m-0 p-0">
<?php foreach (SERVERPART['SERVER_PARTTYPES'] as $partType): ?>
<tr class="m-0 p-0">
<th class="text-end m-0 p-0"><?= $viewDatas['helper']->getListButton($partType, $partType, $viewDatas) ?></th>
<td class="text-start m-0 p-0"><?= $viewDatas['helper']->getFieldView($partType, "", $viewDatas) ?></td>
<th class="text-end m-0 p-0"><?= $viewDatas['service']->getHelper()->getListButton($partType, $partType, $viewDatas) ?></th>
<td class="text-start m-0 p-0"><?= $viewDatas['service']->getHelper()->getFieldView($partType, "", $viewDatas) ?></td>
</tr>
<?php endforeach ?>
</table>

View File

@ -1,180 +0,0 @@
<?= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
<?= $this->section('content') ?>
<?php if ($error = session('error')): echo $viewDatas['helper']->alert($error) ?><?php endif ?>
<div class="layout_top"><?= $this->include(LAYOUTS[$viewDatas['layout']]['path'] . '/top'); ?></div>
<!-- Layout Middle Start -->
<table class="layout_middle">
<tr>
<td class="layout_left">
<!-- Layout Left Start -->
<?= $this->include(LAYOUTS[$viewDatas['layout']]['path'] . '/left_menu'); ?>
<!-- Layout Left End -->
</td>
<td class="layout_right">
<!-- Layout Right Start -->
<div class="layout_header"><?= $this->include("templates/{$viewDatas['layout']}/index_header"); ?></div>
<div id="container" class="layout_content">
<link href="/css/<?= $viewDatas['layout'] ?>/index.css" media="screen" rel="stylesheet" type="text/css" />
<link href="/css/admin/service/detail.css" media="screen" rel="stylesheet" type="text/css" />
<div class="index_body p-5">
<!-- index_body -->
<div class="row align-items-start rounded border border-gray pt-2 pe-2 pb-0">
<div class="col-1 text-center p-3">
<div>gobetsoft</div>
<div><a href="#">[청구서발행]</a></div>
</div>
<div class="col-8">
<!-- Dashboard -->
<div class="row">
<div class="col summary-box">
<div class="bg-label">도코</div>
<div class="fw-bold">0</div>
</div>
<div class="col summary-box">
<div class="bg-label">서버</div>
<div class="fw-bold">1</div>
</div>
<div class="col summary-box">
<div class="bg-label">VPN</div>
<div class="fw-bold">0</div>
</div>
<div class="col summary-box">
<div class="bg-label">일반</div>
<div class="fw-bold">1</div>
</div>
<div class="col summary-box">
<div class="bg-label">방어</div>
<div class="fw-bold">0</div>
</div>
<div class="col summary-box">
<div class="bg-label">전용</div>
<div class="fw-bold">0</div>
</div>
<div class="col summary-box">
<div class="bg-label">이벤트</div>
<div class="fw-bold">0</div>
</div>
<div class="col summary-box">
<div class="bg-label">테스트</div>
<div class="fw-bold">0</div>
</div>
<div class="col summary-box">
<div class="bg-label">대체</div>
<div class="fw-bold">0</div>
</div>
<div class="col summary-box">
<div class="bg-label">장기할인</div>
<div class="fw-bold">30%</div>
</div>
<div class="col summary-box">
<div class="bg-label">쿠폰</div>
<div class="fw-bold">0</div>
</div>
</div>
</div>
<div class="col-3">
<div class="row text-center">
<div class="col summary-box">
<div class="bg-label amount-highlight">예치금</div>
<div class="amount-highlight">30,000</div>
</div>
<div class="col summary-box">
<div class="bg-label amount-positive">전체요금</div>
<div class="amount-positive">567,000</div>
</div>
<div class="col summary-box">
<div class="bg-label amount-negative">전체미납금</div>
<div class="amount-negative">567,000</div>
</div>
</div>
</div>
</div>
<div class="row align-items-center rounded border border-gray p-2 mt-3">
<div class="col-1">
<div class="text-center fw-bold">비고</div>
</div>
<div class="col-10">
<textarea class="form-control note-box">
24 11 7 도메인 비용 안내 금지 X / 비용 변동 있을 경우 안내
23 6 14 전서버 해지하였으나, 23 11/20 재입고
기존 업체명 : KY->gobetsoft 변경
평구소프트 소개
25/08/16 도메인 1 구매 4만원 결제처리 / 예치금 3만원 -신민수-
</textarea>
</div>
<div class="col-1">
<button class="btn btn-primary">저장</button>
</div>
</div>
<div class="row align-items-end rounded border border-gray p-2 mt-3">
<div class="col-1 text-center">
<div><a href="#">[상세정보]</a></div>
<div>1836B-M404</div>
<div>S10243329344</div>
</div>
<div class="col-11">
<div class="row">
<div class="col summary-box">
<div class="bg-label">사이트</div>
<div class="fw-bold">Prime</div>
</div>
<div class="col summary-box">
<div class="bg-label">위치</div>
<div class="fw-bold">도쿄</div>
</div>
<div class="col summary-box">
<div class="bg-label">형식</div>
<div class="fw-bold">대체</div>
</div>
<div class="col summary-box">
<div class="bg-label">CPU/메모리/저장장치</div>
<div class="fw-bold">XEON*2/2G*2/SSD 128G*2</div>
</div>
<div class="col summary-box">
<div class="bg-label">SOFTWARE</div>
<div class="fw-bold">0</div>
</div>
<div class="col summary-box">
<div class="bg-label">OS</div>
<div class="fw-bold">Windows</div>
</div>
<div class="row">
<div class="col summary-box">
<div class="bg-label">IP주소</div>
<div class="fw-bold">10.20.20.20</div>
</div>
<div class="col summary-box">
<div class="bg-label">CS</div>
<div class="fw-bold">20.1.2.3</div>
</div>
<div class="col summary-box">
<div class="bg-label">메모</div>
<div class="fw-bold">asdfsdfsdfsdf</div>
</div>
<div class="col summary-box">
<div class="bg-label">부가서비스</div>
<div class="fw-bold">부가</div>
</div>
<div class="col summary-box">
<div class="bg-label">결제처리</div>
<div class="fw-bold">0</div>
</div>
<div class="col summary-box">
<div class="bg-label">결제처리</div>
<div class="fw-bold">0</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- index_body -->
</div>
<div class="layout_footer"><?= $this->include("templates/{$viewDatas['layout']}/index_footer"); ?></div>
<!-- Layout Right End -->
</td>
</tr>
</table>
<!-- Layout Middle End -->
<div class="layout_bottom"><?= $this->include(LAYOUTS[$viewDatas['layout']]['path'] . '/bottom'); ?></div>
<?= $this->endSection() ?>

View File

@ -1,6 +1,6 @@
<?= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
<?= $this->section('content') ?>
<?php if ($error = session('error')): echo $viewDatas['helper']->alert($error) ?><?php endif ?>
<?php if ($error = session('error')): echo $viewDatas['service']->getHelper()->alert($error) ?><?php endif ?>
<div class="layout_top"><?= $this->include(LAYOUTS[$viewDatas['layout']]['path'] . '/top'); ?></div>
<!-- Layout Middle Start -->
<table class="layout_middle">
@ -22,7 +22,7 @@
<nav class="condition nav">
조건:
<?php foreach ($viewDatas['control']['actionFilters'] as $field): ?>
<?= $viewDatas['helper']->getListFilter($field, $viewDatas['control']['index_filters'][$field] ?? old($field), $viewDatas) ?>&nbsp;
<?= $viewDatas['service']->getHelper()->getListFilter($field, $viewDatas['control']['index_filters'][$field] ?? old($field), $viewDatas) ?>&nbsp;
<?php endforeach ?>
</nav>
<?= $this->include("templates/{$viewDatas['layout']}/index_content_top"); ?>
@ -35,27 +35,27 @@
<tr>
<th class="index_head_short_column">번호</th>
<th class="index_head_short_column">
<?= $viewDatas['helper']->getListLabel('site', lang("{$viewDatas['class_path']}.label.site"), $viewDatas) ?>/
<?= $viewDatas['helper']->getListLabel('location', lang("{$viewDatas['class_path']}.label.location"), $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getListLabel('site', lang("{$viewDatas['class_path']}.label.site"), $viewDatas) ?>/
<?= $viewDatas['service']->getHelper()->getListLabel('location', lang("{$viewDatas['class_path']}.label.location"), $viewDatas) ?>
</th>
<th class="index_head_short_column">
<?= $viewDatas['helper']->getListLabel('clientinfo_uid', lang("{$viewDatas['class_path']}.label.clientinfo_uid"), $viewDatas) ?>/
<?= $viewDatas['helper']->getListLabel('type', lang("{$viewDatas['class_path']}.label.type"), $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getListLabel('clientinfo_uid', lang("{$viewDatas['class_path']}.label.clientinfo_uid"), $viewDatas) ?>/
<?= $viewDatas['service']->getHelper()->getListLabel('type', lang("{$viewDatas['class_path']}.label.type"), $viewDatas) ?>
</th>
<th class="index_head_short_column">
<?= $viewDatas['helper']->getListLabel('serverinfo_uid', lang("{$viewDatas['class_path']}.label.serverinfo_uid"), $viewDatas) ?>/
<?= $viewDatas['helper']->getListLabel('start_at', lang("{$viewDatas['class_path']}.label.start_at"), $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getListLabel('serverinfo_uid', lang("{$viewDatas['class_path']}.label.serverinfo_uid"), $viewDatas) ?>/
<?= $viewDatas['service']->getHelper()->getListLabel('start_at', lang("{$viewDatas['class_path']}.label.start_at"), $viewDatas) ?>
</th>
<th class="index_head_short_column">
<?= $viewDatas['helper']->getListLabel('amount', lang("{$viewDatas['class_path']}.label.amount"), $viewDatas) ?>/
<?= $viewDatas['helper']->getListLabel('billing_at', lang("{$viewDatas['class_path']}.label.billing_at"), $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getListLabel('amount', lang("{$viewDatas['class_path']}.label.amount"), $viewDatas) ?>/
<?= $viewDatas['service']->getHelper()->getListLabel('billing_at', lang("{$viewDatas['class_path']}.label.billing_at"), $viewDatas) ?>
</th>
<th class="index_head_short_column">
<?= $viewDatas['helper']->getListLabel('status', lang("{$viewDatas['class_path']}.label.status"), $viewDatas) ?>/
<?= $viewDatas['helper']->getListLabel('updated_at', lang("{$viewDatas['class_path']}.label.updated_at"), $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getListLabel('status', lang("{$viewDatas['class_path']}.label.status"), $viewDatas) ?>/
<?= $viewDatas['service']->getHelper()->getListLabel('updated_at', lang("{$viewDatas['class_path']}.label.updated_at"), $viewDatas) ?>
</th>
<th class="index_head_short_column">부품정보</th>
<th class="index_head_short_column"><?= $viewDatas['helper']->getListLabel('user_uid', lang("{$viewDatas['class_path']}.label.user_uid"), $viewDatas) ?></th>
<th class="index_head_short_column"><?= $viewDatas['service']->getHelper()->getListLabel('user_uid', lang("{$viewDatas['class_path']}.label.user_uid"), $viewDatas) ?></th>
<th class="index_head_short_column">작업</th>
</thead>
<tbody>
@ -64,42 +64,42 @@
<?php $viewDatas['entity'] = $entity; ?>
<tr <?= $entity->getStatus() === $entity::DEFAULT_STATUS ? "" : 'class="table-danger"' ?>>
<?php $viewDatas['cnt'] = $viewDatas['total_count'] - (($viewDatas['page'] - 1) * $viewDatas['per_page'] + $cnt); ?>
<td nowrap><?= $viewDatas['helper']->getListButton('modify', '', $viewDatas) ?></td>
<td nowrap><?= $viewDatas['service']->getHelper()->getListButton('modify', '', $viewDatas) ?></td>
<td nowrap>
<div><?= $viewDatas['helper']->getFieldView('site', $entity->site, $viewDatas) ?></div>
<div><?= $viewDatas['helper']->getFieldView('location', $entity->location, $viewDatas) ?></div>
<div><?= $viewDatas['service']->getHelper()->getFieldView('site', $entity->site, $viewDatas) ?></div>
<div><?= $viewDatas['service']->getHelper()->getFieldView('location', $entity->location, $viewDatas) ?></div>
</td>
<td nowrap>
<div><?= $viewDatas['helper']->getFieldView('clientinfo_uid', $entity->getClientInfoUID(), $viewDatas) ?></div>
<div><?= $viewDatas['helper']->getFieldView('type', $entity->type, $viewDatas) ?></div>
<div><?= $viewDatas['service']->getHelper()->getFieldView('clientinfo_uid', $entity->getClientInfoUID(), $viewDatas) ?></div>
<div><?= $viewDatas['service']->getHelper()->getFieldView('type', $entity->type, $viewDatas) ?></div>
</td>
<td nowrap>
<div><?= $viewDatas['helper']->getFieldView('serverinfo_uid', $entity->getServerEntity()->getTitle(), $viewDatas) ?></div>
<div><?= $viewDatas['helper']->getFieldView('start_at', $entity->start_at, $viewDatas) ?></div>
<div><?= $viewDatas['service']->getHelper()->getFieldView('serverinfo_uid', $entity->getServerEntity()->getTitle(), $viewDatas) ?></div>
<div><?= $viewDatas['service']->getHelper()->getFieldView('start_at', $entity->start_at, $viewDatas) ?></div>
</td>
<td nowrap>
<div><?= $viewDatas['helper']->getFieldView('amount', $entity->amount, $viewDatas) ?></div>
<div><?= $viewDatas['helper']->getFieldView('billing_at', $entity->billing_at, $viewDatas) ?></div>
<div><?= $viewDatas['service']->getHelper()->getFieldView('amount', $entity->amount, $viewDatas) ?></div>
<div><?= $viewDatas['service']->getHelper()->getFieldView('billing_at', $entity->billing_at, $viewDatas) ?></div>
</td>
<td nowrap>
<div><?= $viewDatas['helper']->getFieldView('status', $entity->status, $viewDatas) ?></div>
<div><?= $viewDatas['helper']->getFieldView('updated_at', $entity->updated_at, $viewDatas) ?></div>
<div><?= $viewDatas['service']->getHelper()->getFieldView('status', $entity->status, $viewDatas) ?></div>
<div><?= $viewDatas['service']->getHelper()->getFieldView('updated_at', $entity->updated_at, $viewDatas) ?></div>
</td>
<td nowrap>
<table class="table table-bordered table-striped m-0 p-0">
<?php foreach (SERVERPART['SERVICE_PARTTYPES'] as $partType): ?>
<tr class="m-0 p-0">
<th class="m-0 p-0" width="15%"><?= $viewDatas['helper']->getListButton($partType, $partType, $viewDatas) ?></th>
<td class="m-0 p-0"><?= $viewDatas['helper']->getFieldView($partType, "", $viewDatas) ?></td>
<th class="m-0 p-0" width="15%"><?= $viewDatas['service']->getHelper()->getListButton($partType, $partType, $viewDatas) ?></th>
<td class="m-0 p-0"><?= $viewDatas['service']->getHelper()->getFieldView($partType, "", $viewDatas) ?></td>
</tr>
<?php endforeach ?>
</table>
</td>
<td nowrap><?= $viewDatas['helper']->getFieldView('user_uid', $entity->user_uid, $viewDatas) ?></td>
<td nowrap><?= $viewDatas['service']->getHelper()->getFieldView('user_uid', $entity->user_uid, $viewDatas) ?></td>
<td nowrap>
<?= $viewDatas['helper']->getListButton('view', '', $viewDatas) ?>&nbsp;
<?= $viewDatas['helper']->getListButton('history', '', $viewDatas) ?>&nbsp;
<?= $viewDatas['helper']->getListButton('delete', '', $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getListButton('view', '', $viewDatas) ?>&nbsp;
<?= $viewDatas['service']->getHelper()->getListButton('history', '', $viewDatas) ?>&nbsp;
<?= $viewDatas['service']->getHelper()->getListButton('delete', '', $viewDatas) ?>
</td>
</tr>
<?php $cnt++ ?>

View File

@ -1,6 +1,6 @@
<?= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
<?= $this->section('content') ?>
<?php if ($error = session('error')): echo $viewDatas['helper']->alert($error) ?><?php endif ?>
<?php if ($error = session('error')): echo $viewDatas['service']->getHelper()->alert($error) ?><?php endif ?>
<div id="container" class="content">
<div class="form_top"><?= $this->include("templates/{$viewDatas['layout']}/form_content_top"); ?></div>
<?= form_open(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
@ -15,9 +15,9 @@
<table class="table table-bordered">
<?php foreach ($viewDatas['control']['actionFields'] as $field): ?>
<tr>
<th nowrap class="text-end"><?= $viewDatas['helper']->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<th nowrap class="text-end"><?= $viewDatas['service']->getHelper()->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<td nowrap class="text-start">
<?= $viewDatas['helper']->getFieldView($field, $viewDatas['entity']->$field ?? null, $viewDatas) ?>
<?= $viewDatas['service']->getHelper()->getFieldView($field, $viewDatas['entity']->$field ?? null, $viewDatas) ?>
<span><?= validation_show_error($field); ?></span>
</td>
</tr>
@ -28,8 +28,8 @@
<table class="table table-bordered table-striped m-0 p-0">
<?php foreach (SERVERPART['PARTTYPES'] as $partType): ?>
<tr class="m-0 p-0">
<th class="m-0 p-0"><?= $viewDatas['helper']->getListButton($partType, $partType, $viewDatas) ?></th>
<td class="m-0 p-0"><?= $viewDatas['helper']->getFieldView($partType, "", $viewDatas) ?></td>
<th class="m-0 p-0"><?= $viewDatas['service']->getHelper()->getListButton($partType, $partType, $viewDatas) ?></th>
<td class="m-0 p-0"><?= $viewDatas['service']->getHelper()->getFieldView($partType, "", $viewDatas) ?></td>
</tr>
<?php endforeach ?>
</table>

View File

@ -1,14 +1,14 @@
<?= $this->extend(LAYOUTS[$viewDatas['layout']]['path']) ?>
<?= $this->section('content') ?>
<?php if ($error = session('error')): echo $viewDatas['helper']->alert($error) ?><?php endif ?>
<?php if ($error = session('error')): echo $viewDatas['service']->getHelper()->alert($error) ?><?php endif ?>
<div id="container" class="content">
<link href="/css/<?= $viewDatas['layout'] ?>/form.css" media="screen" rel="stylesheet" type="text/css" />
<div class="action_form">
<table class="table table-bordered">
<?php foreach ($viewDatas['control']['actionFields'] as $field): ?>
<tr>
<th nowrap class="text-end"><?= $viewDatas['helper']->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<td nowrap class="text-start"><?= $viewDatas['helper']->getFieldView($field, $viewDatas['entity']->$field, $viewDatas) ?></td>
<th nowrap class="text-end"><?= $viewDatas['service']->getHelper()->getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?></th>
<td nowrap class="text-start"><?= $viewDatas['service']->getHelper()->getFieldView($field, $viewDatas['entity']->$field, $viewDatas) ?></td>
</tr>
<?php endforeach; ?>
</table>

View File

@ -23,13 +23,13 @@
<?php foreach ($viewDatas['newServiceEntities'] as $entity): ?>
<?php $viewDatas['entity'] = $entity ?>
<tr>
<td><?= $viewDatas['helper']->getListButton('new_service_view', '', $viewDatas, ['label' => $entity->getTitle()]) ?></td>
<td><?= $viewDatas['helper']->getFieldView('clientinfo_uid', $entity->getClientInfoUID(), $viewDatas) ?></td>
<td><?= $viewDatas['helper']->getFieldView('type', $entity->getType(), $viewDatas) ?></td>
<td><?= $viewDatas['helper']->getFieldView('switchinfo_uid', $entity->getSwitchCode(), $viewDatas) ?></td>
<td><?= $viewDatas['helper']->getFieldView('IP', null, $viewDatas) ?></td>
<td><?= $viewDatas['helper']->getFieldView('DEFENCE', null, $viewDatas) ?></td>
<td><?= $viewDatas['helper']->getFieldView('user_uid', $entity->getUserUID(), $viewDatas) ?></td>
<td><?= $viewDatas['service']->getHelper()->getListButton('new_service_view', '', $viewDatas, ['label' => $entity->getTitle()]) ?></td>
<td><?= $viewDatas['service']->getHelper()->getFieldView('clientinfo_uid', $entity->getClientInfoUID(), $viewDatas) ?></td>
<td><?= $viewDatas['service']->getHelper()->getFieldView('type', $entity->getType(), $viewDatas) ?></td>
<td><?= $viewDatas['service']->getHelper()->getFieldView('switchinfo_uid', $entity->getSwitchCode(), $viewDatas) ?></td>
<td><?= $viewDatas['service']->getHelper()->getFieldView('IP', null, $viewDatas) ?></td>
<td><?= $viewDatas['service']->getHelper()->getFieldView('DEFENCE', null, $viewDatas) ?></td>
<td><?= $viewDatas['service']->getHelper()->getFieldView('user_uid', $entity->getUserUID(), $viewDatas) ?></td>
</tr>
<?php endforeach ?>
</tbody>

View File

@ -23,7 +23,7 @@
</head>
<body>
<?php if ($error = session('error')): ?><?= $viewDatas['helper']->alert($error) ?><?php endif ?>
<?php if ($error = session('error')): ?><?= $viewDatas['service']->getHelper()->alert($error) ?><?php endif ?>
<div class="middle"><?= $this->renderSection('content') ?></div>
</body>

View File

@ -23,7 +23,7 @@
</head>
<body>
<?php if ($error = session('error')): ?><?= $viewDatas['helper']->alert($error) ?><?php endif ?>
<?php if ($error = session('error')): ?><?= $viewDatas['service']->getHelper()->alert($error) ?><?php endif ?>
<?= $this->renderSection('content') ?></div>
</body>

View File

@ -1,12 +1,12 @@
<div class="index_batchjob">
<ul class="nav justify-content-center">
<li class="nav-item"><?= $viewDatas['helper']->getListButton('create', '', $viewDatas) ?></li>
<li class="nav-item"><?= $viewDatas['service']->getHelper()->getListButton('create', '', $viewDatas) ?></li>
<li class="nav-item"><?= form_checkbox(array("id" => "batchjobuids_checkbox")) ?>ALL</li>
<?php foreach ($viewDatas['control']['batchjob_fields'] as $field): ?>
<?= $viewDatas['helper']->getListFilter($field, null, $viewDatas, ['data-batchjob' => 'true']) ?>&nbsp;
<?= $viewDatas['service']->getHelper()->getListFilter($field, null, $viewDatas, ['data-batchjob' => 'true']) ?>&nbsp;
<?php endforeach ?>
<?php foreach ($viewDatas['control']['batchjob_buttions'] as $action => $label): ?>
<li class="nav-item"><?= $viewDatas['helper']->getListButton($action, $label, $viewDatas) ?></li>
<li class="nav-item"><?= $viewDatas['service']->getHelper()->getListButton($action, $label, $viewDatas) ?></li>
<?php endforeach ?>
</ul>
<div class=" index_pagination"><?= $viewDatas['pagination'] ?></div>

View File

@ -0,0 +1,8 @@
table.layout_middle td.layout_right div#container * {
font-size:12px;
}
.note-box {
height: 150px;
resize: none;
}

View File

@ -1,33 +0,0 @@
table.layout_middle td.layout_right div#container * {
font-size:12px;
}
.summary-box {
margin:0px;
padding:0px;
}
.summary-box div{
text-align: center;
padding: 5px;
border: 1px solid rgb(204, 203, 203);
}
.summary-box div.bg-label {
background-color:rgb(224, 223, 223)
}
.note-box {
height: 150px;
resize: none;
}
.amount-positive {
color: green;
}
.amount-negative {
color: red;
}
.amount-highlight {
color: blue;
}