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