New Release #4
@@ -3,6 +3,7 @@
|
|||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
use App\Scopes\CommonModel;
|
use App\Scopes\CommonModel;
|
||||||
|
use Illuminate\Database\Eloquent\Casts\AsArrayObject;
|
||||||
|
|
||||||
class CronTask extends CommonModel
|
class CronTask extends CommonModel
|
||||||
{
|
{
|
||||||
@@ -11,6 +12,6 @@ class CronTask extends CommonModel
|
|||||||
protected $dates = ['last_run'];
|
protected $dates = ['last_run'];
|
||||||
|
|
||||||
protected $casts = [
|
protected $casts = [
|
||||||
'last_run' => 'datetime',
|
'last_run' => AsArrayObject::class,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ class CronTaskHandleProvider extends CommonController
|
|||||||
$now = Carbon::now();
|
$now = Carbon::now();
|
||||||
|
|
||||||
$tenants = Tenant::where('has_active_instance', true)->get();
|
$tenants = Tenant::where('has_active_instance', true)->get();
|
||||||
|
|
||||||
foreach ($tenants as $tenant) {
|
foreach ($tenants as $tenant) {
|
||||||
app()->instance('tenant', $tenant);
|
app()->instance('tenant', $tenant);
|
||||||
$this->runTenantTasks($tenant, $now);
|
$this->runTenantTasks($tenant, $now);
|
||||||
@@ -31,7 +30,6 @@ class CronTaskHandleProvider extends CommonController
|
|||||||
|
|
||||||
private function runTenantTasks(Tenant $tenant, Carbon $now) {
|
private function runTenantTasks(Tenant $tenant, Carbon $now) {
|
||||||
$tasks = CronTask::all();
|
$tasks = CronTask::all();
|
||||||
|
|
||||||
foreach ($tasks as $task) {
|
foreach ($tasks as $task) {
|
||||||
|
|
||||||
// --- Every-Time Tasks ---
|
// --- Every-Time Tasks ---
|
||||||
@@ -41,11 +39,12 @@ class CronTaskHandleProvider extends CommonController
|
|||||||
|
|
||||||
// --- Daily Tasks ---
|
// --- Daily Tasks ---
|
||||||
if ($task->execution_type === CronTaskType::CRON_TASK_TYPE_DAILY) {
|
if ($task->execution_type === CronTaskType::CRON_TASK_TYPE_DAILY) {
|
||||||
|
$tenantLastRun = $task->last_run?->get($tenant->slug);
|
||||||
|
|
||||||
$scheduledTime = \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d ') . $task->schedule_time);
|
$scheduledTime = \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d ') . $task->schedule_time);
|
||||||
$now = Carbon::now();
|
$now = Carbon::now();
|
||||||
|
|
||||||
|
$alreadyRunToday = $tenantLastRun == null ? true : $tenantLastRun->isToday() ?? false;
|
||||||
$alreadyRunToday = $task->last_run?->isToday() ?? false;
|
|
||||||
|
|
||||||
if (!$alreadyRunToday && $now >= $scheduledTime) {
|
if (!$alreadyRunToday && $now >= $scheduledTime) {
|
||||||
$this->runTask($task);
|
$this->runTask($task);
|
||||||
@@ -59,14 +58,18 @@ class CronTaskHandleProvider extends CommonController
|
|||||||
$logger = $this->taskLogger($task->name, app('tenant'));
|
$logger = $this->taskLogger($task->name, app('tenant'));
|
||||||
app()->instance('taskLogger', $logger);
|
app()->instance('taskLogger', $logger);
|
||||||
|
|
||||||
|
|
||||||
$taskClass = "\\App\\Tasks\\" . $task->name;
|
$taskClass = "\\App\\Tasks\\" . $task->name;
|
||||||
if (class_exists($taskClass)) {
|
if (class_exists($taskClass)) {
|
||||||
$instance = new $taskClass();
|
$instance = new $taskClass();
|
||||||
$instance->handle();
|
$instance->handle();
|
||||||
|
$lastRun = $task->last_run;
|
||||||
|
if ($lastRun === null) {
|
||||||
|
$lastRun = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$lastRun[app('tenant')->slug] = now();
|
||||||
// Update last_run
|
// Update last_run
|
||||||
$task->last_run = now();
|
$task->last_run = $lastRun;
|
||||||
$task->save();
|
$task->save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ class CloseEvent implements CronTask {
|
|||||||
$eventRepository = new EventRepository();
|
$eventRepository = new EventRepository();
|
||||||
/** @var Event $event */
|
/** @var Event $event */
|
||||||
foreach ($eventRepository->getAvailable(false) as $event) {
|
foreach ($eventRepository->getAvailable(false) as $event) {
|
||||||
|
echo $event->id . $event->tenant .'<br>';
|
||||||
if ($event->registration_final_end <= $now ) {
|
if ($event->registration_final_end <= $now ) {
|
||||||
$event->registration_allowed = false;
|
$event->registration_allowed = false;
|
||||||
$event->save();
|
$event->save();
|
||||||
|
|||||||
Reference in New Issue
Block a user