<?php

namespace Helpers\Outil;

class Societe
{

    // fonction permettant de contrôler la validité d'un numéro SIREN
    // phpcs:ignore
    public static function is_siren(string $siren) :bool
    {
        $sum = 0;
        if (strlen($siren) != 9) {
            return false; // le SIREN doit contenir 9 caractères
        }
        if (!is_numeric($siren)) {
            return false; // le SIREN ne doit contenir que des chiffres
        }

        // on prend chaque chiffre un par un
        // si son index (position dans la chaîne en commence à 0 au premier caractère) est impair
        // on double sa valeur et si cette dernière est supérieure à 9, on lui retranche 9
        // on ajoute cette valeur à la somme totale

        for ($index = 0; $index < 9; $index ++) {
            $number = intval(substr($siren, $index, 1));
            if (($index % 2) != 0) {
                if (($number *= 2) > 9) {
                    $number -= 9;
                }
            }
            $sum += $number;
        }

        // le numéro est valide si la somme des chiffres est multiple de 10
        if (($sum % 10) != 0) {
            return false;
        } else {
            return true;
        }
    }

    // fonction permettant de contrôler la validité d'un numéro SIRET
    // phpcs:ignore
    // public static function is_siret(string $siret)
    // {
    //     $sum = 0;
    //     if (strlen($siret) != 14) {
    //         return 1; // le SIRET doit contenir 14 caractères
    //     }
    //     if (!is_numeric($siret)) {
    //         return 2; // le SIRET ne doit contenir que des chiffres
    //     }

    //     // on prend chaque chiffre un par un
    //     // si son index (position dans la chaîne en commence à 0 au premier caractère) est pair
    //     // on double sa valeur et si cette dernière est supérieure à 9, on lui retranche 9
    //     // on ajoute cette valeur à la somme totale

    //     for ($index = 0; $index < 14; $index ++) {
    //         $number = (int) $siret[$index];
    //         if (($index % 2) == 0) {
    //             if (($number *= 2) > 9) {
    //                 $number -= 9;
    //             }
    //         }
    //         $sum += $number;
    //     }

    //     // le numéro est valide si la somme des chiffres est multiple de 10
    //     if (($sum % 10) != 0) {
    //         return false;
    //     } else {
    //         return true;
    //     }
    // }

    // fonction permettant de contrôler la validité d'un code-barres de type EAN-13
    // phpcs:ignore
    // public static function is_ean13($ean13)
    // {
    //     $sum = 0;
    //     if (strlen($ean13) != 13) {
    //         return 1; // le code-barres doit contenir 13 caractères
    //     }
    //     if (!is_numeric($ean13)) {
    //         return 2; // le code-barres ne doit contenir que des chiffres
    //     }

    //     // on prend chaque chiffre un par un
    //     // si son index (position dans la chaîne en commence à 0 au premier caractère) est impair
    //     // on triple sa valeur
    //     // on ajoute cette valeur à la somme totale

    //     for ($index = 0; $index < 12; $index ++) {
    //         $number = (int) $ean13[$index];
    //         if (($index % 2) != 0) {
    //             $number *= 3;
    //         }
    //         $sum += $number;
    //     }

    //     $key = $ean13[12] ?? null; // clé de contrôle égale au dernier chiffre
            
    //     // la clé de contrôle doit être égale à : 10 - (reste de la division de la somme des 12 premiers chiffres)
    //     if (10 - ($sum % 10) != $key) {
    //         return true;
    //     } else {
    //         return false;
    //     }
    // }
}
