resource); $resourceWithPreviews = ['App\Models\Application']; $simpleDockerfile = !is_null(data_get($this->resource, 'dockerfile')); if (Str::of($resourceClass)->contains($resourceWithPreviews) && !$simpleDockerfile) { $this->showPreview = true; } $this->modalId = new Cuid2(7); $this->getDevView(); } public function getDevView() { $this->variables = $this->resource->environment_variables->map(function ($item) { return "$item->key=$item->value"; })->sort()->join(' '); if ($this->showPreview) { $this->variablesPreview = $this->resource->environment_variables_preview->map(function ($item) { return "$item->key=$item->value"; })->sort()->join(' '); } } public function switch() { $this->view = $this->view === 'normal' ? 'dev' : 'normal'; } public function saveVariables($isPreview) { if ($isPreview) { $variables = parseEnvFormatToArray($this->variablesPreview); $existingVariables = $this->resource->environment_variables_preview(); $this->resource->environment_variables_preview()->delete(); } else { $variables = parseEnvFormatToArray($this->variables); $existingVariables = $this->resource->environment_variables(); $this->resource->environment_variables()->delete(); } foreach ($variables as $key => $variable) { $found = $existingVariables->where('key', $key)->first(); if ($found) { $found->value = $variable; $found->save(); continue; } else { $environment = new EnvironmentVariable(); $environment->key = $key; $environment->value = $variable; $environment->is_build_time = false; $environment->is_preview = $isPreview ? true : false; switch ($this->resource->type()) { case 'application': $environment->application_id = $this->resource->id; break; case 'standalone-postgresql': $environment->standalone_postgresql_id = $this->resource->id; break; case 'service': $environment->service_id = $this->resource->id; break; } $environment->save(); } } if ($isPreview) { $this->emit('success', 'Preview environment variables updated successfully.'); } else { $this->emit('success', 'Environment variables updated successfully.'); } $this->refreshEnvs(); } public function refreshEnvs() { $this->resource->refresh(); $this->getDevView(); } public function submit($data) { try { $found = $this->resource->environment_variables()->where('key', $data['key'])->first(); if ($found) { $this->emit('error', 'Environment variable already exists.'); return; } $environment = new EnvironmentVariable(); $environment->key = $data['key']; $environment->value = $data['value']; $environment->is_build_time = $data['is_build_time']; $environment->is_preview = $data['is_preview']; switch ($this->resource->type()) { case 'application': $environment->application_id = $this->resource->id; break; case 'standalone-postgresql': $environment->standalone_postgresql_id = $this->resource->id; break; case 'service': $environment->service_id = $this->resource->id; break; } $environment->save(); $this->refreshEnvs(); $this->emit('success', 'Environment variable added successfully.'); } catch (\Throwable $e) { return handleError($e, $this); } } }