HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
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));
    }
}