<?php

namespace App\Models;

use App\Concerns\HasTranslations;
use Illuminate\Database\Eloquent\Model;

class Stat extends Model
{
    use HasTranslations;

    protected $table = 'stat';

    protected $primaryKey = 'stat_id';

    protected string $columnPrefix = 'stat';

    const CREATED_AT = 'stat_created_at';

    const UPDATED_AT = 'stat_updated_at';

    protected $fillable = ['stat_valeur', 'stat_label_fr', 'stat_label_en', 'stat_ordre'];

    /**
     * Décompose "stat_valeur" (ex: "20+", "1,4 Md") en éléments exploitables
     * par l'animation de comptage JS : {nombre, decimales, prefixe, suffixe}.
     */
    public function counterParts(): array
    {
        $value = trim($this->stat_valeur);

        if (! preg_match('/^([\d.,]+)(.*)$/u', $value, $matches)) {
            return ['nombre' => 0, 'decimales' => 0, 'suffixe' => $value];
        }

        $numeric = str_replace(',', '.', $matches[1]);
        $decimales = str_contains($numeric, '.') ? strlen(substr(strrchr($numeric, '.'), 1)) : 0;
        $suffixeBrut = $matches[2];

        return [
            'nombre' => (float) $numeric,
            'decimales' => $decimales,
            'suffixe' => trim($suffixeBrut),
            // Le suffixe est collé au chiffre s'il n'y a pas d'espace dans la valeur d'origine (ex: "20+").
            'colle' => $suffixeBrut !== '' && $suffixeBrut[0] !== ' ',
        ];
    }
}
