HEX
Server: nginx/1.24.0
System: Linux DGT-WORDPRESS-VM-SERVER 6.14.0-1017-azure #17~24.04.1-Ubuntu SMP Mon Dec 1 20:10:50 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 8.4.12
Disabled: NONE
Upload Files
File: /mnt/data/ghayatcom/ghayatcom-api/app/LabOrder.php
<?php

namespace App;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Storage;
use Config;
use App\LabOrderDocument;

/**
 * App\LabOrder
 *
 * @property mixed $qrcode
 */
class LabOrder extends Model
{
    use HasFactory, SoftDeletes;

    protected $table = 'lab_orders';
    protected $appends = ['lab_report_url','lab_report_url'];
    protected $fillable = [
        'user_id',
        'qrcode',
        'sample_collection_address_id',
        'date',
        'time',
        'payment_method',
        'token',
        'subtotal',
        'tax',
        'final_total',
        'status',
        'orderplace_date',
        'request_to_patient_date_time',
        
    ];
    // protected $casts = [
    //     'qrcode' => 'array', // Ensure it's a string, not an array or object
    // ];
    
    public function getLabReportUrlAttribute()
    {
        $value = $this->lab_report_path;

        if ($value) {
            if (config('filesystems.default') === 's3') {
                return Storage::temporaryUrl(
                    'digimed/lab_reports/' . $this->id . '/' . $value,
                    now()->addMinutes(30)
                );
            } else {
                return Storage::url('digimed/lab_reports/' . $this->id . '/' . $value);
            }
        }

        return null;
    }
    public function documents()
    {
        return $this->hasMany(LabOrderDocument::class, 'lab_order_id');
    }
    
    // Relationships
    public function user()
    {
        return $this->belongsTo(User::class, 'user_id');
    }

    public function address()
    {
        return $this->belongsTo(UserAddress::class, 'sample_collection_address_id');
    }

    public function orderData()
    {
        return $this->hasMany(LabOrderData::class, 'lab_order_id');
    }

    public function review()
    {
        return $this->hasOne(LabReviews::class, 'order_id')->latest();
    }

    public function lab()
    {
        return $this->belongsTo(Lab::class, 'lab_id');
    }

    public function getQrcodeAttribute()
    {
        $value = $this->attributes['qrcode'] ?? null;
        if ($value) {
            if (config('filesystems.default') == 's3') {
               return Storage::temporaryUrl($value, now()->addMinutes(30));
            } else {
                return Storage::url($value);
            }
        }
        return null;
    }
}