<?php

namespace App\Controllers\Front;

use App\Models\BoardModel;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
use App\Models\BoardConfigModel;

class BoardController extends FrontController
{
    public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
    {
        $this->_model = new BoardModel($this->getFields());
        parent::initController($request, $response, $logger);
        $this->_viewDatas['title'] = lang($this->_model->getClassName() . '.title');
        $this->_viewPath .= strtolower($this->_model->getClassName());
        helper($this->_model->getClassName());
    }

    public function getFields(string $action = ""): array
    {
        $fields = ["board_config_uid", 'title', "board_file", "passwd", "content"];
        switch ($action) {
            case "index":
            case "excel":
                return ["board_config_uid", "user_uid",  'title', "board_file", "view_cnt", "created_at"];
                break;
            case "view":
                return ["board_config_uid", "user_uid",  'title', "board_file", "view_cnt", "created_at", "content"];
                break;
            default:
                return $fields;
                break;
        }
    }
    public function getFieldFilters(): array
    {
        return ["board_config_uid", "user_uid"];
    }
    public function getFieldBatchFilters(): array
    {
        return parent::getFieldBatchFilters();
    }
    //Field별 Form Datas 처리용
    protected function getFieldFormData(string $field, $entity = null): array
    {
        switch ($field) {
            case 'passwd':
                $this->_viewDatas['fieldDatas'][$field] = $this->request->getVar($field);
                $this->_viewDatas['fieldDatas']['confirmpassword'] = $this->request->getVar('confirmpassword');
                break;
            case 'board_file':
                $this->_viewDatas['fieldDatas'][$field] = $this->single_upload_procedure($field, $entity);
                break;
            default:
                return parent::getFieldFormData($field, $entity);
                break;
        }
        return $this->_viewDatas['fieldDatas'];
    }
}
