Files
alrahma_sunday_school_api/app/Http/Controllers/Api/BadgeScan/BadgeScanController.php
T
2026-06-04 02:41:08 -04:00

56 lines
1.5 KiB
PHP

<?php
namespace App\Http\Controllers\Api\BadgeScan;
use App\Http\Controllers\Api\Core\BaseApiController;
use App\Services\BadgeScan\BadgeScanService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Symfony\Component\HttpFoundation\Response;
class BadgeScanController extends BaseApiController
{
public function __construct(
private BadgeScanService $badgeScan,
) {
parent::__construct();
}
/**
* Public kiosk endpoint — POST JSON or form (legacy RFIDController::process).
*/
public function scan(Request $request): JsonResponse
{
$validator = Validator::make($request->all(), [
'badge_scan' => ['required', 'string', 'max:255'],
]);
if ($validator->fails()) {
return $this->respondValidationError($validator->errors()->toArray());
}
$result = $this->badgeScan->processScan($validator->validated()['badge_scan']);
if (! $result['recognized']) {
return $this->error($result['message'], Response::HTTP_NOT_FOUND);
}
return $this->success([
'recognized' => true,
'user_id' => $result['user_id'] ?? null,
'display_name' => $result['display_name'] ?? null,
], $result['message']);
}
/**
* Authenticated scan log listing (legacy RFIDController::log).
*/
public function logs(): JsonResponse
{
return $this->success([
'logs' => $this->badgeScan->scanLogRows(),
]);
}
}