dummybot/app/Models/Task.php

45 lines
1.0 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
class Task extends Model
{
use HasFactory;
protected $fillable = [
'title',
'priority',
'done',
'snooze_until',
'done_at',
];
protected $casts = [
'done' => 'boolean',
'snooze_until' => 'datetime',
'done_at' => 'datetime',
];
/** Tareas "activas": no hechas y no snoozed. */
public function scopeActive(Builder $q): Builder
{
return $q->where('done', false)
->where(function ($q2) {
$q2->whereNull('snooze_until')
->orWhere('snooze_until', '<=', now());
});
}
public function getNextDueInAttribute(): int
{
if (! $this->snooze_until || $this->snooze_until->isPast()) {
return 0;
}
return max(0, now()->diffInSeconds($this->snooze_until, false));
}
}