# Intégration de la vérification du statut d'abonnement

## Description

L'API de création d'utilisateur vérifie maintenant le statut d'abonnement de l'entreprise avant de créer un nouvel utilisateur.

## Configuration

### Variable d'environnement

Ajoutez dans votre fichier `.env` :

```env
LARAVEL_BASE_URL=http://127.0.0.1:8080
```

Cette URL est utilisée comme base pour appeler l'endpoint `/subscription-status/{companyId}`.

### Configuration dans `config/services.php`

La configuration est déjà ajoutée :

```php
'laravel' => [
    'base_url' => env('LARAVEL_BASE_URL', 'http://127.0.0.1:8080'),
],
```

## Fonctionnement

### Flux de création d'utilisateur

1. **Vérification de la clé API** - Authentification via header `Authorization: Bearer {api_key}`
2. **Validation des données** - Vérification des champs requis
3. **Vérification du statut d'abonnement** ⭐ **NOUVEAU**
   - Appel à `{LARAVEL_BASE_URL}/subscription-status/{company_id}`
   - Si l'abonnement n'est pas actif, retourne une erreur 403
4. **Vérification de l'utilisateur existant** - Vérifie si l'email existe déjà
5. **Création de l'utilisateur** - Crée l'utilisateur si toutes les vérifications passent

### Endpoint appelé

```
GET {LARAVEL_BASE_URL}/subscription-status/{companyId}
```

**Exemple :**
```
GET http://127.0.0.1:8080/subscription-status/165
```

### Format de réponse attendu

L'API de vérification d'abonnement doit retourner un JSON avec l'un des formats suivants :

**Format 1 :**
```json
{
  "active": true
}
```

**Format 2 :**
```json
{
  "status": "active"
}
```

Le code vérifie les deux formats pour plus de flexibilité.

### Réponses de l'API

#### Succès (abonnement actif)
- L'utilisateur est créé normalement
- Retourne `201` avec le message "Utilisateur créé avec succès"

#### Erreur 403 (abonnement non actif)
```json
{
  "error": "Abonnement non actif",
  "message": "L'abonnement de cette entreprise n'est pas actif"
}
```

#### Erreur (impossible de vérifier)
Si l'API de vérification d'abonnement ne répond pas ou retourne une erreur :
```json
{
  "error": "Abonnement non actif",
  "message": "Impossible de vérifier le statut d'abonnement"
}
```

**Note :** Par sécurité, en cas d'erreur lors de la vérification, la création d'utilisateur est bloquée.

## Logs

Toutes les vérifications d'abonnement sont loggées :

- **Info** : Tentative de vérification avec `company_id` et URL
- **Info** : Statut récupéré avec succès
- **Warning** : Erreur HTTP lors de la vérification
- **Error** : Exception lors de la vérification

Exemple de log :
```
[2026-01-30 17:00:00] local.INFO: Vérification du statut d'abonnement {"company_id":165,"url":"http://127.0.0.1:8080/subscription-status/165"}
[2026-01-30 17:00:00] local.INFO: Statut d'abonnement récupéré {"company_id":165,"active":true,"response":{"active":true}}
```

## Personnalisation

### Modifier le comportement en cas d'erreur

Si vous souhaitez autoriser la création d'utilisateur même si la vérification d'abonnement échoue, modifiez la méthode `checkSubscriptionStatus()` dans `ExternalUserController.php` :

```php
// Au lieu de bloquer, autoriser par défaut
return [
    'active' => true, // Autoriser par défaut
    'message' => null
];
```

### Adapter le format de réponse

Si l'API de vérification d'abonnement utilise un format différent, modifiez la logique dans `checkSubscriptionStatus()` :

```php
// Exemple pour un format différent
$isActive = isset($data['subscription']) 
    && isset($data['subscription']['is_active']) 
    && $data['subscription']['is_active'] === true;
```

### Timeout

Le timeout par défaut est de 10 secondes. Pour le modifier :

```php
$response = Http::timeout(30)->get($url); // 30 secondes
```

## Test

Pour tester la vérification d'abonnement :

1. **Avec un abonnement actif :**
```bash
curl -X POST http://127.0.0.1:1500/api/external/users \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer gCw4Xnm4euKRoyUCB5aN81AsFlTCEAhMAoZumr6R" \
  -d '{
    "full_name": "Test User",
    "email": "test@example.com",
    "phone": "",
    "password": "password@2026",
    "company_id": 165
  }'
```

2. **Vérifier les logs :**
```bash
tail -f storage/logs/laravel.log | grep "abonnement"
```

## Dépannage

### L'API de vérification ne répond pas

1. Vérifiez que le serveur sur le port 8080 est démarré
2. Vérifiez que `LARAVEL_BASE_URL` est correctement configuré
3. Vérifiez les logs Laravel pour voir l'erreur exacte

### L'abonnement est actif mais la création est bloquée

1. Vérifiez le format de réponse de l'API `/subscription-status/{companyId}`
2. Vérifiez les logs pour voir la réponse exacte
3. Adaptez la logique de vérification si nécessaire

