<?php

declare(strict_types=1);

namespace App\Models;

use CodeIgniter\Model;

class SalesAgencyModel extends Model
{
    use \App\Models\Traits\Auditable;

    protected $table         = 'sales_agency';
    protected $primaryKey    = 'sa_idx';
    protected $returnType    = 'object';
    protected $useTimestamps = false;
    protected $allowedFields = [
        'sa_lg_idx',
        'sa_kind',
        'sa_code',
        'sa_name',
        'sa_regdate',
    ];

    /** sales_agency 테이블에 sa_kind, sa_code 컬럼이 있는지(마이그레이션 적용 여부). */
    public function hasKindCodeColumns(): bool
    {
        static $cache = null;
        if ($cache === null) {
            $cols   = db_connect()->getFieldNames($this->table);
            $cache = in_array('sa_kind', $cols, true) && in_array('sa_code', $cols, true);
        }

        return $cache;
    }

    /**
     * 신규 스키마면 구분·코드 순, 아니면 명·PK 순(옛 DB 호환).
     *
     * @return $this
     */
    public function orderForDisplay()
    {
        return $this->hasKindCodeColumns()
            ? $this->orderBy('sa_kind', 'ASC')->orderBy('sa_code', 'ASC')
            : $this->orderBy('sa_name', 'ASC')->orderBy('sa_idx', 'ASC');
    }
}
