json([ 'servers' => Server::isUsable()->get(), ]); } public function destinations() { return response()->json([ 'destinations' => Server::destinationsByServer(request()->query('server_id'))->sortBy('name'), ]); } public function projects() { return response()->json([ 'projects' => Project::ownedByCurrentTeam()->get(), ]); } public function environments() { $project = Project::ownedByCurrentTeam()->whereUuid(request()->query('project_uuid'))->first(); if (! $project) { return response()->json([ 'environments' => [], ]); } return response()->json([ 'environments' => $project->environments, ]); } public function newProject() { $project = Project::firstOrCreate( ['name' => request()->query('name') ?? generate_random_name()], ['team_id' => currentTeam()->id] ); return response()->json([ 'project_uuid' => $project->uuid, ]); } public function newEnvironment() { $environment = Environment::firstOrCreate( ['name' => request()->query('name') ?? generate_random_name()], ['project_id' => Project::ownedByCurrentTeam()->whereUuid(request()->query('project_uuid'))->firstOrFail()->id] ); return response()->json([ 'environment_name' => $environment->name, ]); } public function newTeam() { $team = Team::create( [ 'name' => request()->query('name') ?? generate_random_name(), 'personal_team' => false, ], ); auth()->user()->teams()->attach($team, ['role' => 'admin']); refreshSession(); return redirect(request()->header('Referer')); } }