55 lines
1.1 KiB
PHP
55 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
|
|
class Reminder extends Model
|
|
{
|
|
use HasFactory;
|
|
|
|
protected $fillable = [
|
|
'appointment_id',
|
|
'template_id',
|
|
'channel',
|
|
'content',
|
|
'send_at',
|
|
'sent_at',
|
|
'status',
|
|
'error_message',
|
|
'response',
|
|
];
|
|
|
|
protected $casts = [
|
|
'send_at' => 'datetime',
|
|
'sent_at' => 'datetime',
|
|
];
|
|
|
|
public function appointment(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Appointment::class);
|
|
}
|
|
|
|
public function template(): BelongsTo
|
|
{
|
|
return $this->belongsTo(ReminderTemplate::class, 'template_id');
|
|
}
|
|
|
|
public function markAsSent(string $response = null): void
|
|
{
|
|
$this->status = 'sent';
|
|
$this->sent_at = now();
|
|
$this->response = $response;
|
|
$this->save();
|
|
}
|
|
|
|
public function markAsFailed(string $errorMessage): void
|
|
{
|
|
$this->status = 'failed';
|
|
$this->error_message = $errorMessage;
|
|
$this->save();
|
|
}
|
|
}
|