checkOngoingCreditRequest(); /* echo '
';
        print_r($credit_request);
        echo '
'; */ if ($credit_request) { $last_update = \Carbon\Carbon::parse($credit_request['last_update_date']); $now = \Carbon\Carbon::now(); $interval = $now->diffInDays($last_update); if ($interval <= 60) { // 2 mois maximum /* include(_CRED_MODULES_PATH_ . 'credit-reminder-btn.php'); */ return true; } else { setcookie('credit_data', '', time() - 3600, '/'); return false; } } } public function display_credit_reminder_modal() { if($this->display_credit_reminder()) { include(_CRED_MODULES_PATH_ . 'credit-reminder-modal.php'); } } public function display_credit_reminder_btn() { if($this->display_credit_reminder()) { include(_CRED_MODULES_PATH_ . 'credit-reminder-btn.php'); } } /** * Envoie des rappels par email pour les crédits en attente. * Cette méthode doit être appelée dans un contexte WordPress où la fonction wp_mail est disponible. */ public function send_reminder_email() { global $wpdb; $now = Carbon::now(); $model = new \models\CRED_credit(); $credit_types = $model->getCreditTypes(); $one_day = 1; // Carbon gère la différence en jours directement $results = $wpdb->get_results(" SELECT c.idCredit, c.type_credit, c.create_date, c.last_step, c.reminder_sent, c.last_reminder, c.token, e.email, e.nom, e.prenom FROM cdf_Credit c JOIN cdf_Emprunteur e ON e.FK_demande_creditdirect = c.idCredit WHERE e.email IS NOT NULL AND e.email <> '' AND c.create_date >= DATE_SUB(NOW(), INTERVAL 3 MONTH) AND ( (c.type_credit = 'am' AND c.last_step = 1) OR (c.type_credit <> 'am' AND c.last_step < 4) ) AND c.type_credit NOT IN ('am','amr','cied','frais_notaire','cdp') "); /* echo '
';
        print_r($results);
        echo '
'; die(); */ // getMain() est défini dans CRED_base et retourne l'instance de CRED_Main $main = $this->getMain(); $template_path = $main::template('credit-reminder-mail.php', 'email', true); $mail_ar = []; foreach ($results as $row) { /* echo '
';
            print_r($row);
            echo '
'; */ $send = false; $reminder_to_send = null; $create_date = Carbon::parse($row->create_date); $last_reminder = $row->last_reminder ? Carbon::parse($row->last_reminder) : null; // Premier rappel : +3 heures $target1 = $create_date->copy()->addHours(3); $limit_target1 = $create_date->copy()->addDays(1); // Deuxième rappel : +7 jours $target2 = $create_date->copy()->addDays(7); $limit_target2 = $create_date->copy()->addDays(8); // Troisième rappel : +1 mois $target3 = $create_date->copy()->addMonth(); if ((is_null($row->reminder_sent) || $row->reminder_sent == 0)) { // Tolérance : 1h if ($now->greaterThanOrEqualTo($target1) && $now->lessThan($limit_target1) && ($last_reminder === null || $last_reminder->diffInHours($now) >= 1)) { $send = true; $reminder_to_send = 1; } } elseif ($row->reminder_sent == 1) { // Tolérance : 1 jour if ($now->greaterThanOrEqualTo($target2) && $now->lessThan($limit_target2) && ($last_reminder === null || $last_reminder->diffInDays($now) >= 1)) { $send = true; $reminder_to_send = 2; } } elseif ($row->reminder_sent == 2) { // Tolérance : 1 jour if ($now->greaterThanOrEqualTo($target3) && ($last_reminder === null || $last_reminder->diffInDays($now) >= 1)) { $send = true; $reminder_to_send = 3; } } if ($send) { // Préparer l'email HTML via le template if(empty($row->email)) continue; if(in_array($row->email, $mail_ar)) continue; $mail_ar[] = $row->email; $vars = array( 'main' => $main, 'prenom' => $row->prenom, 'nom' => $row->nom, 'type_credit' => $credit_types[$row->type_credit], 'reminder_num' => $reminder_to_send, 'step' => $row->last_step, 'token' => $row->token ); $message = $main->renderTemplate($template_path, $vars); /* echo 'message : ' . $message; die(); */ $to = $row->email; $subject = 'Rappel concernant votre demande de crédit'; $headers = array('Content-Type: text/html; charset=UTF-8'); // Envoyer l'email /* $to = 'jps@esi-informatique.com'; */ wp_mail($to, $subject, $message, $headers); // Mettre à jour la base $wpdb->update( 'cdf_Credit', array( 'reminder_sent' => $reminder_to_send, 'last_reminder' => $now->toDateTimeString() ), array('idCredit' => $row->idCredit) ); } } } } // Initialiser le rappel CRED_Credit_Reminder::instance();