<?php

namespace App\Http\Controllers\SuperAdmin;

use App\Http\Controllers\Controller;
use App\Models\Company;
use App\Models\User;
use App\Models\SubscriptionPlan;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;

class AnalyticsController extends Controller
{
    public function index()
    {
        $totalCompanies = Company::count();
        $activeCompanies = Company::where('status', 'active')->count();
        $totalUsers = User::whereNotNull('company_id')->count();
        $trialCompanies = Company::whereNotNull('trial_ends_at')->where('trial_ends_at', '>', Carbon::now())->count();
        $companiesByStatus = Company::select('status', DB::raw('count(*) as total'))->groupBy('status')->get()->keyBy('status');
        $plans = SubscriptionPlan::withCount('companies')->where('active', true)->orderBy('base_price_monthly')->get();
        $newCompaniesLast6Months = [];
        for ($i = 5; $i >= 0; $i--) {
            $date = Carbon::now()->subMonths($i);
            $newCompaniesLast6Months[] = [
                'label' => $date->format('M Y'),
                'count' => Company::whereYear('created_at', $date->year)->whereMonth('created_at', $date->month)->count(),
            ];
        }
        return view('superadmin.analytics', compact(
            'totalCompanies',
            'activeCompanies',
            'totalUsers',
            'trialCompanies',
            'companiesByStatus',
            'plans',
            'newCompaniesLast6Months'
        ));
    }
}
