Neuaufbau des Repositories
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled

This commit is contained in:
2026-04-13 13:18:15 +02:00
parent 79bea8cf56
commit 018c7662a3
2 changed files with 53 additions and 14 deletions
@@ -0,0 +1,53 @@
<?php
namespace App\Http\Controllers;
use App\Models\Bonus;
use App\Models\BonusStat;
use Illuminate\Http\Request;
use Inertia\Inertia;
use Illuminate\Support\Facades\DB;
class DashboardController extends Controller
{
public function index()
{
$bonusesCount = Bonus::count();
$totalViews = BonusStat::where('type', 'view')->count();
$totalClicks = BonusStat::where('type', 'click')->count();
// Stats per bonus
$bonusStats = Bonus::select('id', 'name')
->withCount([
'stats as views_count' => function ($query) {
$query->where('type', 'view');
},
'stats as clicks_count' => function ($query) {
$query->where('type', 'click');
}
])
->orderBy('clicks_count', 'desc')
->get();
// Last 7 days activity
$dailyActivity = BonusStat::select(
DB::raw('DATE(created_at) as date'),
DB::raw('SUM(CASE WHEN type = "view" THEN 1 ELSE 0 END) as views'),
DB::raw('SUM(CASE WHEN type = "click" THEN 1 ELSE 0 END) as clicks')
)
->where('created_at', '>=', now()->subDays(7))
->groupBy('date')
->orderBy('date')
->get();
return Inertia::render('Dashboard', [
'stats' => [
'bonusesCount' => $bonusesCount,
'totalViews' => $totalViews,
'totalClicks' => $totalClicks,
'bonusStats' => $bonusStats,
'dailyActivity' => $dailyActivity,
]
]);
}
}
@@ -22,18 +22,4 @@ class TrackingController extends Controller
return response()->json(['success' => true]);
}
public function trackSocial(Request $request)
{
$validated = $request->validate([
'platform' => 'required|in:twitch,instagram,kick',
]);
BonusStat::create([
'type' => 'social_' . $validated['platform'],
'ip_address' => $request->ip(),
]);
return response()->json(['success' => true]);
}
}