Compare commits

..

No commits in common. "dab7d5a625e1f8ea1091ed8a947682f8296f4056" and "d30f34d4333a331cf266d88d23546521dfe85a2e" have entirely different histories.

4 changed files with 6 additions and 1421 deletions

View File

@ -1,48 +0,0 @@
<?php
namespace App\Http\Controllers\Api\V1\Admin;
use App\Http\Controllers\Controller;
use App\Models\Group;
use Illuminate\Http\Request;
class GroupsController extends Controller
{
public function index(Request $request, int $eventId)
{
$q = Group::where('event_id', $eventId)
->withCount('registrations')
->with(['registrations.player' => function($q){ $q->select('id','name','phone','email'); }])
->orderByDesc('id');
if ($request->filled('search')) {
$s = trim($request->get('search'));
$q->where('group_code', 'ilike', "%{$s}%");
}
$items = $q->paginate((int)($request->get('per_page', 25)));
// Normalize response
$items->getCollection()->transform(function($g){
return [
'id' => $g->id,
'group_code' => $g->group_code,
'size_target' => (int)$g->size_target,
'status' => $g->status,
'registrations_count' => (int)$g->registrations_count,
'members' => $g->registrations->map(function($r){
return [
'registration_id' => $r->id,
'type' => $r->type,
'status' => $r->status,
'name' => $r->player?->name,
'phone' => $r->player?->phone,
'email' => $r->player?->email,
];
})->values(),
];
});
return response()->json($items);
}
}

View File

@ -17,51 +17,18 @@ class PairingController extends Controller
{
$code = $request->validated()['registration_code'];
$registration = Registration::where('registration_code', $code)
->with('player', 'flightMember.flight.members.registration.player')
->firstOrFail();
$registration = Registration::where('registration_code', $code)->with('player')->firstOrFail();
$flightMember = $registration->flightMember;
$flight = $flightMember?->flight;
$members = [];
if ($flight) {
foreach ($flight->members as $m) {
$members[] = [
'seat' => (int) $m->seat_no,
'name' => $m->registration?->player?->name,
'band' => $m->registration?->handicap_band,
'hcp' => $m->registration?->handicap_value,
'is_you' => $m->registration_id === $registration->id,
];
}
}
// Mask phone for UI: +62***1234
$phone = $registration->player->phone;
$masked = $this->maskPhone($phone);
return response()->json([
'registration' => [
'status' => $registration->status,
'player' => [
'name' => $registration->player->name,
'band' => $registration->handicap_band,
'handicap' => $registration->handicap_value,
],
'preferences' => [
'pairing_mode' => $registration->pairing_mode,
'pairing_mode_label' => strtolower($registration->pairing_mode) === 'LEVEL' ? 'level' : (strtolower($registration->pairing_mode) === 'RANDOM' ? 'random' : 'balanced'),
],
],
'flight' => $flight ? [
'code' => $flight->code,
'course' => $flight->course,
'start_hole' => (int) $flight->start_hole,
'start_tee' => $flight->start_tee,
'is_final' => $flight->status === 'FINAL',
] : null,
'members' => $members,
'registration_id' => $registration->id,
'masked_phone' => $masked,
]);
}
public function requestOtp(PairingOtpRequest $request, OtpService $otpService)
{
$registrationId = $request->validated()['registration_id'];

1332
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -15,7 +15,6 @@ use App\Http\Controllers\Api\V1\Admin\PaymentsController as AdminPaymentsControl
use App\Http\Controllers\Api\V1\Admin\PairingAdminController;
use App\Http\Controllers\Api\V1\Admin\EventAdminController;
use App\Http\Controllers\Api\V1\Admin\ImportController;
use App\Http\Controllers\Api\V1\Admin\GroupsController as AdminGroupsController;
@ -44,7 +43,6 @@ Route::middleware('auth:sanctum')->group(function () {
Route::get('/admin/events/{event}/dashboard', [DashboardController::class, 'show']);
Route::get('/admin/events/{event}/registrations', [AdminRegistrationsController::class, 'index']);
Route::get('/admin/events/{event}/groups', [AdminGroupsController::class, 'index']);
Route::patch('/admin/registrations/{registration}', [AdminRegistrationsController::class, 'update']);
Route::get('/admin/events/{event}/flights', [AdminFlightsController::class, 'index']);