# Calendrier commercial

Le calendrier est disponible sur `/commercial/calendar`.

## Configuration Google

Définir les valeurs suivantes dans les secrets Symfony ou dans `.env.local` :

```dotenv
CALENDAR_TOKEN_ENCRYPTION_KEY=<clé aléatoire dédiée>
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_REDIRECT_URI=https://crm.example.com/commercial/calendar/google/callback
GOOGLE_CALENDAR_WEBHOOK_URL=https://crm.example.com/webhooks/google/calendar
```

La clé de chiffrement peut être générée avec :

```bash
php -r 'echo base64_encode(random_bytes(32)), PHP_EOL;'
```

Les URI de redirection doivent être déclarées à l’identique dans Google Cloud.
L’URL webhook doit être publique et en HTTPS.

## Traitements asynchrones

Le module utilise une outbox Doctrine, en complément de Messenger :

```bash
php bin/console app:calendar:google:process-outbox
php bin/console app:calendar:google:renew-watch
php bin/console app:calendar:reminders:due
```

Ces commandes sont prévues pour être exécutées régulièrement par le planificateur.
Une synchronisation de diagnostic peut être lancée avec
`app:calendar:google:sync`.

## Démonstration

```bash
php bin/console app:calendar:seed-demo --company-id=3
```

Cette commande ne crée aucune connexion Google réelle et est idempotente.
