From 23def197c8899dc184838fec2f87a3ca4543726f Mon Sep 17 00:00:00 2001 From: stephan Date: Wed, 22 Jul 2026 15:15:38 -0400 Subject: [PATCH] =?UTF-8?q?MSIN-4328=20=E2=80=94=20Update=20SQL=20queries?= =?UTF-8?q?=20in=20ajax=5Fbib=5Frange.php=20and=20inc=5Ffx=5Fpromoteur.php?= =?UTF-8?q?=20to=20set=20par=5Fmaj=20alongside=20no=5Fbib=20and=20par=5Fda?= =?UTF-8?q?te=5Fbib,=20ensuring=20accurate=20timestamping=20for=20particip?= =?UTF-8?q?ant=20updates.=20Enhance=20fxChronotrackApiSync=20to=20include?= =?UTF-8?q?=20par=5Fdate=5Fbib=20in=20filtering=20logic.=20Increment=20ver?= =?UTF-8?q?sion=20code.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ajax_bib_range.php | 8 ++++++-- php/chronotrack_api/fx_chronotrack_sync.php | 12 ++++++++++- php/inc_fx_promoteur.php | 22 ++++++++++----------- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/ajax_bib_range.php b/ajax_bib_range.php index 70dcc05..fb17258 100644 --- a/ajax_bib_range.php +++ b/ajax_bib_range.php @@ -1274,7 +1274,9 @@ if ($action == 'reset_apply') { $sql = " UPDATE resultats_participants - SET no_bib = NULL + SET no_bib = NULL, + par_date_bib = NULL, + par_maj = '" . fxGetDateTime() . "' WHERE par_id = $par_id AND is_cancelled = 0 "; @@ -1343,7 +1345,9 @@ if ($action == 'reset_all_apply') { $sql = " UPDATE resultats_participants - SET no_bib = NULL + SET no_bib = NULL, + par_date_bib = NULL, + par_maj = '" . fxGetDateTime() . "' WHERE par_id = $par_id AND is_cancelled = 0 "; diff --git a/php/chronotrack_api/fx_chronotrack_sync.php b/php/chronotrack_api/fx_chronotrack_sync.php index c2842fd..59ad249 100644 --- a/php/chronotrack_api/fx_chronotrack_sync.php +++ b/php/chronotrack_api/fx_chronotrack_sync.php @@ -228,6 +228,7 @@ function fxChronotrackApiSyncPickTeamRepresentative(array $tabMembers) { * MSIN-4328 — éligibles dont par_maj > dernier push (ou tous si jamais poussé). * Inclut aussi no_bib_remis_date : le check-in « dossard récupéré » met souvent * par_maj = par_maj (n’incrémente pas) mais rafraîchit no_bib_remis_date. + * Inclut aussi par_date_bib (filet si un chemin dossard oublie par_maj). */ function fxChronotrackApiSyncFilterChangedSincePush(array $tabTransferable, $strLastPushAt) { $strLastPushAt = trim((string)$strLastPushAt); @@ -257,6 +258,15 @@ function fxChronotrackApiSyncFilterChangedSincePush(array $tabTransferable, $str $intRemis = strtotime($strRemisDate); if ($intRemis !== false && $intRemis > $intLast) { $tabOut[] = $arrItem; + continue; + } + } + // MSIN-4328 — assignation dossard (par_date_bib) sans par_maj + $strDateBib = trim((string)($arrItem['row']['par_date_bib'] ?? '')); + if ($strDateBib !== '' && $strDateBib !== '0000-00-00 00:00:00') { + $intDateBib = strtotime($strDateBib); + if ($intDateBib !== false && $intDateBib > $intLast) { + $tabOut[] = $arrItem; } } } @@ -707,7 +717,7 @@ function fxChronotrackApiSyncLoadMs1Participants($intEveId) { $sql = "SELECT p.par_id, p.par_id_original, p.epr_id, p.pec_id, p.rol_id, p.par_equipe, p.par_nom_equipe," . " p.par_prenom, p.par_nom, p.par_sexe," - . " p.par_naissance, p.no_bib, p.no_bib_remis, p.no_bib_remis_date, p.par_statut_course," + . " p.par_naissance, p.no_bib, p.no_bib_remis, p.no_bib_remis_date, p.par_date_bib, p.par_statut_course," . " p.par_ville, p.par_adresse, p.par_codepostal," . " p.is_cancelled, p.par_maj, p.ct_entry_id," . " ec.pec_equipe, ec.no_equipe, ec.pec_nom_equipe," diff --git a/php/inc_fx_promoteur.php b/php/inc_fx_promoteur.php index 5a15150..4720943 100644 --- a/php/inc_fx_promoteur.php +++ b/php/inc_fx_promoteur.php @@ -1824,7 +1824,7 @@ function fxSetBibNumbers($tab_data, $int_epr_id, $int_start, $int_finish, $int_t } // resultats_participants - $sqlUpdate = "UPDATE resultats_participants SET no_bib = null, par_date_bib = null WHERE epr_id = " . intval($int_epr_id); + $sqlUpdate = "UPDATE resultats_participants SET no_bib = null, par_date_bib = null, par_maj = '" . fxGetDateTime() . "' WHERE epr_id = " . intval($int_epr_id); $qryUpdate = $objDatabase->fxQuery($sqlUpdate); if (!$qryUpdate) { @@ -1914,15 +1914,14 @@ function fxSetBibNumbers($tab_data, $int_epr_id, $int_start, $int_finish, $int_t $strNewBibBatch = ($str_action == 'reset') ? '' : (string)($intNoBib + $intCtr); $sqlUpdate = "UPDATE resultats_participants "; if ($str_action == 'reset') { - $sqlUpdate .= "SET no_bib = '', par_date_bib = null"; + // MSIN-4328 — par_maj pour repousser vers ChronoTrack + $sqlUpdate .= "SET no_bib = '', par_date_bib = null, par_maj = '" . fxGetDateTime() . "'"; // $sqlUpdate .= "SET no_bib = ''"; } else { if($tabInscriptions[$i]['par_date_bib'] == null){ - $sqlUpdate .= "SET par_date_bib = '" . fxGetDateTime() . "', no_bib = '" . $objDatabase->fxEscape($intNoBib + $intCtr) . "'"; + $sqlUpdate .= "SET par_date_bib = '" . fxGetDateTime() . "', no_bib = '" . $objDatabase->fxEscape($intNoBib + $intCtr) . "', par_maj = '" . fxGetDateTime() . "'"; } else{ - $sqlUpdate .= "SET no_bib = '" . $objDatabase->fxEscape($intNoBib + $intCtr) . "'"; -// $sqlUpdate .= "SET no_bib = '" . $objDatabase->fxEscape($intNoBib + $intCtr) . "', par_maj = '" . fxGetDateTime() . "'"; -// $sqlUpdate .= "SET no_bib = '" . $objDatabase->fxEscape($intNoBib + $intCtr) . "', par_modification_promoteur = 1, par_maj = '" . fxGetDateTime() . "'"; + $sqlUpdate .= "SET no_bib = '" . $objDatabase->fxEscape($intNoBib + $intCtr) . "', par_maj = '" . fxGetDateTime() . "'"; } } @@ -1991,11 +1990,10 @@ function fxSetBibNumbers($tab_data, $int_epr_id, $int_start, $int_finish, $int_t $strOldBibEq = (string)($tabEquipe[$j]['no_bib'] ?? ''); $strNewBibEq = (string)$intNoBib; if($tabInscriptions[$i]['par_date_bib'] == null){ - $sqlUpdatePart = "UPDATE resultats_participants SET par_date_bib = '" . fxGetDateTime() . "', no_bib = '" . $objDatabase->fxEscape($intNoBib). "' WHERE par_id = " . $intParEqBatch; + $sqlUpdatePart = "UPDATE resultats_participants SET par_date_bib = '" . fxGetDateTime() . "', no_bib = '" . $objDatabase->fxEscape($intNoBib). "', par_maj = '" . fxGetDateTime() . "' WHERE par_id = " . $intParEqBatch; } else{ - $sqlUpdatePart = "UPDATE resultats_participants SET no_bib = '" . $objDatabase->fxEscape($intNoBib) . "' WHERE par_id = " . $intParEqBatch; -// $sqlUpdatePart = "UPDATE resultats_participants SET par_maj = '" . fxGetDateTime() . "', no_bib = '" . $objDatabase->fxEscape($intNoBib) . "' WHERE par_id = " . intval($tabEquipe[$j]['par_id']); -// $sqlUpdatePart = "UPDATE resultats_participants SET par_maj = '" . fxGetDateTime() . "', par_modification_promoteur = 1, no_bib = '" . $objDatabase->fxEscape($intNoBib) . "' WHERE par_id = " . intval($tabEquipe[$j]['par_id']); + // MSIN-4328 — par_maj pour repousser vers ChronoTrack + $sqlUpdatePart = "UPDATE resultats_participants SET no_bib = '" . $objDatabase->fxEscape($intNoBib) . "', par_maj = '" . fxGetDateTime() . "' WHERE par_id = " . $intParEqBatch; } $qryUpdatePart = $objDatabase->fxQuery($sqlUpdatePart); if (!$qryUpdatePart) { @@ -8511,10 +8509,12 @@ function fxTryAssignNextBibForParticipant($epr_id, $par_id, $tabRanges, $mode, & function fxApplyBatchParticipantBib($epr_id, $par_id, $foundBib) { global $objDatabase; + // MSIN-4328 — par_maj pour que ChronoTrack détecte le changement de dossard $sqlUpdate = " UPDATE resultats_participants SET no_bib = " . intval($foundBib) . ", - par_date_bib = IFNULL(par_date_bib, NOW()) + par_date_bib = IFNULL(par_date_bib, NOW()), + par_maj = '" . fxGetDateTime() . "' WHERE par_id = " . intval($par_id) . " AND is_cancelled = 0 AND (no_bib IS NULL OR no_bib = '' OR no_bib = 0)