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/Models/Vehicles.php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\MorphMany;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
use Spatie\MediaLibrary\MediaCollections\Models\Media;

class Vehicles extends Model implements HasMedia
{
    protected $table = 'vehicles';
    use HasFactory, InteractsWithMedia;
    protected $fillable = [
        'transporter_id',
        'make_id',
        'model_id',
        'vehicle_type_id',
        'model_year',
        'fuel_type',
        'transmission_type',
        'service_type',
        'seating_capacity',
        'license_plate',
        'description',
        'is_verified',
        'city_id',
        'updated_at',
        'created_at',
    ];

    const fuel_type = [

        'cng' => 'CNG',
        'patrol' => 'Patrol',
        'diesel' => 'Diesel',
        'hybrid' => 'Hybrid',

    ];

    const transmission_type = [
        'manual' => 'Manual',
        'automatic' => 'Automatic',
    ];
    const service_type = [
        'Passenger' => 'Passenger',
        'Goods Transport' => 'Goods Transport',
    ];
    const seating_capacity = [
        '5' => '5',
        '7' => '7',
    ];
    const status = [

        0 => 'Inactive',
        1 => 'Active',
        2 => 'Banned',

    ];

        // Service Types
    const SERVICETYPE_PASSENGER = 'Passenger';
    const SERVICETYPE_GOODSTRANSPORT = 'Goods Transport';

    public static function options(): array
    {
        return [
            self::SERVICETYPE_PASSENGER => 'Passenger',
        ];
    }

    // Seating Capacity
    const SEATINGCAPACITY_2 = '2';
    const SEATINGCAPACITY_4 = '4';
    const SEATINGCAPACITY_5 = '5';
    const SEATINGCAPACITY_6 = '6';
    const SEATINGCAPACITY_7 = '7';

    // Weight Capacity
    const SEATINGCAPACITY_BELOW_750KG = 'Below 750kg';
    const SEATINGCAPACITY_ABOVE_750KG = 'Above 750kg';

    public static function passengerSeatingCapacityOptions(): array
    {
        return [
            self::SEATINGCAPACITY_2 => '2',
            self::SEATINGCAPACITY_4 => '4',
            self::SEATINGCAPACITY_5 => '5',
            self::SEATINGCAPACITY_6 => '6',
            self::SEATINGCAPACITY_7 => '7+',
        ];
    }

    public static function goodsTransportCapacityOptions(): array
    {
        return [
            self::SEATINGCAPACITY_BELOW_750KG => 'Below 750kg',
            self::SEATINGCAPACITY_ABOVE_750KG => 'Above 750kg',
        ];
    }

    const STATUS_INACTIVE = 0;
    const STATUS_ACTIVE = 1;
    const STATUS_BANNED = 2;

    const VERIFIED_NO = 0; 
    const VERIFIED_YES = 1;

    public function get_make()
    {
        return $this->belongsTo(VehicleMake::class, 'make_id', 'id');
    }
    public function get_model()
    {
        return $this->belongsTo(VehicleModel::class, 'model_id', 'id');
    }
    public function Vehicle_type()
    {
        return $this->belongsTo(VehicleTypes::class, 'vehicle_type_id', 'id');
    }
    public function transporters()
    {
        return $this->belongsTo(Transporter::class, 'transporter_id', 'id');
    }
    public function registerMediaCollections(): void
    {
        $this->addMediaCollection('vehicle_image')->singleFile();
    }
    public function city()
    {
        return $this->belongsTo(CitySelection::class, 'city_id');
    }


    // public function getFirstMediaUrl($collectionName = 'default', $conversionName = '')
    // {
    //     if ($media = $this->getFirstMedia($collectionName)) {
    //         return $conversionName
    //             ? $media->getUrl($conversionName)
    //             : $media->getUrl(); // This line ensures it returns the original media URL if no conversion name is provided
    //     }

    //     return asset('path-to-default-image.jpg'); // Replace with your default image path
    // }
}