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