HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ip-172-26-0-120 6.17.0-1009-aws #9~24.04.2-Ubuntu SMP Fri Mar 6 23:50:29 UTC 2026 x86_64
User: ubuntu (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/www/html/orbidirectory.com/app/Http/Controllers/CargoVehicleController.php
<?php

namespace App\Http\Controllers;

use App\Models\CargoVehicle;
use App\Models\DirectLeads;
use App\Models\Transporter;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cookie;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Validator;
use PhpParser\Node\Expr\FuncCall;

class CargoVehicleController extends Controller
{
    public function getCargoVehicles(Request $request)
    {
        $page = $request->input('page', 1);
        $limit = $request->input('limit', 9);
        $pagination = filter_var($request->input('pagination', true), FILTER_VALIDATE_BOOLEAN);
        $selectedCity = Cookie::get('selected_city', null);

        $offset = ($page - 1) * $limit;

        $query = Transporter::with([
            'cargoVehicle' => function ($q) use ($request) {
                if ($request->filled('weight_capacity')) {
                    $weightFilter = $request->input('weight_capacity');

                    if ($weightFilter === 'below_750') {
                        $q->where('weight_capacity', '<', 750);
                    } elseif ($weightFilter === 'above_750') {
                        $q->where('weight_capacity', '>=', 750);
                    }
                }
            },
            'cargoVehicle.cargoBrand',
            'cargoVehicle.cargoModel',
            'cargoVehicle.cargoType',
            'get_user'
        ]);

        $query->whereHas('cargoVehicle', function ($q) use ($request) {
            if ($request->filled('weight_capacity')) {
                $weightFilter = $request->input('weight_capacity');

                if ($weightFilter === 'below_750') {
                    $q->where('weight_capacity', '<', 750);
                } elseif ($weightFilter === 'above_750') {
                    $q->where('weight_capacity', '>=', 750);
                }
            }
        });

        // filter by selected city
        if ($selectedCity) {
            $query->whereRaw("FIND_IN_SET(?, service_city)", [$selectedCity]);
        }

        $totalCount = $query->count();
        $totalPages = ceil($totalCount / $limit);

        $transporters = $query->offset($offset)->limit($limit)->get();

        $html = view('front.partial.transportCargo_vehicle_list', [
            'transporters' => $transporters,
            'pagination' => $pagination,
            'total_pages' => $totalPages
        ])->render();

        return response()->json([
            'transporters' => $transporters,
            'html' => $html,
            'total_pages' => $pagination ? $totalPages : 1,
            'pagination' => $pagination
        ]);
    }
        public function cargoVehicleDetail($id){
            {
            try {
                $cargo_vehicle = CargoVehicle::with('cargoBrand', 'cargoModel', 'cargoType', 'transporter.get_user')
                    ->find($id);
                if (!$cargo_vehicle) {
                    Log::error('Vehicle not found with ID: ' . $id);
                    return response()->json(['error' => 'Cargo Vehicle not found'], 404);
                }

                $cargoMediaUrl = $cargo_vehicle->getFirstMediaUrl('cargo_vehicle_image') ?: '';

                // dd($vehicle);
                $html = view('front.cargo-vehicle-details', compact('cargo_vehicle'))->render();
                // dd(123);

                Log::info('Generated HTML:', ['html' => $html]);
                Log::info('Media URL:', ['cargo_media_url' => $cargoMediaUrl]);
                return response()->json(['html' => $html, 'cargo_media_url' => $cargoMediaUrl]);
            } catch (\Exception $e) {
                Log::error('Error fetching cargo vehicle details: ' . $e->getMessage());
                return response()->json(['error' => 'Error fetching cargo vehicle details'], 500);
            }
        }
    }

    public function cargoTransportDetail(Request $request){
        try {
            $validator = Validator::make($request->all(), [

                 'your_name' => 'required|string|max:255',
                'your_email' => 'nullable|email|max:255',
                'your_number' => 'nullable|digits:10|numeric',
            ]);

            if ($validator->fails()) {
                return response()->json(['error' => $validator->errors()], 422);
            }

            $direct_leads = new DirectLeads();
            $direct_leads->transporter_id = $request->input('transporter_id');
            $direct_leads->vehicle_id = $request->input('vehicle_id');
            $direct_leads->name = $request->input('your_name');
            $direct_leads->email = $request->input('your_email');
            $direct_leads->phone_number = $request->input('your_number');
            $direct_leads->source = 'Listing';
            $direct_leads->save();

            $vehicle = CargoVehicle::with('cargoBrand', 'cargoModel', 'cargoType', 'transporter.get_user')
                ->find($direct_leads->vehicle_id);

            if (!$vehicle) {
                Log::error('Vehicle not found with ID: ' . $request->input('vehicle_id'));
                return response()->json(['error' => 'Vehicle not found'], 404);
            }
            $html = view('front.cargo_vehicle_detail', compact('vehicle'))->render();

            return response()->json(['html' => $html, 'success' => true]);
        } catch (\Exception $e) {
            // Log the exception and return an error response
            Log::error('Error in listingStore: ' . $e->getMessage());
            return response()->json(['error' => 'An error occurred.'], 500);
        }
    }
}