<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\DB;
use Illuminate\Validation\UnauthorizedException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use App\Model\Master\Prospect;
use App\Model\Master\ProspectInitialData;
class ProspectsController extends Controller
{
    private $request;

    public function __construct(Request $request)
    {
        $this->request = $request;
    }
    //
    // Display the authenticated user's profile
 // Get all prospects
    public function index(Request $request)
    {
       try {
        $query = Prospect::query();

        // Apply search if provided
        if ($request->has('search') && !empty($request->search)) {
            $search = $request->search;
            $query->where(function ($q) use ($search) {
                $q->where('name', 'like', "%{$search}%")
                  ->orWhere('email', 'like', "%{$search}%")
                  ->orWhere('mobile', 'like', "%{$search}%")
                  ->orWhere('company_name', 'like', "%{$search}%");
            });
        }

        // Get total count before pagination
        $total = $query->count();

        // Apply pagination if start and limit are provided
        if ($request->has(['start', 'limit'])) {
            $start = (int)$request->start;
            $limit = (int)$request->limit;
            $query->skip($start)->take($limit);
        }

        $prospects = $query->orderBy('created_at', 'desc')->get();

        return response()->json([
            'success' => true,
            'message' => 'Prospects fetched successfully.',
            'total'   => $total, // total before pagination
            'data'    => $prospects
        ]);

    } catch (\Throwable $ex) {
        return response()->json([
            'success' => false,
            'message' => $ex->getMessage(),
            'data'    => []
        ], 500);
    }
    }

public function prospectInitialData(Request $request)
{
    try {
        $query = ProspectInitialData::query();

        // Apply search if provided
        if ($request->has('search') && !empty($request->search)) {
            $search = $request->search;
            $query->where(function ($q) use ($search) {
                $q->where('name', 'like', "%{$search}%")
                  ->orWhere('email', 'like', "%{$search}%")
                  ->orWhere('phone_number', 'like', "%{$search}%")
                  ->orWhere('company_name', 'like', "%{$search}%");
            });
        }

        // Get total count before pagination
        $total = $query->count();

        // Apply pagination if start and limit are provided
        if ($request->has(['start', 'limit'])) {
            $start = (int)$request->start;
            $limit = (int)$request->limit;
            $query->skip($start)->take($limit);
        }

        $prospects = $query->orderBy('created_at', 'desc')->get();

        return response()->json([
            'success' => true,
            'message' => 'Prospects fetched successfully.',
            'total'   => $total, // total before pagination
            'data'    => $prospects
        ]);

    } catch (\Throwable $ex) {
        return response()->json([
            'success' => false,
            'message' => $ex->getMessage(),
            'data'    => []
        ], 500);
    }
}

 



}
