Initial commit
This commit is contained in:
81
app/Http/Controllers/DashboardController.php
Normal file
81
app/Http/Controllers/DashboardController.php
Normal file
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class DashboardController extends Controller
|
||||
{
|
||||
|
||||
public function index(){
|
||||
// dd('public insanity');
|
||||
return view('dashboard.index');
|
||||
}
|
||||
|
||||
public function getDashboardStats()
|
||||
{
|
||||
|
||||
$stats = DB::table('unified_subscribers')
|
||||
->select('service_id', DB::raw('count(*) as total'), DB::raw('SUM(status = "active") as active_count'))
|
||||
->groupBy('service_id')
|
||||
->get();
|
||||
return response()->json($stats);
|
||||
}
|
||||
public function getStats()
|
||||
{
|
||||
// Query the unified warehouse table, grouping by the service configuration
|
||||
$stats = DB::table('subscription_services as s')
|
||||
->leftJoin('unified_subscribers as u', 's.id', '=', 'u.service_id')
|
||||
->select(
|
||||
's.id',
|
||||
's.name',
|
||||
DB::raw('COUNT(u.id) as total_subscribers'),
|
||||
// Use CASE WHEN for strict SQL compatibility
|
||||
DB::raw('SUM(CASE WHEN u.status = "active" THEN 1 ELSE 0 END) as active_subscribers')
|
||||
)
|
||||
->groupBy('s.id', 's.name')
|
||||
->get();
|
||||
|
||||
// Calculate a quick summary for the top-level overview
|
||||
$grandTotal = $stats->sum('total_subscribers');
|
||||
$grandActive = $stats->sum('active_subscribers');
|
||||
|
||||
return response()->json([
|
||||
'summary' => [
|
||||
'total' => $grandTotal,
|
||||
'active' => $grandActive,
|
||||
'inactive' => $grandTotal - $grandActive
|
||||
],
|
||||
'services' => $stats
|
||||
]);
|
||||
}
|
||||
// app/Http/Controllers/DashboardController.php
|
||||
// app/Http/Controllers/DashboardController.php
|
||||
public function details(Request $request, $id)
|
||||
{
|
||||
$service = DB::table('subscription_services')->where('id', $id)->first();
|
||||
|
||||
if (!$service) {
|
||||
abort(404, 'Service not found.');
|
||||
}
|
||||
|
||||
$search = $request->input('search');
|
||||
|
||||
$subscribers = DB::table('unified_subscribers')
|
||||
->where('service_id', $id)
|
||||
->when($search, function($query, $search) {
|
||||
$query->where(function($q) use ($search) {
|
||||
$q->where('phone_number', 'like', "%{$search}%")
|
||||
->orWhere('content_name', 'like', "%{$search}%")
|
||||
->orWhere('status', 'like', "%{$search}%")
|
||||
->orWhere('join_date', 'like', "%{$search}%");
|
||||
});
|
||||
})
|
||||
->orderBy('updated_at', 'desc')
|
||||
->paginate(15);
|
||||
|
||||
return view('dashboard.details', compact('service', 'subscribers'));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user