Refine public documentation and code comments

This commit is contained in:
Alexandre NOEL 2026-09-04 13:37:22 +02:00
commit 0a482afe9d
16 changed files with 195 additions and 628 deletions

View file

@ -679,7 +679,7 @@ trait AnimalBrowseActions
$stmt->execute([':id' => $id]);
$prevWeight = $stmt->fetchColumn();
// PHOTOS : on récupère TOUT (public + privé)
// Charge les photos publiques et privées pour la fiche interne.
$stmt = $db->prepare('
SELECT id, filename, is_primary, is_public, caption, care_round_id, created_at
FROM animal_photos

View file

@ -248,7 +248,7 @@ trait AnimalMedicalActions
}
$vetName = $vetContact['name'] ?? null;
// 1️⃣ Insertion note médicale
// Enregistre la note médicale avant ses éventuelles pièces jointes.
$stmt = $db->prepare('
INSERT INTO medical_notes
(animal_id, kind, reason, symptoms, exam, diagnosis, plan, temperature_c, weight_kg, clinic_id, vet_name, clinic_contact_id, vet_contact_id, created_by, created_at)
@ -274,7 +274,7 @@ trait AnimalMedicalActions
':created' => self::now(),
]);
// 👉 RÉCUPÉRATION ID NOTE
// Identifiant utilisé pour rattacher les photos à la note.
$medicalNoteId = $db->lastInsertId();
if ((int) ($_POST['tariff_id'] ?? 0) > 0) {
PricingService::record(
@ -287,9 +287,7 @@ trait AnimalMedicalActions
);
}
// ==========================
// 2️⃣ Upload photos médicales
// ==========================
// Enregistre les photos médicales associées.
if (!empty($_FILES['medical_photos']['name'][0])) {
$uploadDir = PrivateMediaService::medicalDir($animalId);
@ -337,7 +335,7 @@ trait AnimalMedicalActions
}
}
// 3️⃣ Poids → measurements (graph)
// Ajoute le poids aux mesures utilisées par le graphique.
if ($weight !== '' && is_numeric($weight)) {
$db->prepare(
"
@ -352,10 +350,10 @@ trait AnimalMedicalActions
]);
}
// 4️⃣ Historique
// Ajoute l'intervention à l'historique de l'animal.
self::logHistory($animalId, 'medical', 'Note médicale ajoutée', $reason ?: null);
// 5️⃣ Touch animal
// Actualise la date de modification de la fiche.
if ($markSterilized) {
$db->prepare(
"UPDATE animals SET sterilized=1,sterilization_status='yes',sterilization_date=COALESCE(sterilization_date,date(:date)),sterilization_vet_contact_id=COALESCE(:vet,sterilization_vet_contact_id),sterilization_clinic_contact_id=COALESCE(:clinic,sterilization_clinic_contact_id) WHERE id=:id",

View file

@ -141,7 +141,7 @@ trait AnimalPhotoActions
continue;
}
// RÈGLE : jamais une privée en principale
// Une photo privée ne peut pas devenir la photo principale.
$isPrimary = !$hasPrimary && $isPublic === 1 ? 1 : 0;
if ($isPrimary === 1) {
$hasPrimary = true;
@ -221,7 +221,7 @@ trait AnimalPhotoActions
throw $e;
}
// Historique si tu veux
// Conserve la suppression dans l'historique de la fiche.
if (method_exists(__CLASS__, 'logHistory')) {
self::logHistory($animalId, 'photo', 'Photo principale modifiée');
}
@ -274,7 +274,7 @@ trait AnimalPhotoActions
@unlink($path);
}
// Si on a supprimé la principale, on met la plus récente restante en principale
// Remplace une photo principale supprimée par la plus récente encore disponible.
if ($wasPrimary) {
$pid = $db
->query('SELECT id FROM animal_photos WHERE animal_id=' . (int) $animalId . ' ORDER BY id DESC LIMIT 1')

View file

@ -204,7 +204,7 @@ trait AnimalRecordActions
'free_cat_captured_at' => '',
'free_cat_released_at' => '',
'free_cat_tracking_status' => 'present',
// adapte si tu as fiv/felv en colonnes
// Normalise les statuts FIV et FeLV enregistrés sur la fiche.
'fiv' => '',
'felv' => '',
];
@ -486,7 +486,7 @@ trait AnimalRecordActions
$birth_estimated_months = null;
}
// FIV/FELV (selon ton stockage actuel)
// Statuts FIV et FeLV enregistrés sur la fiche.
$fiv = array_key_exists('fiv', $_POST) ? (isset($_POST['fiv']) ? 1 : 0) : null;
$felv = array_key_exists('felv', $_POST) ? (isset($_POST['felv']) ? 1 : 0) : null;
@ -514,7 +514,7 @@ trait AnimalRecordActions
$birth_date = $birth_date === '' ? null : $birth_date;
$intake_date = $intake_date === '' ? null : $intake_date;
// Code interne : auto si vide (et idéalement readonly en edit)
// Génère le code interne lorsqu'il est absent.
$internal_code = trim((string) ($_POST['internal_code'] ?? ''));
if ($internal_code === '') {
$internal_code = self::nextInternalCode($name);
@ -528,7 +528,7 @@ trait AnimalRecordActions
$quarantine_until = date('Y-m-d', $ts + AppSettings::int('quarantine_days', 1, 90) * 86400);
}
} else {
// si pas en quarantaine, on vide la sortie (optionnel, mais logique)
// La date de sortie n'a de sens que pour un animal en quarantaine.
$quarantine_until = null;
}
@ -575,7 +575,7 @@ trait AnimalRecordActions
);
$depositorId = $depositor ? (int) $depositor['id'] : null;
// Pour l’instant, tu bloques le lieu actuel
// Le lieu actuel est conservé lorsque la fiche archivée est corrigée.
if ($isArchivedCorrection) {
$currentAddress = (string) ($old['current_address'] ?? '');
}
@ -758,9 +758,7 @@ trait AnimalRecordActions
}
if ($old) {
// Les nouvelles valeurs “connues” (ce que tu viens de sauver)
// Astuce: tu mets TOUT ce que tu passes à l’UPDATE ici, mais sans maintenance lourde :
// si tu ajoutes un champ au formulaire + UPDATE, tu l’ajoutes déjà ici de toute façon.
// Valeurs persistées à comparer avec l'état précédent de la fiche.
$new = [
'name' => $name,
'internal_code' => $internal_code,
@ -801,8 +799,7 @@ trait AnimalRecordActions
'quarantine_until' => $quarantine_until,
'fiv' => $fiv,
'felv' => $felv,
// ajoute ici uniquement les champs que tu SAUVEGARDES dans UPDATE
// (si demain tu ajoutes 3 champs au form, tu les ajouteras déjà à l’UPDATE -> copie/colle aussi ici)
// Cette liste doit rester alignée sur les champs écrits par la requête UPDATE.
];
// Champs à ignorer (bruit)

View file

@ -426,7 +426,7 @@ final class AnimalsController
throw $e;
}
// Historique (optionnel)
// Historique associé à la modification.
if (method_exists(__CLASS__, 'logHistory')) {
self::logHistory(
$animalId,
@ -486,7 +486,7 @@ final class AnimalsController
try {
$svc->refreshByChip($id, $chipId);
} catch (Throwable $e) {
// on laisse le cache en "error"
// Le cache conserve l'état d'erreur fourni par le service.
}
$cached = $svc->getCachedByAnimal($id);
$stale = $svc->isStale($cached, 86400);