mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-31 03:24:34 -04:00
INA-5 | New way of setting next scheduled run date
This commit is contained in:
parent
99dc9ac65a
commit
fbb64effec
@ -111,31 +111,10 @@ class TaskScheduler implements ShouldQueue
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$amount_of_days_until_next_run = $this->getAmountOfDays($scheduler->repeat_every);
|
$scheduler->scheduled_run = $scheduler->nextScheduledDate();
|
||||||
$scheduler->scheduled_run = Carbon::now()->addDays($amount_of_days_until_next_run);
|
|
||||||
$scheduler->save();
|
$scheduler->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getAmountOfDays(string $repeat_every): int
|
|
||||||
{
|
|
||||||
switch ($repeat_every) {
|
|
||||||
case Scheduler::DAILY:
|
|
||||||
return 1;
|
|
||||||
break;
|
|
||||||
case Scheduler::MONTHLY:
|
|
||||||
return 30;
|
|
||||||
break;
|
|
||||||
case Scheduler::WEEKLY:
|
|
||||||
return 7;
|
|
||||||
break;
|
|
||||||
case Scheduler::QUARTERLY:
|
|
||||||
return 90;
|
|
||||||
break;
|
|
||||||
case Scheduler::ANNUALLY:
|
|
||||||
return 365;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private function fetchJobs()
|
private function fetchJobs()
|
||||||
{
|
{
|
||||||
|
@ -14,6 +14,7 @@ namespace App\Models;
|
|||||||
use App\Services\TaskScheduler\TaskSchedulerService;
|
use App\Services\TaskScheduler\TaskSchedulerService;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Support\Carbon;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @property boolean paused
|
* @property boolean paused
|
||||||
@ -61,4 +62,29 @@ class Scheduler extends Model
|
|||||||
{
|
{
|
||||||
return $this->hasOne(ScheduledJob::class, 'scheduler_id', 'id');
|
return $this->hasOne(ScheduledJob::class, 'scheduler_id', 'id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function nextScheduledDate() :?Carbon
|
||||||
|
{
|
||||||
|
|
||||||
|
/*
|
||||||
|
As we are firing at UTC+0 if our offset is negative it is technically firing the day before so we always need
|
||||||
|
to add ON a day - a day = 86400 seconds
|
||||||
|
*/
|
||||||
|
$offset = 86400;
|
||||||
|
|
||||||
|
switch ($this->repeat_every) {
|
||||||
|
case self::DAILY:
|
||||||
|
return Carbon::parse($this->scheduled_run)->startOfDay()->addDay()->addSeconds($offset);
|
||||||
|
case self::WEEKLY:
|
||||||
|
return Carbon::parse($this->scheduled_run)->startOfDay()->addWeek()->addSeconds($offset);
|
||||||
|
case self::MONTHLY:
|
||||||
|
return Carbon::parse($this->scheduled_run)->startOfDay()->addMonth()->addSeconds($offset);
|
||||||
|
case self::QUARTERLY:
|
||||||
|
return Carbon::parse($this->scheduled_run)->startOfDay()->addMonths(3)->addSeconds($offset);
|
||||||
|
case self::ANNUALLY:
|
||||||
|
return Carbon::parse($this->scheduled_run)->startOfDay()->addYear()->addSeconds($offset);
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user