Skip to content

Commit

Permalink
Try to fix select statement (WIP); refs #1614
Browse files Browse the repository at this point in the history
  • Loading branch information
gagnieray committed Dec 2, 2023
1 parent 402e9e7 commit 0009c92
Showing 1 changed file with 46 additions and 3 deletions.
49 changes: 46 additions & 3 deletions galette/lib/Galette/Repository/Reminders.php
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,8 @@ private function loadToRemind(Db $zdb, $type, $nomail = false)
array('r' => PREFIX_DB . self::TABLE),
'a.' . Members::PK . '=r.reminder_dest',
array(
'last_reminder' => new Expression('MAX(reminder_date)'),
'reminder_type' => new Expression('MAX(reminder_type)')
'last_reminder' => 'reminder_date',
'reminder_type' => 'reminder_type'
),
$select::JOIN_LEFT
)->join(
Expand All @@ -142,7 +142,21 @@ private function loadToRemind(Db $zdb, $type, $nomail = false)
}

$select->where('a.activite_adh=true')
->where('a.bool_exempt_adh=false');
->where('a.bool_exempt_adh=false')
->where('a.date_echeance IS NOT NULL');

// Inspect result set - step 1
// ---------------------------
// At this point, results are OK
// We get all the reminders stored.
$results_full = $zdb->execute($select);
foreach ($results_full as $k => $r) {
Analog::log(
'[Full results] Reminder result '. $k . ': ' .
print_r($r, true),
Analog::DEBUG
);
}

$now = new \DateTime();
$due_date = clone $now;
Expand All @@ -152,6 +166,7 @@ private function loadToRemind(Db $zdb, $type, $nomail = false)
'a.date_echeance',
$now->format('Y-m-d')
);
$select->where('r.reminder_date = (SELECT MAX(reminder_date) FROM devel_reminders WHERE reminder_dest = a.id_adh AND reminder_type = 2)');
} else {
$select->where->greaterThanOrEqualTo(
'a.date_echeance',
Expand All @@ -160,10 +175,38 @@ private function loadToRemind(Db $zdb, $type, $nomail = false)
'a.date_echeance',
$due_date->format('Y-m-d')
);
$select->where('r.reminder_date = (SELECT MAX(reminder_date) FROM devel_reminders WHERE reminder_dest = a.id_adh AND reminder_type = 1)');
}

// Inspect result set - step 2
// ---------------------------
// At this point, results are still OK
// We get all the past reminders stored of the required type only.
$results_before = $zdb->execute($select);
foreach ($results_before as $k => $r) {
Analog::log(
'[Before group] Reminder result '. $k . ': ' .
print_r($r, true),
Analog::DEBUG
);
}

$select->group('a.id_adh');

// Inspect result set - step 3
// ---------------------------
// At this point, grouped ids are correct, but reminder_date is not.
// reminder_date is the "oldest" one of the corresponding ungrouped reminders.
// It should be the most recent one.
$results_after = $zdb->execute($select);
foreach ($results_after as $k => $r) {
Analog::log(
'[After group] Reminder result '. $k . ': ' .
print_r($r, true),
Analog::DEBUG
);
}

$results = $zdb->execute($select);

foreach ($results as $r) {
Expand Down

0 comments on commit 0009c92

Please sign in to comment.