# Implementación del Seeder para Módulo Menu

## ✅ Archivos Creados/Modificados

### 1. **MenuSeeder.php** (Nuevo)
- **Ubicación**: `database/seeders/MenuSeeder.php`
- **Funcionalidad**: Seeder completo que carga datos desde JSON siguiendo el patrón de `ProductsSeeder`
- **Características**:
  - ✅ Verifica si el módulo está activo antes de ejecutarse
  - ✅ Carga categorías de menú (`MenuCategory`)
  - ✅ Carga menús (`Menu`)
  - ✅ Carga productos del menú (`MenuProduct`)
  - ✅ Maneja imágenes (subida a Cloudinary desde URLs o archivos locales)
  - ✅ Asocia productos a menús (relación many-to-many)
  - ✅ Proporciona resumen de imágenes procesadas

### 2. **menu.json** (Completado)
- **Ubicación**: `database/seeders/project-data/menu.json`
- **Estructura**:
  ```json
  {
    "categories": [...],  // Categorías de menú
    "menus": [...],       // Menús (colecciones de productos)
    "products": [...]     // Productos del menú (platos, bebidas, etc.)
  }
  ```
- **Datos incluidos**:
  - 6 categorías: Menú del Día, Más Comprados, Entradas, Platos Principales, Postres, Bebidas
  - 2 menús: Menú del Día Especial, Platos Populares
  - 12 productos con precios, descripciones e imágenes

### 3. **Project_Seeder.php** (Modificado)
- **Cambio**: Agregado `MenuSeeder` al mapeo de módulos activos
- **Línea agregada**:
  ```php
  'menu' => [
      MenuSeeder::class,
  ],
  ```

## 📋 Estructura del JSON

### Categorías
```json
{
  "name": "Nombre de la categoría",
  "slug": "slug-unico",
  "description": "Descripción opcional",
  "is_featured": true/false,
  "order": 1
}
```

### Menús
```json
{
  "name": "Nombre del menú",
  "slug": "slug-unico",
  "description": "Descripción opcional",
  "category": "slug-de-categoria",  // Puede ser slug o nombre
  "is_active": true,
  "order": 1
}
```

### Productos
```json
{
  "name": "Nombre del producto",
  "slug": "slug-unico",
  "description": "Descripción del plato",
  "category": "slug-de-categoria",
  "price": 12.50,
  "is_active": true,
  "order": 1,
  "image": "ruta/o/url/de/imagen",
  "menus": ["slug-menu-1", "slug-menu-2"]  // Menús a los que pertenece
}
```

## 🚀 Uso

### Ejecutar el seeder manualmente
```bash
php artisan db:seed --class=MenuSeeder
```

### Ejecutar todos los seeders (incluye MenuSeeder si el módulo está activo)
```bash
php artisan db:seed --class=Project_Seeder
```

### El seeder se ejecutará automáticamente si:
1. El módulo `menu` está activo en `cd-system.json`
2. Se ejecuta `Project_Seeder` o `DatabaseSeeder`

## 📝 Notas Importantes

1. **Imágenes**: 
   - El seeder soporta imágenes locales (`cd-project/img/...`) y URLs remotas
   - Las imágenes se suben automáticamente a Cloudinary
   - Si la imagen ya tiene `secure_url` de Cloudinary, se usa directamente

2. **Relaciones**:
   - Los productos pueden pertenecer a múltiples menús (many-to-many)
   - Cada producto pertenece a una categoría (many-to-one)

3. **Verificación de módulo activo**:
   - El seeder verifica si el módulo está activo antes de ejecutarse
   - Si está inactivo, se omite automáticamente

4. **Limpieza de datos**:
   - El seeder limpia datos existentes antes de cargar nuevos datos
   - Usa `updateOrCreate` para evitar duplicados

## 🔄 Próximos Pasos

1. **Agregar más productos**: Editar `menu.json` y agregar más productos según necesidad
2. **Agregar imágenes**: Colocar imágenes en `public/cd-project/img/demos/restaurant/menu/` o usar URLs
3. **Personalizar categorías**: Modificar las categorías según el tipo de restaurante
4. **Traducciones**: Si se activa el módulo de traducciones, se puede crear `menu-es.json` y `menu-en.json`

## 📊 Ejemplo de Datos Incluidos

- **Entradas**: Ensalada César, Bruschetta Italiana
- **Platos Principales**: Risotto de Hongos, Salmón a la Parrilla, Pasta Carbonara, Hamburguesa Gourmet
- **Postres**: Tiramisú, Brownie con Helado, Cheesecake de Fresa
- **Bebidas**: Limonada Natural, Café Espresso, Vino Tinto de la Casa

Todos los productos incluyen precios, descripciones y referencias a imágenes.
