Neuaufbau des Repositories
This commit is contained in:
@@ -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]);
|
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]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user