Initial V2 commit
This commit is contained in:
74
app/Http/Controllers/Admin/PassengerManagementController.php
Normal file
74
app/Http/Controllers/Admin/PassengerManagementController.php
Normal file
@@ -0,0 +1,74 @@
|
||||
<?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]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user