'required|string', 'command' => 'required|string', 'frequency' => 'required|string', 'container' => 'nullable|string', ]; protected $validationAttributes = [ 'name' => 'name', 'command' => 'command', 'frequency' => 'frequency', 'container' => 'container', ]; public function mount() { $this->parameters = get_route_parameters(); // Get the resource based on type and id switch ($this->type) { case 'application': $this->resource = \App\Models\Application::findOrFail($this->id); break; case 'service': $this->resource = \App\Models\Service::findOrFail($this->id); break; case 'standalone-postgresql': $this->resource = \App\Models\StandalonePostgresql::findOrFail($this->id); break; default: throw new \Exception('Invalid resource type'); } if ($this->containerNames->count() > 0) { $this->container = $this->containerNames->first(); } } public function submit() { try { $this->authorize('update', $this->resource); $this->validate(); $isValid = validate_cron_expression($this->frequency); if (! $isValid) { $this->dispatch('error', 'Invalid Cron / Human expression.'); return; } if (empty($this->container) || $this->container === 'null') { if ($this->type === 'service') { $this->container = $this->subServiceName; } } $this->saveScheduledTask(); $this->clear(); } catch (\Exception $e) { return handleError($e, $this); } } public function saveScheduledTask() { try { $task = new ScheduledTask; $task->name = $this->name; $task->command = $this->command; $task->frequency = $this->frequency; $task->container = $this->container; $task->team_id = currentTeam()->id; switch ($this->type) { case 'application': $task->application_id = $this->id; break; case 'standalone-postgresql': $task->standalone_postgresql_id = $this->id; break; case 'service': $task->service_id = $this->id; break; } $task->save(); $this->dispatch('refreshTasks'); $this->dispatch('success', 'Scheduled task added.'); } catch (\Throwable $e) { return handleError($e, $this); } } public function clear() { $this->name = ''; $this->command = ''; $this->frequency = ''; $this->container = ''; } }