<?php

namespace Modules\Catalogue\Validator;

use Helpers\Trad\ITrad;
use Helpers\Validator\Validator;
use Modules\Catalogue\Controller\ParametrageFormatController;

class MultiMappingValidator extends Validator
{
    public function __construct(\PDO $pdo, ITrad $trad)
    {
        $this->pdo = $pdo;
        $this->trad = $trad;
    }

    /**
     * @param array<mixed> $post
     * @param array<mixed> $listeLigne
     * @return void
     */
    public function validateForm(&$post, &$listeLigne, int $idLigne):void
    {
        if ($post['TYPECONTSTR'] == 'L') {
            $this->isStringSansEspace($this->trad->t('Séparateur de liste'), $post['SEPARLST'], 0, 1);
        }
        if (in_array($post['TYPECONTSTR'], ['L', 'C'])) {
            $this->isStringSansEspace($this->trad->t('Séparateur de couple'), $post['SEPARCOUPLE'], 0, 1);
        }

        $ligneTmp = 1;
        foreach ($post as $k => $v) {
            if (str_starts_with($k, 'POSITION')) {
                $random = str_replace('POSITION', '', $k);

                $this->isInteger($ligneTmp.' - '.$this->trad->t('Position'), $post['POSITION'.$random], 1, 10000);
                $this->isStringAvecEspace($ligneTmp.' - '.$this->trad->t('Description'), $post['VALDEFAUT'.$random], 0, 60);

                if (in_array($idLigne, ParametrageFormatController::$listeLigneRubrique)) {
                    $this->isInteger($ligneTmp.' - '.$this->trad->t('Tranche'), $post['TRANCHEVAL'.$random], 1, 10000);
                    $this->isObligatoire($post['RUBASSOCIEE'.$random], $ligneTmp.' - '.$this->trad->t('Rubrique'));
                    $this->isCheck($post['CONTROLE'.$random]);
                } elseif (in_array($idLigne, ParametrageFormatController::$listeLigneTab)) {
                    $this->isCheck($post['CONTROLE'.$random]);
                    $this->isCheck($post['TRANSCODAGE'.$random]);
                } else {
                    $this->isStringSansEspace($ligneTmp.' - '.$this->trad->t('Opérateur'), $post['OPCONCAT'.$random], 0, 1);
                }
                

                $listeLigne[] = [
                    'POSITION'      => $post['POSITION'.$random],
                    'ACTION'        => $post['ACTION'.$random],
                    'VALDEFAUT'     => $post['VALDEFAUT'.$random],

                    'OPCONCAT'      => $post['OPCONCAT'.$random]??'',

                    'RUBASSOCIEE'   => $post['RUBASSOCIEE'.$random]??'',
                    'TRANCHEVAL'    => $post['OPCONTRANCHEVALCAT'.$random]??'',
                    
                    'CONTROLE'      => $post['CONTROLE'.$random]??false,

                    'TRANSCODAGE'   => $post['TRANSCODAGE'.$random]??false,
                ];
                $ligneTmp++;
            }
        }
    }
}
