81 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Controllers;
 | |
| 
 | |
| use App\Models\Environment;
 | |
| use App\Models\Project;
 | |
| use App\Models\Server;
 | |
| use App\Models\Team;
 | |
| 
 | |
| class MagicController extends Controller
 | |
| {
 | |
|     public function servers()
 | |
|     {
 | |
|         return response()->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'));
 | |
|     }
 | |
| }
 | 
