<commit_before><?php

class VracValidation extends DocumentValidation
{
    private $etablissement_client;

    private static $format = 'Y-m-d';

    /**
     * Constructeur
     *
     * @param Vrac $document Le vrac à vérifier
     * @param array $options Un tableau d'option
     */
    public function __construct(Vrac $document, $options = []) {
        $this->etablissement_client = EtablissementClient::getInstance();
        parent::__construct($document, $options);
    }

    /**
     * Configure les types de contrôles
     */
    public function configure() {
        parent::addControle('erreur', 'date', 'La date est mal formée');
        parent::addControle('erreur', 'inexistant', 'L\'entrée n\'existe pas');
        parent::addControle('erreur', 'float', 'L\'entrée renseignée n\'est pas un float');
        parent::addControle('erreur', 'bouteille', 'Un problème avec les bouteilles');

        parent::addControle('vigilance', 'mandataire', '');
        parent::addControle('vigilance', 'date', 'Les dates peuvent poser problème');
        parent::addControle('vigilance', 'domaine', '');
    }

    /**
     * Contrôle les entrées du vrac
     */
    public function controle() {
        if (! $this->document->type_transaction || ! array_key_exists($this->document->type_transaction, VracClient::$types_transaction)) {
            parent::addPoint('erreur', 'inexistant', 'Le type de transaction n\'existe pas');
        }

        if (! $this->checkDate($this->document->valide->date_saisie)) {
            parent::addPoint('erreur', 'date', 'La date de signature doit être renseignée');
        }

        if (! $this->checkEtablissement($this->document->vendeur_identifiant, EtablissementFamilles::FAMILLE_PRODUCTEUR)) {
            parent::addPoint('erreur', 'inexistant', 'Le vendeur n\'existe pas');
        }

        if (! $this->checkEtablissement($this->document->acheteur_identifiant, EtablissementFamilles::FAMILLE_NEGOCIANT)) {
            parent::addPoint('erreur', 'inexistant', 'L\'acheteur n\'existe pas');
        }

        if ($this->document->representant_identifiant !== $this->document->vendeur_identifiant) {
            if (! $this->checkEtablissement($this->document->representant_identifiant, EtablissementFamilles::FAMILLE_REPRESENTANT)) {
                parent::addPoint('erreur', 'inexistant', 'Le représentant n\'existe pas');
            }
        }

        if ($this->document->mandataire_identifiant) {
            if (! $this->document->mandataire_exist) {
                parent::addPoint('vigilance', 'mandataire', 'Le flag de mandataire doit être à true');
            }

            if (! $this->checkEtablissement($this->document->mandataire_identifiant, EtablissementFamilles::FAMILLE_COURTIER)) {
                parent::addPoint('erreur', 'inexistant', 'Le mandataire n\'existe pas');
            }
        }

        if ($this->document->responsable && !in_array($this->document->responsable, ['vendeur', 'mandataire', 'acheteur'])) {
            parent::addPoint('erreur', 'inexistant', 'Le type de responsable n\'existe pas');
        }

        if (! $this->document->produit) {
            parent::addPoint('erreur', 'inexistant', 'Le produit n\'a pas été trouvé');
        }

        if ($this->document->domaine) {
            if ($this->document->categorie_vin === VracClient::CATEGORIE_VIN_GENERIQUE) {
                parent::addPoint('vigilance', 'domaine', 'Un domaine a été spécifié alors que le vin est générique');
            }<commit_msg>Vérification créateur est acheteur ou mandataire<commit_after><?php

class VracValidation extends DocumentValidation
{
    private $etablissement_client;

    private static $format = 'Y-m-d';

    /**
     * Constructeur
     *
     * @param Vrac $document Le vrac à vérifier
     * @param array $options Un tableau d'option
     */
    public function __construct(Vrac $document, $options = []) {
        $this->etablissement_client = EtablissementClient::getInstance();
        parent::__construct($document, $options);
    }

    /**
     * Configure les types de contrôles
     */
    public function configure() {
        parent::addControle('erreur', 'date', 'La date est mal formée');
        parent::addControle('erreur', 'inexistant', 'L\'entrée n\'existe pas');
        parent::addControle('erreur', 'float', 'L\'entrée renseignée n\'est pas un float');
        parent::addControle('erreur', 'bouteille', 'Un problème avec les bouteilles');

        parent::addControle('vigilance', 'mandataire', '');
        parent::addControle('vigilance', 'date', 'Les dates peuvent poser problème');
        parent::addControle('vigilance', 'domaine', '');
    }

    /**
     * Contrôle les entrées du vrac
     */
    public function controle() {
        if (! $this->document->type_transaction || ! array_key_exists($this->document->type_transaction, VracClient::$types_transaction)) {
            parent::addPoint('erreur', 'inexistant', 'Le type de transaction n\'existe pas');
        }

        if (! $this->checkDate($this->document->valide->date_saisie)) {
            parent::addPoint('erreur', 'date', 'La date de signature doit être renseignée');
        }

        if (! $this->checkEtablissement($this->document->vendeur_identifiant, EtablissementFamilles::FAMILLE_PRODUCTEUR)) {
            parent::addPoint('erreur', 'inexistant', 'Le vendeur n\'existe pas');
        }

        if (! $this->checkEtablissement($this->document->acheteur_identifiant, EtablissementFamilles::FAMILLE_NEGOCIANT)) {
            parent::addPoint('erreur', 'inexistant', 'L\'acheteur n\'existe pas');
        }

        if ($this->document->representant_identifiant !== $this->document->vendeur_identifiant) {
            if (! $this->checkEtablissement($this->document->representant_identifiant, EtablissementFamilles::FAMILLE_REPRESENTANT)) {
                parent::addPoint('erreur', 'inexistant', 'Le représentant n\'existe pas');
            }
        }

        if ($this->document->mandataire_identifiant) {
            if (! $this->document->mandataire_exist) {
                parent::addPoint('vigilance', 'mandataire', 'Le flag de mandataire doit être à true');
            }

            if (! $this->checkEtablissement($this->document->mandataire_identifiant, EtablissementFamilles::FAMILLE_COURTIER)) {
                parent::addPoint('erreur', 'inexistant', 'Le mandataire n\'existe pas');
            }
        }

        if ($this->document->createur_identifiant !== $this->document->acheteur_identifiant
            || $this->document->createur_identifiant !== $this->document->mandataire_identifiant) {
                parent::addPoint('erreur', 'inexistant', 'Le créateur doit être l\'acheteur ou le mandataire');
        }

        if ($this->document->responsable && !in_array($this->document->responsable, ['vendeur', 'mandataire', 'acheteur'])) {
            parent::addPoint('erreur', 'inexistant', 'Le type de responsable n\'existe pas');
        }

        if (! $this->document->produit) {
            parent::addPoint('erreur', 'inexistant', 'Le produit n\'a pas été trouvé');
        }

        if ($this->document->domaine) {
            if ($this->document->categorie_vin === VracClient::CATEGORIE_VIN_GENERIQUE) {
                parent::addPoint('vigilance', 'domaine', 'Un domaine a été spécifié alors que le vin est générique');
            }
{'fraction_non_alphanumeric': 0.14998647552069244, 'fraction_numerical': 0.0, 'mean_word_length': 3.085635359116022, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 89, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '259595', 'n_tokens_mistral': 2285, 'n_tokens_neox': 2254, 'n_words': 430}