<?php

declare(strict_types=1);

namespace Database\Seeders;

use App\Models\Store;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;

class StoreSeeder extends Seeder
{
    use WithoutModelEvents;

    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        $now = now();

        /**
         * Edita este arreglo para agregar, actualizar o desactivar tiendas.
         * El slug es la clave estable usada por los targets y no debe duplicarse.
         *
         * aliases: incluye TODAS las variantes de nombre que Google Shopping puede devolver
         * en el campo "seller". El matcher las usa para inferir el dominio cuando la API no
         * devuelve domain directamente (caso típico de Merchant API).
         *
         * logo_url: URL absoluta del logo de la tienda almacenado en storage/app/public.
         * Ejemplo: 'logo_url' => '/storage/stores/bodega-aurrera.svg'
         * Si no hay logo disponible, dejar null.
         *
         * Cómo encontrar nuevas variantes: ejecuta una búsqueda real con Postman y observa
         * el campo "seller" en los resultados. Agrega cualquier variante nueva aquí.
         */
        $stores = [
            [
                'slug' => 'bodega-aurrera',
                'name' => 'Bodega Aurrera',
                'domains' => ['bodegaaurrera.com.mx', 'despensa.bodegaaurrera.com.mx'],
                'aliases' => [
                    'Bodega Aurrera',
                    'Bodega Aurrera Despensa a tu Casa',
                    'Bodega Aurrera en línea',
                    'BodegaAurrera',
                    'Aurrera',
                    'bodegaaurrera',
                ],
                'is_active' => true,
                'logo_url' => '/images/tiendas/bodega-aurrera.png',
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'slug' => 'soriana',
                'name' => 'Soriana',
                'domains' => ['soriana.com', 'soriana.com.mx'],
                'aliases' => [
                    'Soriana',
                    'Soriana.com',
                    'Soriana Súper',
                    'Soriana Mercado',
                    'soriana',
                ],
                'is_active' => true,
                'logo_url' => '/images/tiendas/soriana.jpg',
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'slug' => 'chedraui',
                'name' => 'Chedraui',
                'domains' => ['chedraui.com.mx'],
                'aliases' => [
                    'Chedraui',
                    'Chedraui.com.mx',
                    'Chedraui en línea',
                    'chedraui',
                ],
                'is_active' => true,
                'logo_url' => '/images/tiendas/chedraui.png',
                'created_at' => $now,
                'updated_at' => $now,
            ],
        ];

        $stores = array_map(static function (array $store): array {
            $store['domains'] = json_encode($store['domains'], JSON_THROW_ON_ERROR);
            $store['aliases'] = json_encode($store['aliases'], JSON_THROW_ON_ERROR);

            return $store;
        }, $stores);

        Store::query()->upsert(
            $stores,
            ['slug'],
            ['name', 'domains', 'aliases', 'is_active', 'logo_url', 'updated_at'],
        );
    }
}
