# ECC Trámites – Backend Laravel + Sail

Este esqueleto agrega *migraciones, modelos, controladores, requests, resources y rutas API* para servir al front Next.js/React/Tailwind del repo "ECC-tramites".

## Requisitos

- Docker y Docker Compose
- PHP 8.4+ (solo si querés correr sin Docker)
- Node/NPM (solo para el front)
- Git

## Crear proyecto Laravel con Sail (vacío) y aplicar este esqueleto

```bash
# 1) Crear proyecto base con Sail
composer create-project laravel/laravel ecc-backend
cd ecc-backend
php -d detect_unicode=0 artisan sail:install
# Elegí: mysql, redis (opcional), mailpit (opcional)
# 2) Levantar servicios
./vendor/bin/sail up -d

# 3) Copiar el contenido de esta carpeta dentro del proyecto ecc-backend,
#    preservando estructura (app/, database/, routes/, etc.)

# 4) Instalar Sanctum para auth API (si no está):
./vendor/bin/sail composer require laravel/sanctum
./vendor/bin/sail artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
./vendor/bin/sail artisan migrate

# 5) Crear link de storage para adjuntos
./vendor/bin/sail artisan storage:link

# 6) (Opcional) Poblar catálogos
./vendor/bin/sail artisan db:seed --class=CatalogoSeeder
```

> **Nota**: Recordá configurar `.env` (DB, APP_URL, FRONTEND URL) y CORS.

## Endpoints principales (resumen)

- `POST /api/auth/login` – login (email/password); devuelve token   
- `POST /api/auth/logout`
- `GET /api/tramites` – listar con filtros (forma_juridica, jurisdiccion, organismo, estado, q, fecha...)
- `POST /api/tramites` – crear trámite
- `GET /api/tramites/{id}` – ver detalle
- `PUT /api/tramites/{id}` – actualizar (con versionado)
- `DELETE /api/tramites/{id}` – eliminar (soft delete)
- `POST /api/tramites/{id}/adjuntos` – subir adjunto
- `GET /api/tramites/{id}/versiones` – historial de versiones
- `POST /api/tramites/{id}/comentarios` – agregar comentario
- `GET /api/catalogos` – catálogos (formas jurídicas, jurisdicciones, organismos)
- `GET /api/estadisticas/resumen` – totales por estado, etc.

Todos los endpoints (salvo `/auth/*` y `GET /catalogos`) requieren auth vía Bearer token (Sanctum).

## Mapeo rápido al Front

- Listado: `GET /api/tramites` (paginado con filtros).
- Nuevo trámite: `POST /api/tramites`.
- Detalle: `GET /api/tramites/{id}` + pestañas (pasos, adjuntos, comentarios, costos, normativa).
- Comparar: `GET /api/tramites/{id}/versiones` (y dif en front).
- Imprimir: `GET /api/tramites/{id}` (el front imprime con `tramite-print-view`).

## Validaciones clave

- Campos obligatorios dependen del tipo de trámite y forma jurídica (ver FormRequests).
- Versionado automático en cada `PUT` (guarda snapshot previo en `tramite_versiones`).

## Archivos incluidos

- `app/Models/*`
- `app/Http/Controllers/*`
- `app/Http/Requests/*`
- `app/Http/Resources/*`
- `database/migrations/*`
- `database/seeders/CatalogoSeeder.php`
- `routes/api.php`
- `config/cors.php` (usá el del proyecto; revisá orígenes)
