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/Admin/CargoVehicleController.php
<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\CargoBrand;
use App\Models\CargoModel;
use App\Models\CargoType;
use App\Models\CargoVehicle;
use App\Models\Transporter;
use Illuminate\Http\Request;
use Symfony\Component\Mailer\Transport;
use Yajra\DataTables\Facades\DataTables;

class CargoVehicleController extends Controller
{
    public function index(Request $request) {
    if ($request->ajax()) {
        $cargoVehicles = CargoVehicle::with(['transporter.get_user', 'cargoBrand', 'cargoModel', 'cargoType'])
            ->orderBy('created_at', 'desc');

        return DataTables::of($cargoVehicles)
            ->addColumn('transporter_name', function ($row) {
            $user = $row->transporter->get_user ?? null;
            if ($user) {
                return trim($user->name . ' ' . $user->last_name);
            }
            return '';
        })

            ->addColumn('cargo_brand_name', function ($row) {
                return $row->cargoBrand->name ?? '';
            })
            ->addColumn('cargo_model_name', function ($row) {
                return $row->cargoModel->name ?? '';
            })
            ->addColumn('cargo_type_name', function ($row) {
                return $row->cargoType->name ?? '';
            })
             ->editColumn('status', function ($row) {
                    if ($row->status == CargoVehicle::STATUS_ACTIVE) {
                        $status = 'Active';
                        $badgeClass = 'badge bg-success';
                    } elseif ($row->status == CargoVehicle::STATUS_INACTIVE) {
                        $status = 'Inactive';
                        $badgeClass = 'badge bg-warning';
                    } elseif ($row->status == CargoVehicle::STATUS_BANNED) {
                        $status = 'Banned';
                        $badgeClass = 'badge bg-danger';
                    }

                    return "<span class='status-label {$badgeClass}'>{$status}</span>";
                })
            ->addColumn('action', function ($row) {
               return view('admin.cargo_vehicle.partially.delete', compact('row'));
            })
            ->rawColumns(['action','transporter_name','cargo_brand_name','cargo_model_name','cargo_type_name','status'])
            ->make(true);
    }

    return view('admin.cargo_vehicle.index');
}
    // public function index(Request $request) {
    //     if ($request->ajax()) {
    //      $cargo_type = CargoVehicle::query()
    //     ->orderBy('created_at', 'desc');
    //         return DataTables::of($cargo_type)
    //         ->addColumn('action', function ($row) {
    //             $editUrl = route('cargo.type.edit', $row->id);
    //             return '<a href="'.$editUrl.'" class="btn btn-sm btn-dark"><i class="fa fa-pencil-alt"></i></a>';
    //         })
    //             ->rawColumns(['action'])
    //             ->make(true);
    //     }
    //     return view('admin.cargo_vehicle.index');
    // }

    public function create_vehicle(){
        $transporters = Transporter::get();
        $cargo_brands = CargoBrand::where('status',CargoBrand::STATUS_ACTIVE)->get();
        $cargo_models = CargoModel::where('status',CargoModel::STATUS_ACTIVE)->get();
        $cargo_types = CargoType::where('status',CargoModel::STATUS_ACTIVE)->get();
        return view('admin.cargo_vehicle.create',compact('transporters','cargo_brands','cargo_models','cargo_types'));
    }

    public function get_models_by_brand(Request $request){
         $brand_id = $request->query('brand_id');
         $models = CargoModel::where('cargo_brand_id', $brand_id)->where('status',CargoModel::STATUS_ACTIVE)->get();
        return response()->json($models);
    }
    public function store_vehicle(Request $request)
    {
        // Step 1: Validate the request
        $request->validate([
            'transporter_id'          => 'required',
            'cargo_brand_id'          => 'required',
            'cargo_model_id'          => 'required',
            'cargo_type_id'           => 'required',
            'fuel_type'               => 'required',
            'body_type'               => 'required',
            'loading_ramp_available'  => 'required',
            'permit_type'             => 'required',
            'weight_capacity'         => 'required',
            'weight_unit'             => 'required',
            'length_in'               => 'required',
            'width_in'                => 'required',
            'depth_in'                => 'required',
            'bed_dimension_unit'      => 'required',
        ]);

        try {
            // Step 2: Save to database
            $cargo_vehicle = new CargoVehicle;
            $cargo_vehicle->transporter_id         = $request->transporter_id;
            $cargo_vehicle->cargo_brand_id         = $request->cargo_brand_id;
            $cargo_vehicle->cargo_model_id         = $request->cargo_model_id;
            $cargo_vehicle->cargo_type_id          = $request->cargo_type_id;
            $cargo_vehicle->fuel_type              = $request->fuel_type;
            $cargo_vehicle->body_type              = $request->body_type;
            $cargo_vehicle->loading_ramp_available = $request->loading_ramp_available;
            $cargo_vehicle->permit_type            = $request->permit_type;
            $cargo_vehicle->weight_capacity        = $request->weight_capacity;
            $cargo_vehicle->weight_unit            = $request->weight_unit;
            $cargo_vehicle->length_in              = $request->length_in;
            $cargo_vehicle->width_in               = $request->width_in;
            $cargo_vehicle->depth_in               = $request->depth_in;
            $cargo_vehicle->bed_dimension_unit     = $request->bed_dimension_unit;
            $cargo_vehicle->status                 = $request->status;
            $cargo_vehicle->inactive_reason     = $request->inactive_reason;
            $cargo_vehicle->save();

            if ($request->hasFile('cargo_vehicle_image')) {
                $cargo_vehicle->addMediaFromRequest('cargo_vehicle_image')->toMediaCollection('cargo_vehicle_image');
            }
            // Step 3: Redirect with success
            return redirect()->route('cargo.vehicle')->with('success', 'Cargo Vehicle saved successfully.');
        } catch (\Exception $e) {
            // Step 4: Redirect with error
            return redirect()->route('cargo.vehicle')->with('error', 'Failed to save vehicle: ' . $e->getMessage());
        }
    }
    public function edit_vehicle($id){
        $cargo_vehicle = CargoVehicle::findOrFail($id); // Get the existing vehicle data
        $transporters = Transporter::get();
        $cargo_brands = CargoBrand::where('status',CargoBrand::STATUS_ACTIVE)->get();
        $cargo_models = CargoModel::where('status',CargoModel::STATUS_ACTIVE)->where('cargo_brand_id', $cargo_vehicle->cargo_brand_id)->get();
        $cargo_types = CargoType::where('status',CargoType::STATUS_ACTIVE)->get();
        return view('admin.cargo_vehicle.edit',compact('transporters','cargo_brands','cargo_models','cargo_types','cargo_vehicle'));
    }

   public function update_vehicle(Request $request, $id)
    {
        // Step 1: Validate the request
        $request->validate([
            'transporter_id'          => 'required',
            'cargo_brand_id'          => 'required',
            'cargo_model_id'          => 'required',
            'cargo_type_id'           => 'required',
            'fuel_type'               => 'required',
            'body_type'               => 'required',
            'loading_ramp_available'  => 'required',
            'permit_type'             => 'required',
            'weight_capacity'         => 'required',
            'weight_unit'             => 'required',
            'length_in'               => 'required',
            'width_in'                => 'required',
            'depth_in'                => 'required',
            'bed_dimension_unit'      => 'required',
        ]);

        try {
            // Step 2: Find and update the record
            $cargo_vehicle = CargoVehicle::findOrFail($id);
            $cargo_vehicle->transporter_id         = $request->transporter_id;
            $cargo_vehicle->cargo_brand_id         = $request->cargo_brand_id;
            $cargo_vehicle->cargo_model_id         = $request->cargo_model_id;
            $cargo_vehicle->cargo_type_id          = $request->cargo_type_id;
            $cargo_vehicle->fuel_type              = $request->fuel_type;
            $cargo_vehicle->body_type              = $request->body_type;
            $cargo_vehicle->loading_ramp_available = $request->loading_ramp_available;
            $cargo_vehicle->permit_type            = $request->permit_type;
            $cargo_vehicle->weight_capacity        = $request->weight_capacity;
            $cargo_vehicle->weight_unit            = $request->weight_unit;
            $cargo_vehicle->length_in              = $request->length_in;
            $cargo_vehicle->width_in               = $request->width_in;
            $cargo_vehicle->depth_in               = $request->depth_in;
            $cargo_vehicle->bed_dimension_unit     = $request->bed_dimension_unit;
            $cargo_vehicle->status                 = $request->status;
            $cargo_vehicle->inactive_reason        = $request->inactive_reason;
            $cargo_vehicle->save();

            // Step 3: Handle new image upload (replace old one if exists)
            if ($request->hasFile('cargo_vehicle_image')) {
                $cargo_vehicle->clearMediaCollection('cargo_vehicle_image');
                $cargo_vehicle->addMediaFromRequest('cargo_vehicle_image')->toMediaCollection('cargo_vehicle_image');
            }

            // Step 4: Redirect with success
            return redirect()->route('cargo.vehicle')->with('success', 'Cargo Vehicle updated successfully.');
        } catch (\Exception $e) {
            // Step 5: Redirect with error
            return redirect()->route('cargo.vehicle')->with('error', 'Failed to update vehicle: ' . $e->getMessage());
        }
    }

    public function delete_vehicle(Request $request, $id){
        {
        $cargo_vehicle = CargoVehicle::find($id);
        if (isset($cargo_vehicle)) {
            $cargo_vehicle->Delete();

            return redirect()->back()->with('success', 'Cargo vehcile has been deleted successfully.');
        } else {
            return back()->with('error', 'Cargo vehcile  not found.');
        }
    }
    }

}