Files
intaleq_v2/app/Http/Controllers/Admin/PassengerManagementController.php
2026-04-22 21:59:56 +03:00

75 lines
2.3 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Passenger;
use App\Helpers\LegacyEncryption;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\DB;
/**
* Admin Passenger Management Controller
*/
class PassengerManagementController extends Controller
{
private LegacyEncryption $enc;
public function __construct(LegacyEncryption $enc)
{
$this->enc = $enc;
}
/** GET /v2/admin/passengers */
public function index(Request $request): JsonResponse
{
$status = $request->input('status', 'notDeleted');
$page = (int) $request->input('page', 1);
$limit = min((int) $request->input('limit', 20), 100);
$passengers = DB::connection('primary')->table('passengers')
->where('status', $status)
->orderBy('created_at', 'desc')
->skip(($page - 1) * $limit)
->take($limit)
->get();
$passengers = $passengers->map(function ($p) {
$arr = (array) $p;
return $this->enc->decryptFields($arr, Passenger::ENCRYPTED_FIELDS);
});
$total = DB::connection('primary')->table('passengers')->where('status', $status)->count();
return response()->json([
'status' => 'success',
'data' => $passengers,
'pagination' => ['page' => $page, 'limit' => $limit, 'total' => $total],
]);
}
/** GET /v2/admin/passengers/search?phone=XXX */
public function search(Request $request): JsonResponse
{
$phone = $request->input('phone');
if (!$phone) {
return response()->json(['status' => 'failure', 'message' => 'Phone required'], 400);
}
$encPhone = $this->enc->encrypt($phone);
$passenger = DB::connection('primary')->table('passengers')
->where('phone', $encPhone)
->first();
if (!$passenger) {
return response()->json(['status' => 'failure', 'message' => 'Passenger not found'], 404);
}
$data = $this->enc->decryptFields((array) $passenger, Passenger::ENCRYPTED_FIELDS);
unset($data['password'], $data['api_secret']);
return response()->json(['status' => 'success', 'data' => $data]);
}
}