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

namespace App\Models;

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


class Transporter extends Model implements HasMedia
{
    protected $table = 'transporters';
    use HasFactory, InteractsWithMedia;


    const service_type = [

        'intracity' => 'Intracity',
        'intercity' => 'Intercity',
        'both' => 'Both',

    ];
    const status = [

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

    ];

    const type = [

        1 => 'Admin',
        2 => 'Transporters',
        3 => 'Hotels',

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

    const VERIFIED_NO = 0; 
    const VERIFIED_YES = 1;

    public function getCitiesAttribute()
    {
        if (!$this->service_city) {
            return collect(); // Return empty collection if no cities
        }

        $cityIds = explode(',', $this->service_city);
        return CitySelection::whereIn('id', $cityIds)->get();
    }

    public function get_city()
    {
        return $this->belongsTo(City::class, 'service_city', 'id');
    }
    public function get_cities()
    {
        return $this->getCitiesAttribute();
    }

    public function get_user()
    {
        return $this->belongsTo(User::class, 'user_id', 'id');
    }

    public function languages()
    {
        return $this->hasMany(languages::class, 'transporter_id', 'id');
    }


    public static function getVehicles($make_id, $model_id, $service_area)
    {
        $query = Vehicles::query();

        $query->join('transporters', 'vehicles.transporter_id', '=', 'transporters.id');

        $query->where('vehicles.make_id', $make_id);

        $query->where('vehicles.model_id', $model_id);
        $query->where('transporters.service_area', 'like', '%' . $service_area . '%');
        $vehicles = $query->get();
        return $vehicles;
    }

    public function vehicle() {
        return $this->hasMany(Vehicles::class);
    }
    public function cargoVehicle() {
            return $this->hasMany(CargoVehicle::class);
    }

public function city()
{
    return $this->belongsTo(CitySelection::class, 'city_id');
}

public function vehicles()
{
    return $this->hasMany(Vehicles::class, 'transporter_id');
}

public function registerMediaCollections(): void
{
    $this->addMediaCollection('transporter_image')->singleFile();
}
}