Files
yogibook_aury_new/public/api_medical_certificates_delete.php
T
2026-08-22 07:57:06 +02:00

92 lines
2.9 KiB
PHP

<?php
/**
* api_medical_certificates_delete.php
* --------------------------------------------------------------------------
* Elimina un certificato medico dell'utente autenticato (con ownership check).
*
* Posizione: public/api/api_medical_certificates_delete.php
* Metodo: POST
* Auth: Bearer token (Sanctum) via _bootstrap.php
*
* Body:
* - cert_id (int) id del certificato (idcertificateuserprofile)
* accettato sia via form-urlencoded sia via JSON.
*
* Tabella: certificateuserprofile
* --------------------------------------------------------------------------
*/
require_once __DIR__ . '/_bootstrap.php';
$userId = (int) $user->id;
$uploadDir = __DIR__ . '/../user/document/';
// ==========================================================================
// INPUT (JSON o form-urlencoded)
// ==========================================================================
$raw = file_get_contents('php://input');
$json = json_decode($raw, true);
if (is_array($json) && isset($json['cert_id'])) {
$certId = (int) $json['cert_id'];
} else {
$certId = (int) ($_POST['cert_id'] ?? 0);
}
if ($certId <= 0) {
http_response_code(400);
echo json_encode(['success' => false, 'message' => 'Parametro cert_id mancante.']);
exit;
}
// ==========================================================================
// 1) Recupera il certificato e verifica ownership
// ==========================================================================
$stmt = $db->prepare("
SELECT idcertificateuserprofile, filenamedocument
FROM certificateuserprofile
WHERE idcertificateuserprofile = :cid AND iduser = :uid
LIMIT 1
");
$stmt->execute([':cid' => $certId, ':uid' => $userId]);
$cert = $stmt->fetch();
if (!$cert) {
http_response_code(404);
echo json_encode(['success' => false, 'message' => 'Certificato non trovato.']);
exit;
}
// ==========================================================================
// 2) Elimina record + file
// ==========================================================================
try {
$del = $db->prepare("
DELETE FROM certificateuserprofile
WHERE idcertificateuserprofile = :cid AND iduser = :uid
LIMIT 1
");
$del->execute([':cid' => $certId, ':uid' => $userId]);
} catch (Throwable $e) {
http_response_code(500);
echo json_encode(['success' => false, 'message' => 'Errore durante la cancellazione.']);
exit;
}
// Rimuovi il file fisico (best effort)
$filename = (string) ($cert['filenamedocument'] ?? '');
if ($filename !== '') {
$path = $uploadDir . $filename;
if (is_file($path)) {
@unlink($path);
}
}
// ==========================================================================
// OUTPUT
// ==========================================================================
echo json_encode([
'success' => true,
'message' => 'Certificato eliminato.',
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);