record; Activity::event('server:schedule.update') ->property('name', $schedule->name) ->log(); } protected function mutateFormDataBeforeSave(array $data): array { $data['next_run_at'] = ScheduleResource::getNextRun( $data['cron_minute'], $data['cron_hour'], $data['cron_day_of_month'], $data['cron_month'], $data['cron_day_of_week'] ); return $data; } /** @return array */ protected function getDefaultHeaderActions(): array { return [ DeleteAction::make() ->hiddenLabel() ->iconButton()->iconSize(IconSize::ExtraLarge) ->tooltip(trans('server/schedule.delete')) ->after(function ($record) { Activity::event('server:schedule.delete') ->property('name', $record->name) ->log(); }), Action::make('run_now') ->iconButton()->iconSize(IconSize::ExtraLarge) ->icon('tabler-run') ->authorize(fn () => user()?->can(SubuserPermission::ScheduleUpdate, Filament::getTenant())) ->tooltip(fn (Schedule $schedule) => $schedule->tasks->count() === 0 ? trans('server/schedule.no_tasks') : ($schedule->status === ScheduleStatus::Processing ? ScheduleStatus::Processing->getLabel() : trans('server/schedule.run_now'))) ->color(fn (Schedule $schedule) => $schedule->tasks->count() === 0 || $schedule->status === ScheduleStatus::Processing ? 'warning' : 'primary') ->disabled(fn (Schedule $schedule) => $schedule->tasks->count() === 0 || $schedule->status === ScheduleStatus::Processing) ->action(function (ProcessScheduleService $service, Schedule $schedule) { $service->handle($schedule, true); Activity::event('server:schedule.execute') ->subject($schedule) ->property('name', $schedule->name) ->log(); $this->fillForm(); }), ExportScheduleAction::make(), $this->getSaveFormAction()->formId('form') ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) ->icon('tabler-device-floppy') ->tooltip(trans('server/schedule.save')), ]; } public function getBreadcrumbs(): array { return []; } protected function getFormActions(): array { return []; } }