<?php
namespace Modules\Commande\Controller;

use Skeleton\Controller\Controller;
use Helpers\Validator\Validator;
use GuzzleHttp\Psr7\Response;
use Modules\Commande\Repository\ValidationCommande;
use Helpers\Trad\Trad;
use Modules\Ajax\Repository\Listes;

class AjaxCreationCommandeController extends Controller
{
    public function validatorDAAction() :Response
    {
        $post = $this->request->getParsedBody();
        
        $value = $post['value'];
        $validator = $this->createValidator();
        $trad = $this->getTranslationService();
        
        if (!$post['null'] && !$value) {
            $validator->setError('<br />'.$trad->t('Le champ DA ne peut pas être vide.'));
        } else {
            $requete = new ValidationCommande($this->pdo);
            $DA = $requete->listeDaPourCde($value, $post['post']);
            $validator->isFalse($DA, Trad::strBuild($trad->t('Le code saisi @1@ n\'est pas présent dans la liste des DA.'), $value));
        }
        
        if ($validator->isValid()) {
            return new Response(200, [], '');
        } else {
            return new Response(200, [], $validator->getError());
        }
    }
    
    public function validatorAOAction() :Response
    {
        $post = $this->request->getParsedBody();

        $value = $post['value'];
        $validator = $this->createValidator();
        $trad = $this->getTranslationService();
        
        if (!$post['null'] && !$value) {
            $validator->setError('<br />'.$trad->t('Le champ consultation ne peut pas être vide.'));
        } else {
            $requete = new ValidationCommande($this->pdo);
            $DA = $requete->listeAoPourCde($value, $post['post']);

            $validator->isFalse($DA, Trad::strBuild($trad->t('Le code saisi @1@ n\'est pas présent dans la liste des consultations de la société.'), $value));
        }
        
        if ($validator->isValid()) {
            return new Response(200, [], '');
        } else {
            return new Response(200, [], $validator->getError());
        }
    }

    public function validatorFrsAction(): Response
    {
        $post = $this->request->getParsedBody();

        $value = $post['value'];
        $post = $post['post'];

        $post['filter_egal_CODE'] = $value;

        $liste = new Listes($this->pdo);
        $listeFrs = $liste->Fournisseur($post);

        $validator = $this->createValidator();
        $trad = $this->getTranslationService();

        if (!$value) {
            $validator->setError($trad->t('Le champ fournisseur ne peut pas être vide.'));
        } elseif (!$listeFrs) {
            $validator->setError(Trad::strBuild($trad->t('Le code saisi @1@ n\'est pas présent dans la liste des fournisseurs.'), $value));
        }

        if ($validator->isValid()) {
            return new Response(200, [], '');
        } else {
            return new Response(200, [], $validator->getError());
        }
    }
}
