# Guide de mise en place des interfaces Filament - TakeTako Trip

Ce document contient toutes les étapes pour mettre en place les interfaces complètes.

## ✅ Configuration terminée

1. **Panel Filament** configuré avec :
   - Inscription/Connexion activées
   - Réinitialisation mot de passe
   - Profil utilisateur  
   - Notifications base de données
   - Groupes de navigation
   - Thème personnalisé (orange)

2. **CompanyResource** complété avec :
   - Formulaire complet (informations, coordonnées, legacy)
   - Table avec colonnes, filtres, actions
   - Gestion du soft delete

## 📋 Prochaines étapes

Pour compléter rapidement toutes les interfaces, exécutez les commandes suivantes une par une :

### 1. Supprimer les resources vides et les recréer avec --generate

```bash
cd /Users/teugmopaveldurent/Dev/TakeTakoTravel/TakeTakoTrip

# Attention : Sauvegarder CompanyResource.php d'abord (déjà complété)
cp app/Filament/Resources/CompanyResource.php app/Filament/Resources/CompanyResource.php.backup

# Supprimer les resources vides
rm app/Filament/Resources/AgencyResource.php
rm app/Filament/Resources/RouteResource.php
rm app/Filament/Resources/JourneyResource.php
rm app/Filament/Resources/TicketResource.php
rm app/Filament/Resources/CashRegisterResource.php

# Supprimer leurs pages
rm -rf app/Filament/Resources/AgencyResource
rm -rf app/Filament/Resources/RouteResource
rm -rf app/Filament/Resources/JourneyResource
rm -rf app/Filament/Resources/TicketResource
rm -rf app/Filament/Resources/CashRegisterResource
```

### 2. Autoriser temporairement l'accès MySQL ou utiliser SQLite local

**Option A : Modifier .env pour utiliser SQLite temporairement**
```bash
# Dans .env
DB_CONNECTION=sqlite
# DB_HOST=taketakopay.com
# DB_PORT=3306
# DB_DATABASE=taketak1_taketako

# Créer la base SQLite
touch database/database.sqlite

# Migrer
php artisan migrate:fresh
```

**Option B : Autoriser votre IP sur le serveur distant**
- Connectez-vous au cPanel de taketakopay.com
- Remote MySQL → Add Access Host
- Ajoutez votre IP actuelle

### 3. Générer les Resources avec auto-génération

```bash
php artisan make:filament-resource Agency --generate --view
php artisan make:filament-resource Route --generate --view  
php artisan make:filament-resource Journey --generate --view
php artisan make:filament-resource Ticket --generate --view
php artisan make:filament-resource CashRegister --generate --view
```

### 4. Créer les Widgets pour le Dashboard

```bash
php artisan make:filament-widget DailySalesOverview --stats-overview
php artisan make:filament-widget RecentTicketsChart --chart
php artisan make:filament-widget CompanyStatsWidget --stats-overview
```

### 5. Personnaliser chaque Resource

Après génération automatique, personnaliser manuellement :

#### AgencyResource
- Ajouter icône : `heroicon-o-map-pin`
- Groupe : `'Gestion Entreprise'`
- Sort : `2`

#### RouteResource  
- Icône : `heroicon-o-map`
- Groupe : `'Opérations'`
- Sort : `1`

#### JourneyResource
- Icône : `heroicon-o-truck`
- Groupe : `'Opérations'`
- Sort : `2`

#### TicketResource
- Icône : `heroicon-o-ticket`
- Groupe : `'Ventes & Caisse'`
- Sort : `1`

#### CashRegisterResource
- Icône : `heroicon-o-banknotes`
- Groupe : `'Ventes & Caisse'`
- Sort : `2`

## 🎨 Personnalisation des formulaires

### Exemple : Améliorer RouteResource

```php
Forms\Components\Section::make('Informations de la ligne')
    ->schema([
        Forms\Components\Select::make('company_id')
            ->relationship('company', 'name')
            ->required(),
        
        Forms\Components\TextInput::make('name')
            ->label('Nom de la ligne')
            ->required()
            ->placeholder('Ex: Douala - Yaoundé Express'),
        
        Forms\Components\Grid::make(2)->schema([
            Forms\Components\TextInput::make('origin_city')
                ->label('Ville de départ')
                ->required(),
            
            Forms\Components\TextInput::make('destination_city')
                ->label('Ville d\'arrivée')
                ->required(),
        ]),
        
        Forms\Components\TextInput::make('distance_km')
            ->label('Distance (km)')
            ->numeric()
            ->suffix('km'),
        
        Forms\Components\TextInput::make('base_price')
            ->label('Prix de base')
            ->numeric()
            ->prefix('FCFA')
            ->required(),
    ])
```

## 🚀 Lancer le serveur et tester

```bash
php artisan serve

# Accéder à :
# http://localhost:8000/takadmin

# Créer un utilisateur si nécessaire :
php artisan make:filament-user
```

## 📊 Widgets à créer

### DailySalesOverview.php
```php
protected function getStats(): array
{
    return [
        Stat::make('Ventes du jour', '245,000 FCFA')
            ->description('32 billets vendus')
            ->descriptionIcon('heroicon-m-arrow-trending-up')
            ->color('success'),
        
        Stat::make('Caisses ouvertes', '5')
            ->description('3 agences actives')
            ->color('info'),
        
        Stat::make('Voyages aujourd\'hui', '12')
            ->description('8 départs, 4 arrivées')
            ->color('warning'),
    ];
}
```

## 🔧 Dépannage

### Erreur : Connection refused
→ Vérifier que MySQL distant autorise votre IP
→ Ou utiliser SQLite temporairement

### Erreur : Class not found
→ Exécuter `composer dump-autoload`
→ Vérifier les namespaces

### Formulaires vides après --generate
→ Normal si pas de connexion DB
→ Les compléter manuellement avec les exemples ci-dessus

## 📝 Checklist finale

- [ ] CompanyResource complet ✅
- [ ] AgencyResource généré et personnalisé
- [ ] RouteResource généré et personnalisé
- [ ] JourneyResource généré et personnalisé
- [ ] TicketResource généré et personnalisé
- [ ] CashRegisterResource généré et personnalisé
- [ ] 3 widgets dashboard créés
- [ ] Navigation groupée configurée
- [ ] Thème personnalisé appliqué
- [ ] Premier utilisateur créé
- [ ] Toutes les pages accessibles

---

**Temps estimé pour complétion manuelle** : 2-3 heures
**Temps estimé avec génération auto** : 30 minutes + personnalisation

Voulez-vous que je vous fournisse le code complet de chaque Resource à copier-coller ?
