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

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;

class Transporter extends Authenticatable
{
    use HasFactory, Notifiable, SoftDeletes, HasApiTokens;

    protected $fillable = [
        'company_name',
        'first_name',
        'last_name',
        'contact_person',
        'email',
        'phone',
        'otp',
        'otp_expires_at',
        'password',
        'status',
        'mode',
        'bank_details',
        'address',
        'transporter_type',
        'image',
    ];


    protected $hidden = [
        'password',
    ];

    
    const INDIVIDUAL = 1;
    const TAXI_STAND = 2;

    const PENDING   = 0;
    const APPROVED  = 1;
    const SUSPENDED = 2;

    protected function casts(): array
    {
        return [
            'password' => 'hashed',
            'transporter_type' => 'integer',
        ];
    }


    public function documents()
    {
        return $this->morphMany(Document::class, 'owner');
    }
    public function drivers()
    {
        return $this->hasMany(Driver::class, 'transporter_id');
    }

    public function vehicles()
    {
        return $this->hasMany(Vehicle::class, 'transporter_id');
    }
    public function settings()
    {
        return $this->hasMany(TransporterSetting::class, 'transporter_id');
    }
    protected $casts = [
        'ride_permissions' => 'array',
    ];

    public function refreshVerificationStatus()
    {
        $this->load('documents');
        $hasDocs = $this->documents()->count() > 0;
        $allDocsVerified = $hasDocs && $this->documents()->where('is_verified', 0)->count() == 0;

        $this->is_verified = $allDocsVerified;
        $this->save();
    }
   public function getTransporterTypeBadgeAttribute()
    {
        return match ($this->transporter_type) {
            1 => '<span class="badge badge-secondary">Individual</span>',
            2 => '<span class="badge badge-warning">Taxi Stand</span>',
            default => '<span class="badge badge-secondary">N/A</span>',
        };
    }
}