🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
113 lines
3.6 KiB
PHP
113 lines
3.6 KiB
PHP
#!/usr/bin/env php
|
|
<?php
|
|
|
|
/**
|
|
* Script de test pour générer manuellement un reçu
|
|
* Usage: php generate_receipt_manual.php <passage_id>
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
// Simuler l'environnement web pour AppConfig en CLI
|
|
if (php_sapi_name() === 'cli') {
|
|
$_SERVER['SERVER_NAME'] = 'dapp.geosector.fr'; // DEV
|
|
$_SERVER['HTTP_HOST'] = $_SERVER['SERVER_NAME'];
|
|
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
|
|
|
|
if (!function_exists('getallheaders')) {
|
|
function getallheaders() {
|
|
return [];
|
|
}
|
|
}
|
|
}
|
|
|
|
// Chargement de l'environnement
|
|
require_once __DIR__ . '/../../vendor/autoload.php';
|
|
require_once __DIR__ . '/../../src/Config/AppConfig.php';
|
|
require_once __DIR__ . '/../../src/Core/Database.php';
|
|
require_once __DIR__ . '/../../src/Services/LogService.php';
|
|
require_once __DIR__ . '/../../src/Services/ReceiptService.php';
|
|
|
|
// Vérifier qu'un ID de passage est fourni
|
|
if ($argc < 2) {
|
|
echo "Usage: php generate_receipt_manual.php <passage_id>\n";
|
|
exit(1);
|
|
}
|
|
|
|
$passageId = (int)$argv[1];
|
|
|
|
try {
|
|
echo "=== Test de génération de reçu ===\n";
|
|
echo "Passage ID: $passageId\n\n";
|
|
|
|
// Initialisation de la configuration
|
|
$appConfig = AppConfig::getInstance();
|
|
$dbConfig = $appConfig->getDatabaseConfig();
|
|
|
|
// Initialiser la base de données
|
|
Database::init($dbConfig);
|
|
$db = Database::getInstance();
|
|
|
|
echo "✓ Connexion à la base de données OK\n";
|
|
|
|
// Vérifier le passage
|
|
$stmt = $db->prepare('SELECT id, fk_type, encrypted_email, nom_recu FROM ope_pass WHERE id = ?');
|
|
$stmt->execute([$passageId]);
|
|
$passage = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
if (!$passage) {
|
|
echo "✗ Passage $passageId non trouvé\n";
|
|
exit(1);
|
|
}
|
|
|
|
echo "✓ Passage trouvé\n";
|
|
echo " - fk_type: " . $passage['fk_type'] . "\n";
|
|
echo " - encrypted_email: " . (!empty($passage['encrypted_email']) ? 'OUI' : 'NON') . "\n";
|
|
echo " - nom_recu: " . ($passage['nom_recu'] ?: 'vide') . "\n\n";
|
|
|
|
// Déchiffrer l'email
|
|
if (!empty($passage['encrypted_email'])) {
|
|
$email = \ApiService::decryptSearchableData($passage['encrypted_email']);
|
|
echo " - Email déchiffré: $email\n";
|
|
echo " - Email valide: " . (filter_var($email, FILTER_VALIDATE_EMAIL) ? 'OUI' : 'NON') . "\n\n";
|
|
} else {
|
|
echo "✗ Aucun email chiffré trouvé\n";
|
|
exit(1);
|
|
}
|
|
|
|
// Générer le reçu
|
|
echo "Génération du reçu...\n";
|
|
$receiptService = new \App\Services\ReceiptService();
|
|
$result = $receiptService->generateReceiptForPassage($passageId);
|
|
|
|
if ($result) {
|
|
echo "✓ Reçu généré avec succès !\n\n";
|
|
|
|
// Vérifier l'email dans la queue
|
|
$stmt = $db->prepare('SELECT id, to_email, status, created_at FROM email_queue WHERE fk_pass = ? ORDER BY created_at DESC LIMIT 1');
|
|
$stmt->execute([$passageId]);
|
|
$queueEmail = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
if ($queueEmail) {
|
|
echo "✓ Email ajouté à la queue\n";
|
|
echo " - Queue ID: " . $queueEmail['id'] . "\n";
|
|
echo " - Destinataire: " . $queueEmail['to_email'] . "\n";
|
|
echo " - Status: " . $queueEmail['status'] . "\n";
|
|
echo " - Créé: " . $queueEmail['created_at'] . "\n";
|
|
} else {
|
|
echo "✗ Aucun email trouvé dans la queue\n";
|
|
}
|
|
} else {
|
|
echo "✗ Échec de la génération du reçu\n";
|
|
echo "Consultez /var/www/geosector/api/logs/api.log pour plus de détails\n";
|
|
}
|
|
|
|
} catch (Exception $e) {
|
|
echo "✗ ERREUR: " . $e->getMessage() . "\n";
|
|
echo $e->getTraceAsString() . "\n";
|
|
exit(1);
|
|
}
|
|
|
|
echo "\n=== Fin du test ===\n";
|
|
exit(0);
|