country + status added and other changes

This commit is contained in:
2026-06-10 18:02:17 +05:45
parent 5a085148b4
commit a551ca538e
16 changed files with 1386 additions and 293 deletions
@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\Models\Country;
use App\Models\GameSession;
use App\Models\GameShot;
use App\Models\Registration;
@@ -10,13 +11,28 @@ use Illuminate\Support\Facades\Cache;
class RegistrationController extends Controller
{
public function index()
public function index(Request $request)
{
$registrations = Registration::orderBy('id', 'desc')->paginate(20);
$search = trim($request->input('search', ''));
return view('registrations', compact('registrations'));
$query = Registration::with(['sessions.shots', 'comments']);
if ($search) {
$query->where(function ($q) use ($search) {
$q->where('name', 'like', "%{$search}%")
->orWhere('phone', 'like', "%{$search}%")
->orWhere('email', 'like', "%{$search}%");
});
}
$registrations = $query->orderBy('id', 'desc')->paginate(20)->withQueryString();
$data['registrations'] = $registrations;
$data['search'] = $search;
$data['countries'] = Country::where('status', 1)->orderBy('title')->get(['id','title','country_flag']);
return view('registrations', $data);
}
public function create()
{
return view('registrations.create');
@@ -311,5 +327,51 @@ class RegistrationController extends Controller
return view('leaderboard', $data);
}
public function history($id)
{
$reg = Registration::with(['sessions.shots'])->findOrFail($id);
$sessions = $reg->sessions
->sortByDesc('play_date')
->map(fn($s) => [
'date' => $s->play_date,
'score' => $s->score,
'shots' => $s->shots->sortBy('shot_number')->map(fn($sh) => (bool)$sh->result)->values(),
])->values();
return response()->json(['sessions' => $sessions]);
}
public function updateCountry(Request $request, $id)
{
$request->validate([
'country_id' => 'required|exists:countries,id',
]);
$registration = Registration::findOrFail($id);
$registration->update(['country_id' => $request->country_id]);
return response()->json([
'status' => 'ok',
'country_id' => $registration->country_id,
'country_name' => $registration->country->title,
]);
}
public function updateStatus(Request $request, $id)
{
$request->validate([
'status' => 'required|in:hot,warm,cold',
]);
$registration = Registration::findOrFail($id);
$registration->update(['status' => $request->status]);
return response()->json([
'status' => 'ok',
'value' => $registration->status,
]);
}
}