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();