Fixed issue Crons running for tenants

This commit is contained in:
2026-05-23 19:27:20 +02:00
parent ef8f3ebe6c
commit 998a799c3a
3 changed files with 12 additions and 7 deletions
+2 -1
View File
@@ -3,6 +3,7 @@
namespace App\Models;
use App\Scopes\CommonModel;
use Illuminate\Database\Eloquent\Casts\AsArrayObject;
class CronTask extends CommonModel
{
@@ -11,6 +12,6 @@ class CronTask extends CommonModel
protected $dates = ['last_run'];
protected $casts = [
'last_run' => 'datetime',
'last_run' => AsArrayObject::class,
];
}
+9 -6
View File
@@ -17,7 +17,6 @@ class CronTaskHandleProvider extends CommonController
$now = Carbon::now();
$tenants = Tenant::where('has_active_instance', true)->get();
foreach ($tenants as $tenant) {
app()->instance('tenant', $tenant);
$this->runTenantTasks($tenant, $now);
@@ -31,7 +30,6 @@ class CronTaskHandleProvider extends CommonController
private function runTenantTasks(Tenant $tenant, Carbon $now) {
$tasks = CronTask::all();
foreach ($tasks as $task) {
// --- Every-Time Tasks ---
@@ -41,11 +39,12 @@ class CronTaskHandleProvider extends CommonController
// --- Daily Tasks ---
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);
$now = Carbon::now();
$alreadyRunToday = $task->last_run?->isToday() ?? false;
$alreadyRunToday = $tenantLastRun == null ? true : $tenantLastRun->isToday() ?? false;
if (!$alreadyRunToday && $now >= $scheduledTime) {
$this->runTask($task);
@@ -59,14 +58,18 @@ class CronTaskHandleProvider extends CommonController
$logger = $this->taskLogger($task->name, app('tenant'));
app()->instance('taskLogger', $logger);
$taskClass = "\\App\\Tasks\\" . $task->name;
if (class_exists($taskClass)) {
$instance = new $taskClass();
$instance->handle();
$lastRun = $task->last_run;
if ($lastRun === null) {
$lastRun = [];
}
$lastRun[app('tenant')->slug] = now();
// Update last_run
$task->last_run = now();
$task->last_run = $lastRun;
$task->save();
}
}
+1
View File
@@ -12,6 +12,7 @@ class CloseEvent implements CronTask {
$eventRepository = new EventRepository();
/** @var Event $event */
foreach ($eventRepository->getAvailable(false) as $event) {
echo $event->id . $event->tenant .'<br>';
if ($event->registration_final_end <= $now ) {
$event->registration_allowed = false;
$event->save();