diff --git a/app/Filament/Server/Resources/Schedules/RelationManagers/TasksRelationManager.php b/app/Filament/Server/Resources/Schedules/RelationManagers/TasksRelationManager.php index 6c01a5afe..cda3d70b2 100644 --- a/app/Filament/Server/Resources/Schedules/RelationManagers/TasksRelationManager.php +++ b/app/Filament/Server/Resources/Schedules/RelationManagers/TasksRelationManager.php @@ -72,7 +72,7 @@ class TasksRelationManager extends RelationManager ->default('restart'), TextInput::make('time_offset') ->label(trans('server/schedule.tasks.time_offset')) - ->hidden(fn (Get $get) => config('queue.default') === 'sync' || $get('sequence_id') === 1 || $schedule->tasks->isEmpty()) + ->hidden(fn (Get $get, ?Task $task) => config('queue.default') === 'sync' || $schedule->tasks->isEmpty() || $task?->isFirst()) ->default(0) ->numeric() ->minValue(0) @@ -108,8 +108,8 @@ class TasksRelationManager extends RelationManager TextColumn::make('time_offset') ->label(trans('server/schedule.tasks.time_offset')) ->hidden(fn () => config('queue.default') === 'sync') - ->suffix(fn (Task $task) => $task->sequence_id > 1 ? ' '. trans_choice('server/schedule.tasks.seconds', $task->time_offset) : null) - ->state(fn (Task $task) => $task->sequence_id === 1 ? null : $task->time_offset) + ->state(fn (Task $task) => $task->isFirst() ? null : $task->time_offset) + ->suffix(fn ($state) => ' ' . trans_choice('server/schedule.tasks.seconds', $state)) ->placeholder(trans('server/schedule.tasks.first_task')), IconColumn::make('continue_on_failure') ->label(trans('server/schedule.tasks.continue_on_failure')) diff --git a/app/Models/Schedule.php b/app/Models/Schedule.php index 2bb0a603e..24d4aea64 100644 --- a/app/Models/Schedule.php +++ b/app/Models/Schedule.php @@ -142,4 +142,12 @@ class Schedule extends Model implements Validatable { return $this->belongsTo(Server::class); } + + public function firstTask(): ?Task + { + /** @var ?Task $task */ + $task = $this->tasks()->orderBy('sequence_id')->first(); + + return $task; + } } diff --git a/app/Models/Task.php b/app/Models/Task.php index 563b6ccbf..cbbf00730 100644 --- a/app/Models/Task.php +++ b/app/Models/Task.php @@ -120,4 +120,9 @@ class Task extends Model implements Validatable 'server_id' // schedules.server_id ); } + + public function isFirst(): bool + { + return $this->schedule->firstTask()?->id === $this->id; + } } diff --git a/app/Services/Schedules/ProcessScheduleService.php b/app/Services/Schedules/ProcessScheduleService.php index eba2b0d69..12eb8267b 100644 --- a/app/Services/Schedules/ProcessScheduleService.php +++ b/app/Services/Schedules/ProcessScheduleService.php @@ -21,8 +21,7 @@ class ProcessScheduleService */ public function handle(Schedule $schedule, bool $now = false): void { - /** @var ?Task $task */ - $task = $schedule->tasks()->orderBy('sequence_id')->first(); + $task = $schedule->firstTask(); if (!$task) { throw new DisplayException('Cannot process schedule for task execution: no tasks are registered.');