<?php 
/**
 * 
 */

declare(strict_types=1);

namespace PrestaShop\Module\LCVPrestaTheme\Config;

/**
 *  parametrage categorie mise en avant
 */
class ConfigReassurance{

    /**
     * id unique des reassurance
     *
     * @var int
     */
    public $id;

    /**
     * titre de la reassurance
     *
     * @var string
     */
    public $title = '';


    /**
     * sous titre de la reassurance 
     *
     * @var string
     */
    public $sub_title = '';


    /**
     * url vers les mentions légales 
     *
     * @var string
     */
    public $url = '';


    /**
     * chemin vers l'image 
     *
     * @var string
     */
    public $image = '';


    /**
      * visibilité du bloc 
     *
     * @var bool
     */
    public $isVisible = true;


   public function injectIntoGroup(ConfigTheme $config, string $action, ?int $id, ?int $group_id): void
    {
        if ($group_id === null) {
            throw new \Exception('group_id manquant');
        }

        // Recherche du groupe par ID métier
        $group = null;

        foreach ($config->configReassuranceGroup as $g) {
            if ((int)$g->id === (int)$group_id) {
                $group = $g;
                break;
            }
        }

        if ($group === null) {
            throw new \Exception('ReassuranceGroup introuvable');
        }

        // Initialise les items si nécessaire
        if (!isset($group->items) || !is_array($group->items)) {
            $group->items = [];
        }

        $items = &$group->items;

        //  ADD
        if ($action === 'add') {
            $items[] = $this;
            return;
        }

        // EDIT
        if ($action === 'edit') {

            foreach ($items as $index => $item) {

                // On compare les ID métier
                if ((int)$item["id"] === (int)$this->id) {

                    // On remplace l'ancien item par le nouveau
                    $items[$index] = $this;
                    return;
                }
            }

            throw new \Exception('Item introuvable pour modification');
        }

        //  DELETE
        if ($action === 'delete') {
            
            foreach ($items as $index => $item) {
                if ((int)$item['id']=== (int)$this->id) {
                    
                    unset($items[$index]);
                    $group->items = array_values($group->items);

                    return;
                }
            }

            return;
        }

        throw new \Exception('Action invalide');
    }



}
