File: /home/xedaptot/be.naniguide.com/app/Http/Controllers/Refactor/Admin/CustomerDashboardController.php
<?php
namespace App\Http\Controllers\Refactor\Admin;
use App\Http\Controllers\Controller;
use App\Model\Customer;
use App\Services\Customer\AdminCustomerDashboardService;
use Illuminate\Http\Request;
class CustomerDashboardController extends Controller
{
public function index(Request $request, string $uid)
{
$customer = Customer::where('uid', $uid)->firstOrFail();
$service = new AdminCustomerDashboardService($customer);
return view('refactor.pages.admin.customers.dashboard', [
'customer' => $customer,
'activeTab' => 'dashboard',
'currencyFormat' => $service->currencyFormat(),
'identity' => $service->identity(),
'ribbon' => $service->ribbon(),
'users' => $service->users(),
'subscription' => $service->subscription(),
'billing' => $service->billing(),
'sendingCredits' => $service->sendingCredits(),
'evsCredits' => $service->evsCredits(),
'quota' => $service->quotaGrid(),
'metrics' => $service->metrics30d(),
'sendingTrend' => $service->sendingTrend(30),
'subscriberGrowth' => $service->subscriberGrowth(6),
'sendingServers' => $service->sendingServers(),
'recentCampaigns' => $service->recentCampaigns(),
'activityFeed' => $service->activityFeed(),
]);
}
public function sendingTrendChart(Request $request, string $uid)
{
$customer = Customer::where('uid', $uid)->firstOrFail();
$days = (int) $request->input('days', 30);
$days = in_array($days, [7, 30, 90], true) ? $days : 30;
$service = new AdminCustomerDashboardService($customer);
return response()->json($service->sendingTrend($days));
}
public function growthChart(Request $request, string $uid)
{
$customer = Customer::where('uid', $uid)->firstOrFail();
$months = (int) $request->input('months', 6);
$months = max(3, min(12, $months));
$service = new AdminCustomerDashboardService($customer);
return response()->json($service->subscriberGrowth($months));
}
}