<?php

declare(strict_types=1);

namespace App\Services;

class EmailTemplates {
  /**
   * Template d'email de bienvenue
   */
  public static function getWelcomeTemplate(string $name, string $username, string $password): string {
    return "
            Bonjour $name,<br><br>
            Votre compte a été créé avec succès sur <b>GeoSector</b>.<br><br>
            <b>Identifiant :</b> $username<br>
            <b>Mot de passe :</b> $password<br><br>
            À très bientôt,<br>
            L'équipe GeoSector<br>
            <span style='color:#666; font-size:12px;'>Support : support@geosector.fr</span>";
  }

  /**
   * Template d'email de bienvenue - Identifiant uniquement
   */
  public static function getWelcomeUsernameTemplate(string $name, string $username): string {
    return "
            Bonjour $name,<br><br>
            Votre compte a été créé avec succès sur <b>GeoSector</b>.<br><br>
            Voici votre identifiant de connexion :<br>
            <div style='background:#f5f5f5; padding:15px; margin:20px 0; border-left:4px solid #007bff;'>
                <b style='font-size:16px;'>Identifiant :</b> <span style='font-size:18px; color:#333;'>$username</span>
            </div>
            <p style='color:#666; font-size:14px;'>
                <b>Important :</b> Conservez précieusement cet identifiant, vous en aurez besoin pour vous connecter.
            </p>
            <p>
                Votre mot de passe vous sera communiqué dans un email séparé pour des raisons de sécurité.
            </p>
            <p>
                Une fois que vous aurez reçu votre mot de passe, vous pourrez vous connecter sur 
                <a href=\"https://app3.geosector.fr\" style='color:#007bff;'>app3.geosector.fr</a>
            </p>
            <br>
            À très bientôt,<br>
            L'équipe GeoSector";
  }

  /**
   * Template d'email de bienvenue - Mot de passe uniquement
   */
  public static function getWelcomePasswordTemplate(string $name, string $password): string {
    return "
            Bonjour $name,<br><br>
            Suite à la création de votre compte <b>GeoSector</b>, voici votre mot de passe :<br><br>
            <div style='background:#f5f5f5; padding:15px; margin:20px 0; border-left:4px solid #28a745;'>
                <b style='font-size:16px;'>Mot de passe :</b> <span style='font-family:monospace; font-size:18px; color:#333;'>$password</span>
            </div>
            <p style='color:#d73502; font-size:14px;'>
                <b>⚠ Sécurité :</b> Pour garantir la sécurité de votre compte, nous vous recommandons 
                de conserver ce mot de passe en lieu sûr et de ne jamais le partager.
            </p>
            <p>
                Vous pouvez maintenant vous connecter avec votre identifiant (reçu dans un email précédent) 
                et ce mot de passe sur <a href=\"https://app3.geosector.fr\" style='color:#007bff;'>app3.geosector.fr</a>
            </p>
            <p style='background:#fff3cd; padding:10px; border-radius:5px; margin-top:20px;'>
                <b>Rappel :</b> Ne communiquez jamais votre mot de passe à un tiers. L'équipe GeoSector 
                ne vous demandera jamais votre mot de passe par email ou téléphone.
            </p>
            <br>
            À très bientôt,<br>
            L'équipe GeoSector";
  }

  /**
   * Template d'email pour mot de passe perdu
   */
  public static function getLostPasswordTemplate(string $name, string $username, string $password): string {
    return "
            Bonjour $name,<br><br>
            Vous avez demandé la réinitialisation de votre mot de passe sur <b>GeoSector</b>.<br><br>
            <b>Nouveau mot de passe :</b> $password<br><br>
            À très bientôt,<br>
            L'équipe GeoSector<br>
            <span style='color:#666; font-size:12px;'>Support : support@geosector.fr</span>";
  }

  /**
   * Template d'email pour alerte
   */
  public static function getAlertTemplate(string $subject, string $message): string {
    return "
            <h2>$subject</h2>
            <p>$message</p>
            <br>
            <p>L'équipe GeoSector</p>";
  }

  /**
   * Template de reçu de passage (ancien format simple)
   * @deprecated Utiliser getReceiptDonationTemplate() pour les reçus de don
   */
  public static function getReceiptTemplate(string $name, string $date, string $address, string $amount, string $paymentMethod): string {
    return "
            <h2>Reçu de passage GeoSector</h2>
            <p>Bonjour $name,</p>
            <p>Nous vous remercions pour votre contribution lors de notre passage.</p>
            <br>
            <table style='width:100%; border-collapse: collapse;'>
              <tr>
                <td style='padding:8px; border:1px solid #ddd;'><b>Date :</b></td>
                <td style='padding:8px; border:1px solid #ddd;'>$date</td>
              </tr>
              <tr>
                <td style='padding:8px; border:1px solid #ddd;'><b>Adresse :</b></td>
                <td style='padding:8px; border:1px solid #ddd;'>$address</td>
              </tr>
              <tr>
                <td style='padding:8px; border:1px solid #ddd;'><b>Montant :</b></td>
                <td style='padding:8px; border:1px solid #ddd;'>$amount €</td>
              </tr>
              <tr>
                <td style='padding:8px; border:1px solid #ddd;'><b>Mode de paiement :</b></td>
                <td style='padding:8px; border:1px solid #ddd;'>$paymentMethod</td>
              </tr>
            </table>
            <br>
            <p>Votre soutien est précieux pour notre amicale. Nous vous en remercions chaleureusement.</p>
            <p>À bientôt,</p>
            <p>L'équipe GeoSector</p>";
  }

  /**
   * Template d'email pour reçu de don avec pièce jointe PDF
   * Utilisé lors de l'envoi automatique des reçus pour les dons (fk_type=1)
   *
   * @param array $data Données du reçu (passage_id, entite_name, donor_name, amount, donation_date, payment_method, entite_address, entite_email)
   * @return string HTML de l'email
   */
  public static function getReceiptDonationTemplate(array $data): string {
    // Extraction des données avec valeurs par défaut
    $passageId = $data['passage_id'] ?? '';
    $entiteName = htmlspecialchars($data['entite_name'] ?? 'Amicale des Sapeurs-Pompiers');
    $donorName = htmlspecialchars($data['donor_name'] ?? '');
    $amount = htmlspecialchars($data['amount'] ?? '0,00');
    $donationDate = htmlspecialchars($data['donation_date'] ?? date('d/m/Y'));
    $paymentMethod = htmlspecialchars($data['payment_method'] ?? 'Espèces');
    $entiteAddress = htmlspecialchars($data['entite_address'] ?? '');
    $entiteEmail = htmlspecialchars($data['entite_email'] ?? '');

    return "
<!DOCTYPE html>
<html>
<head>
    <meta charset='UTF-8'>
    <style>
        body { font-family: Arial, sans-serif; line-height: 1.6; color: #333; }
        .container { max-width: 600px; margin: 0 auto; padding: 20px; }
        .passage-id { text-align: right; font-size: 10px; color: #999; margin-bottom: 20px; }
        .header { background-color: #f4f4f4; padding: 20px; text-align: center; border-radius: 5px; }
        .content { padding: 20px 0; }
        .footer { background-color: #f4f4f4; padding: 15px; text-align: center; font-size: 12px; border-radius: 5px; margin-top: 20px; }
        .amount { font-size: 24px; font-weight: bold; color: #2c5aa0; }
    </style>
</head>
<body>
    <div class='container'>
        <div class='passage-id'>$passageId</div>

        <div class='header'>
            <h2>$entiteName</h2>
        </div>

        <div class='content'>
            <p>Bonjour Mme/M. $donorName,</p>

            <p>Nous vous remercions chaleureusement pour votre don de <span class='amount'>$amount €</span> effectué le $donationDate.</p>

            <p><strong>Mode de paiement :</strong> $paymentMethod</p>

            <p>Vous trouverez ci-joint votre reçu.</p>

            <p>Votre soutien est précieux pour nous permettre de poursuivre nos actions.</p>

            <p>Cordialement,<br>L'équipe de $entiteName</p>
        </div>

        <div class='footer'>
            <p><strong>$entiteName</strong><br>
            $entiteAddress<br>
            $entiteEmail</p>
        </div>
    </div>
</body>
</html>";
  }
}
