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);
}
}
}