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