Files
urukprize/backend/app/Controllers/QrController.php
T

54 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Controllers;
use Core\Request;
use Core\Response;
use App\Services\QrTokenService;
class QrController
{
/**
* GET /api/v1/qr/dynamic-token
* User's Flutter app requests a rotating QR token.
*/
public function getDynamicToken(Request $request): void
{
$userId = (int)$request->getHeader('x-user-id');
$res = QrTokenService::generateToken($userId);
if (!$res['success']) {
Response::forbidden($res['message']);
}
Response::success($res, 'Dynamic QR token generated.');
}
/**
* POST /api/v1/qr/verify-token
* Scanned by hospital/hotel front desk or verification portal.
*/
public function verifyToken(Request $request): void
{
$token = trim((string)$request->get('token'));
$partnerId = (int)$request->get('partner_id', 1);
$staffName = trim((string)$request->get('staff_name', 'موظف الاستقبال'));
$billAmount = (float)$request->get('bill_amount', 0.0);
$serviceName = trim((string)$request->get('service_name', 'استخدام خدمات الشريك'));
if (empty($token)) {
Response::error('QR token is required for verification.');
}
$res = QrTokenService::verifyScannedToken($token, $partnerId, $staffName, $billAmount, $serviceName);
if (!$res['success']) {
Response::error($res['message'], 400);
}
Response::success($res, 'Member verified successfully.');
}
}