ringfinger/backend/classes/controller/FingerprintDeleteController.php

53 lines
1.1 KiB
PHP

<?php
declare(strict_types=1);
final class FingerprintDeleteController extends AbstractController
{
protected string $route = '/api/v1/fingerprint/{fingerprintId}';
private int $fingerprintId;
public function __construct(string $url)
{
parent::__construct($url);
$this->fingerprintId = (int)$this->getUrlParamInt('fingerprintId');
}
public function handle(): void
{
if (!$this->isUserLoggedIn()) {
return;
}
parent::handle();
if ($this->response->getStatus() !== ServerStatus::OK) {
return;
}
try {
$db = new MySqlDatabase();
$this->response = new ApiJsonResponse();
$db->startTransaction();
$fingerprint = new Fingerprint($this->fingerprintId, $db);
if (!$this->hasUserPermission($fingerprint->getUserId())) {
return;
}
$qrCode = new QrCode($fingerprint->getFingerprintId(), $fingerprint->getFingerprint());
$fingerprint->Delete();
$qrCode->delete();
$db->commit();
} catch (Throwable $e) {
$this->response = new ApiJsonResponse(ServerStatus::BAD_REQUEST);
$this->response->setParameter('success', false);
$this->response->setMessage($e->getMessage());
}
}
}