initial commit
This commit is contained in:
114
app/Models/PatientNote.php
Normal file
114
app/Models/PatientNote.php
Normal file
@@ -0,0 +1,114 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphTo;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class PatientNote extends Model
|
||||
{
|
||||
|
||||
protected $table = 'patient_notes';
|
||||
|
||||
protected $fillable = [
|
||||
'note',
|
||||
'note_type',
|
||||
'patient_id',
|
||||
'patient_notes',
|
||||
'appointment_id',
|
||||
'telemed_pros_id',
|
||||
'created_by_id',
|
||||
'created_by_type'
|
||||
];
|
||||
|
||||
protected $appends = ['created_by'];
|
||||
|
||||
protected static function boot()
|
||||
{
|
||||
parent::boot();
|
||||
|
||||
static::creating(function ($model) {
|
||||
if (Auth::guard('admin')->check()) {
|
||||
$model->created_by_id = Auth::guard('admin')->id();
|
||||
$model->created_by_type = 'App\Models\Admin';
|
||||
} elseif (Auth::check()) {
|
||||
$model->created_by_id = Auth::id();
|
||||
$model->created_by_type = 'App\Models\Telemedpro';
|
||||
}
|
||||
});
|
||||
}
|
||||
public function getCreatedByAttribute()
|
||||
{
|
||||
if (!$this->created_by_type || !$this->created_by_id) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$model = $this->created_by_type::find($this->created_by_id);
|
||||
if (!$model) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$type = $this->created_by_type === 'App\Models\Admin' ? 'Admin' : 'Agent';
|
||||
|
||||
return $model->name . ' (' . $type . ')';
|
||||
}
|
||||
/* public function getCreatedByAttribute()
|
||||
{
|
||||
// Check if we're using a custom select
|
||||
if (!array_key_exists('created_by_id', $this->attributes) || !array_key_exists('created_by_type', $this->attributes)) {
|
||||
return $this->provide_name ? $this->provide_name . ' (Provider)' : null;
|
||||
}
|
||||
|
||||
if (!$this->created_by_type || !$this->created_by_id) {
|
||||
return $this->provide_name ? $this->provide_name . ' (Provider)' : null;
|
||||
}
|
||||
|
||||
$model = $this->created_by_type::find($this->created_by_id);
|
||||
if (!$model) {
|
||||
return $this->provide_name ? $this->provide_name . ' (Provider)' : null;
|
||||
}
|
||||
|
||||
$type = match ($this->created_by_type) {
|
||||
'App\Models\Admin' => 'Admin',
|
||||
'App\Models\Telemedpro' => 'TelemedPro',
|
||||
//default => 'User',
|
||||
};
|
||||
|
||||
return $model->name . ' (' . $type . ')';
|
||||
} */
|
||||
|
||||
protected $hidden = ['created_by_id', 'created_by_type'];
|
||||
|
||||
public function createdBy(): MorphTo
|
||||
{
|
||||
return $this->morphTo();
|
||||
}
|
||||
|
||||
public function getCreatedByNameAttribute()
|
||||
{
|
||||
return $this->createdBy ? $this->createdBy->name : null;
|
||||
}
|
||||
|
||||
public function appointment()
|
||||
{
|
||||
return $this->belongsTo(Appointment::class, 'appointment_id', 'id');
|
||||
}
|
||||
public function telemedPro()
|
||||
{
|
||||
return $this->belongsTo(TelemedPro::class, 'telemed_pros_id', 'id')->withDefault();
|
||||
}
|
||||
|
||||
public function admin()
|
||||
{
|
||||
return $this->belongsTo(Admin::class, 'admin_id', 'id')->withDefault();
|
||||
}
|
||||
|
||||
public function patient()
|
||||
{
|
||||
return $this->belongsTo(Patient::class, 'patient_id', 'id');
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user