Refine public documentation and code comments
This commit is contained in:
parent
d7fb2b4413
commit
0a482afe9d
16 changed files with 195 additions and 628 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in a new issue