Fixed issue Crons running for tenants
This commit is contained in:
@@ -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,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user