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
// }
}