File: /var/www/html/dashboard.orbiwheels.com/app/Models/Trip.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Trip extends Model
{
use HasFactory;
protected $table = 'trips';
protected $fillable = [
'booking_id',
'transporter_id',
'vehicle_type_id',
'ride_type',
'booking_type',
'dates',
'times',
'locations',
'pricing_details',
'distance_km',
'status',
];
protected $casts = [
'dates' => 'array',
'times' => 'array',
'locations' => 'array',
'pricing_details' => 'array',
];
public function booking()
{
return $this->belongsTo(Booking::class, 'booking_id');
}
public function transporter()
{
return $this->belongsTo(Transporter::class, 'transporter_id');
}
public function vehicleType()
{
return $this->belongsTo(VehicleType::class, 'vehicle_type_id');
}
public function bookingRides()
{
return $this->hasMany(BookingRide::class, 'trip_id');
}
public function rideRequests()
{
return $this->hasMany(RideRequest::class, 'trip_id');
}
const PENDING = 0;
const REQUESTED = 1;
const ACCEPTED = 2;
const CONFIRMED = 3;
const COMPLETED = 4;
const CANCELLED = 5;
const REJECTED = 6;
public static function statusList()
{
return [
self::PENDING => 'Pending',
self::REQUESTED => 'Requested',
self::ACCEPTED => 'Accepted',
self::CONFIRMED => 'Confirmed',
self::COMPLETED => 'Completed',
self::CANCELLED => 'Cancelled',
self::REJECTED => 'Rejected',
];
}
public function getStatusNameAttribute()
{
return self::statusList()[$this->status] ?? 'Unknown';
}
const RIDE_OFFICE = 1;
const RIDE_RAILWAY = 2;
const RIDE_AIRPORT = 3;
const RIDE_BUS = 4;
const RIDE_OUTSTATION = 5;
const RIDE_CITYTOUR = 6;
public static function rideTypes()
{
return [
self::RIDE_OFFICE => 'Office',
self::RIDE_AIRPORT => 'Airport',
self::RIDE_RAILWAY => 'Railway',
self::RIDE_BUS => 'Bus',
self::RIDE_OUTSTATION => 'Outstation',
self::RIDE_CITYTOUR => 'City Tour',
];
}
public function getRideTypeNameAttribute()
{
return self::rideTypes()[$this->ride_type] ?? 'Unknown';
}
}