<?php

namespace App\Controllers\Admin\Equipment;

use App\Entities\Equipment\SwitchEntity;
use App\Helpers\Equipment\SwitchHelper;
use App\Services\Equipment\SwitchService;

use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;

class SwitchController extends EquipmentController
{
  public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
  {
    parent::initController($request, $response, $logger);
    $this->content_title = lang("{$this->getService()->getClassName()}.title");
    $this->class_path .= $this->getService()->getClassName();
    $this->uri_path .= strtolower($this->getService()->getClassName('/')) . '/';
    // $this->view_path .= strtolower($this->getService()->getClassName()) . DIRECTORY_SEPARATOR;

  }
  public function getService(): SwitchService
  {
    if (!$this->_service) {
      $this->_service = new SwitchService();
    }
    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
  {
    //코드 패턴체크
    $pattern = env("Switch.Prefix.code.pattern", false);
    if (!$pattern) {
      throw new \Exception(__METHOD__ . "에서 code의 prefix[Switch.Prefix.code.pattern]가 정의되지 않았습니다.");
    }
    if (!array_key_exists('code', $formDatas)) {
      throw new \Exception("Switch코드가 정의되지 않았습니다");
    }
    if (!preg_match($pattern, $formDatas['code'])) {
      throw new \Exception("Switch코드[{$formDatas['code']}의 형식이 맞지않습니다");
    }
    return parent::create_process($formDatas);
  }
}
