sites() ->withCount(['uptimeChecks', 'sslCertificates', 'brokenLinks']) ->latest() ->get(); // Get latest uptime check for each site $sites->each(function ($site) { $site->latestUptimeCheck = $site->uptimeChecks()->latest('checked_at')->first(); $site->latestSslCertificate = $site->sslCertificates()->latest('checked_at')->first(); }); return view('sites.index', compact('sites')); } /** * Show the form for creating a new resource. */ public function create() { return view('sites.create'); } /** * Store a newly created resource in storage. */ public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|string|max:255', 'url' => 'required|url|max:255', 'monitoring_enabled' => 'sometimes|nullable|in:on,off', ]); $site = Auth::user()->sites()->create([ 'name' => $validated['name'], 'url' => $validated['url'], 'monitoring_enabled' => $request->has('monitoring_enabled'), ]); return redirect()->route('sites.index') ->with('success', 'Site added successfully!'); } /** * Display the specified resource. */ public function show(Site $site) { $this->authorize('view', $site); return redirect()->route('dashboard.show', $site); } /** * Show the form for editing the specified resource. */ public function edit(Site $site) { $this->authorize('update', $site); return view('sites.edit', compact('site')); } /** * Update the specified resource in storage. */ public function update(Request $request, Site $site) { $this->authorize('update', $site); $validated = $request->validate([ 'name' => 'required|string|max:255', 'url' => 'required|url|max:255', 'monitoring_enabled' => 'boolean', ]); $site->update([ 'name' => $validated['name'], 'url' => $validated['url'], 'monitoring_enabled' => $request->has('monitoring_enabled'), ]); return redirect()->route('sites.index') ->with('success', 'Site updated successfully!'); } /** * Remove the specified resource from storage. */ public function destroy(Site $site) { $this->authorize('delete', $site); $site->delete(); return redirect()->route('sites.index') ->with('success', 'Site deleted successfully!'); } }