# Plan de Implementación: Sección de Servicios Configurable

Este plan detalla los pasos para agregar una sección de servicios configurable a la página de inicio (salón/tienda) con soporte para administración completa (CRUD) desde el panel de control.

## Cambios Propuestos

### Base de Datos y Modelos

#### [NEW] [create_services_table.php](file:///c:/Users/larry/.gemini/antigravity-ide/scratch/configurable-cart/database/migrations/2026_08_18_025500_create_services_table.php)
Crear la tabla `services` para almacenar los datos de cada servicio:
- `id` (autoincrementable)
- `name` (string)
- `description` (text, nullable)
- `price` (decimal, 8, 2, nullable)
- `image_path` (string, nullable)
- `is_active` (boolean, default true)
- `timestamps`

#### [NEW] [Service.php](file:///c:/Users/larry/.gemini/antigravity-ide/scratch/configurable-cart/app/Models/Service.php)
Modelo Eloquent para la tabla `services`. Definirá:
- Los campos asignables (`fillable`): `name`, `description`, `price`, `image_path`, `is_active`.
- Un accesor `image_url` para obtener la ruta del asset o una imagen por defecto de servicio si no tiene imagen asignada.

#### [NEW] [ServiceSeeder.php](file:///c:/Users/larry/.gemini/antigravity-ide/scratch/configurable-cart/database/seeders/ServiceSeeder.php)
Seeder para registrar los servicios iniciales solicitados:
1. **Lavado & Secado**: Lavado profundo con productos premium y secado profesional. (Precio estimado: $20.00)
2. **Manicure & Uñas**: Cuidado completo de manos, limpieza de cutículas y esmaltado de alta duración. (Precio estimado: $25.00)
3. **Extensiones**: Aplicación y adaptación de extensiones de cabello natural o sintético. (Precio estimado: $120.00)

#### [MODIFY] [DatabaseSeeder.php](file:///c:/Users/larry/.gemini/antigravity-ide/scratch/configurable-cart/database/seeders/DatabaseSeeder.php)
Llamar al nuevo `ServiceSeeder` para que los servicios iniciales estén disponibles al ejecutar el seed del sistema.

---

### Backend (Controladores y Rutas)

#### [NEW] [ServiceController.php](file:///c:/Users/larry/.gemini/antigravity-ide/scratch/configurable-cart/app/Http/Controllers/ServiceController.php)
Controlador administrativo para el CRUD completo de Servicios:
- `index()`: Lista todos los servicios.
- `create()` / `store()`: Formularios y lógica para agregar un servicio con carga de imagen.
- `edit()` / `update()`: Formularios y lógica para editar un servicio.
- `destroy()`: Eliminar un servicio e idealmente su imagen asociada en el almacenamiento.

#### [MODIFY] [SettingController.php](file:///c:/Users/larry/.gemini/antigravity-ide/scratch/configurable-cart/app/Http/Controllers/SettingController.php)
Añadir nuevas llaves de configuración a la validación y guardado:
- `services_title` (Título de la sección de servicios, por defecto: "Nuestros Servicios")
- `services_subtitle` (Subtítulo de la sección, por defecto: "Conoce los tratamientos y cuidados profesionales que ofrecemos para ti.")
- `show_services` (Activar/desactivar la sección de servicios, por defecto: "1")

#### [MODIFY] [ShopController.php](file:///c:/Users/larry/.gemini/antigravity-ide/scratch/configurable-cart/app/Http/Controllers/ShopController.php)
Consultar los servicios activos (`is_active = true`) y enviarlos a la vista de catálogo (`shop.index`).

#### [MODIFY] [web.php](file:///c:/Users/larry/.gemini/antigravity-ide/scratch/configurable-cart/routes/web.php)
Registrar el recurso CRUD de servicios bajo el prefijo `admin` y los middlewares `auth` y `admin`:
- `Route::resource('services', ServiceController::class)->names(...)`

---

### Frontend y Vistas de Administración

#### [MODIFY] [admin.blade.php](file:///c:/Users/larry/.gemini/antigravity-ide/scratch/configurable-cart/resources/views/layouts/admin.blade.php)
Añadir un enlace al CRUD de servicios en el menú lateral de administración para que sea accesible fácilmente.

#### [NEW] [index.blade.php](file:///c:/Users/larry/.gemini/antigravity-ide/scratch/configurable-cart/resources/views/admin/services/index.blade.php)
Vista administrativa con la lista de servicios en una tabla, mostrando imagen, nombre, precio, descripción, estado (activo/inactivo) y botones de acción (Editar, Eliminar).

#### [NEW] [create.blade.php](file:///c:/Users/larry/.gemini/antigravity-ide/scratch/configurable-cart/resources/views/admin/services/create.blade.php)
Formulario de creación de servicio con soporte para subir imagen y seleccionar si está activo o no.

#### [NEW] [edit.blade.php](file:///c:/Users/larry/.gemini/antigravity-ide/scratch/configurable-cart/resources/views/admin/services/edit.blade.php)
Formulario de edición de servicio cargando los valores existentes e imagen previa.

#### [MODIFY] [edit.blade.php](file:///c:/Users/larry/.gemini/antigravity-ide/scratch/configurable-cart/resources/views/admin/settings/edit.blade.php)
Añadir inputs para configurar el título, subtítulo y visibilidad global de la sección de servicios.

#### [MODIFY] [index.blade.php](file:///c:/Users/larry/.gemini/antigravity-ide/scratch/configurable-cart/resources/views/shop/index.blade.php)
- Si `show_services` está activado, mostrar una hermosa sección con un diseño premium y responsive (usando la paleta de colores configurada y variables CSS).
- El diseño constará de tarjetas con efectos hover, imágenes, precios formateados y descripciones claras.

---

## Plan de Verificación

### Pruebas Automatizadas e Integración
- Ejecutar migraciones y seeders para comprobar que no hay errores de sintaxis o de esquema:
  `php artisan migrate` y `php artisan db:seed --class=ServiceSeeder` (Nota: en la ejecución omitimos el borrado de datos).

### Verificación Manual
- Acceder al panel de administración como administrador.
- Ir a la pestaña **Servicios** y verificar que los tres servicios por defecto se listan correctamente.
- Agregar un nuevo servicio subiendo una imagen y comprobar que se guarda con éxito.
- Modificar el estado o precio de un servicio y comprobar los cambios en la base de datos y la interfaz.
- Acceder a **Personalización de Marca** y cambiar el título y subtítulo de la sección de servicios, así como desactivarla y volverla a activar.
- Visitar la página principal (`/`) y validar que la sección se ve perfectamente integrada con el diseño del sitio (con soporte para el Modo Oscuro y los colores principales de marca).
