<?php 
/**
 * 
 */

declare(strict_types=1);

namespace PrestaShop\Module\PolarisPrestaTheme\Config;

class ConfigProductHome{


    /**
     * id unique about 
     *
     * @var int
     */
    public $id;

    /**
     * Selection du Nombre de produit a afficher  
     *
     * @var  int
     */
    public $nbProduit = 4;

    public $title = "";

    public $typeProduit = "";

    public $productIds = "";

     /**
     * 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->configProductHomeGroup as $g) {
            if ((int)$g->id === (int)$group_id) {
                $group = $g;
                break;
            }
        }

        if ($group === null) {
            throw new \Exception('CategoryGroup 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');
    }

}