# Versiones de app móvil (base de datos)

El sistema de versiones móviles persiste en las tablas `mobile_app` y `mobile_app_version`.

## Despliegue inicial

Ejecutar migraciones Doctrine:

```bash
php bin/console doctrine:migrations:migrate --no-interaction
```

Las aplicaciones y versiones se gestionan desde el dashboard o los endpoints admin.

## Endpoint público

### POST `/public/mobile-app-version`

Check de versión. Compara el build instalado con la versión actual (`isCurrent`).

```json
{
  "appKey": "trackingpremium",
  "companyId": 25,
  "platform": "ANDROID",
  "versionName": "1.1.0",
  "buildNumber": 10
}
```

Sin actualización:

```json
{
  "updateAvailable": false
}
```

Con actualización por tienda (`releaseType: UPDATE`):

```json
{
  "updateAvailable": true,
  "type": "UPDATE",
  "latestVersion": "1.3.0",
  "latestBuild": 18,
  "storeUrl": "https://play.google.com/...",
  "message": "A new version is available."
}
```

Con actualización in-app / OTA (`releaseType: BUILD`):

```json
{
  "updateAvailable": true,
  "type": "BUILD",
  "latestVersion": "1.3.0",
  "latestBuild": 18,
  "message": "A new version is available."
}
```

## Endpoints admin

Solo usuarios con tipo `ADMIN`.

### Aplicaciones — `/api/mobile-app`

- `GET /list` — filtros: `appType`, `platform`, `companyId`, `isActive`
- `GET /get?id=`
- `POST /create`
- `PATCH /update`
- `PATCH /deactivate`

### Versiones — `/api/mobile-app/{appId}/versions`

- `GET /list`
- `POST /create` — campos: `versionName`, `releaseType` (`BUILD` | `UPDATE`), `isCurrent`, `releaseNotes`; `buildNumber` obligatorio solo para `BUILD` (en `UPDATE` se hereda de la versión actual); `releasedAt` opcional al enviar (ISO 8601, por defecto fecha/hora actual). Las fechas en respuesta usan formato `dd/mm/yyyy HH:MM`
- `PATCH /update`
- `PATCH /deactivate`
- `PATCH /set-current`

## Producción

Los datos viven en MySQL y se gestionan desde el dashboard o los endpoints admin.
