<?php

namespace App\Http\Controllers\SuperAdmin;

use App\Http\Controllers\Controller;
use App\Models\Company;
use App\Models\SubscriptionPlan;
use App\Models\SubscriptionPayment;
use Illuminate\Http\Request;

class SubscriptionController extends Controller
{
    public function index(Request $request)
    {
        $plans = SubscriptionPlan::orderBy('base_price_monthly')->get();

        $query = Company::with(['subscriptionPlan', 'subscriptionPayments' => function ($q) {
            $q->orderByDesc('paid_at')->orderByDesc('created_at');
        }]);

        if ($request->filled('plan_id')) {
            $query->where('subscription_plan_id', $request->plan_id);
        }

        if ($request->filled('status')) {
            $query->where('status', $request->status);
        }

        if ($request->filled('search')) {
            $query->where(function ($q) use ($request) {
                $q->where('name', 'like', '%' . $request->search . '%')
                    ->orWhere('email', 'like', '%' . $request->search . '%')
                    ->orWhere('short_name', 'like', '%' . $request->search . '%');
            });
        }

        $companies = $query->orderBy('name')->paginate(15)->withQueryString();

        $totalActive = Company::where('status', 'active')->count();
        $totalTrial = Company::whereNotNull('trial_ends_at')->count();
        $totalRevenue = SubscriptionPayment::where('status', 'completed')->sum('amount');

        return view('superadmin.subscriptions', compact(
            'companies',
            'plans',
            'totalActive',
            'totalTrial',
            'totalRevenue'
        ));
    }
}

