69 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Controllers\Api;
 | |
| 
 | |
| use App\Http\Controllers\Controller;
 | |
| use App\Models\Project;
 | |
| use Illuminate\Http\Request;
 | |
| use OpenApi\Attributes as OA;
 | |
| 
 | |
| class ResourcesController extends Controller
 | |
| {
 | |
|     #[OA\Get(
 | |
|         summary: 'List',
 | |
|         description: 'Get all resources.',
 | |
|         path: '/resources',
 | |
|         operationId: 'list-resources',
 | |
|         security: [
 | |
|             ['bearerAuth' => []],
 | |
|         ],
 | |
|         tags: ['Resources'],
 | |
|         responses: [
 | |
|             new OA\Response(
 | |
|                 response: 200,
 | |
|                 description: 'Get all resources',
 | |
|                 content: new OA\JsonContent(
 | |
|                     type: 'string',
 | |
|                     example: 'Content is very complex. Will be implemented later.',
 | |
|                 ),
 | |
|             ),
 | |
|             new OA\Response(
 | |
|                 response: 401,
 | |
|                 ref: '#/components/responses/401',
 | |
|             ),
 | |
|             new OA\Response(
 | |
|                 response: 400,
 | |
|                 ref: '#/components/responses/400',
 | |
|             ),
 | |
|         ]
 | |
|     )]
 | |
|     public function resources(Request $request)
 | |
|     {
 | |
|         $teamId = getTeamIdFromToken();
 | |
|         if (is_null($teamId)) {
 | |
|             return invalidTokenResponse();
 | |
|         }
 | |
|         $projects = Project::where('team_id', $teamId)->get();
 | |
|         $resources = collect();
 | |
|         $resources->push($projects->pluck('applications')->flatten());
 | |
|         $resources->push($projects->pluck('services')->flatten());
 | |
|         foreach (collect(DATABASE_TYPES) as $db) {
 | |
|             $resources->push($projects->pluck(str($db)->plural(2))->flatten());
 | |
|         }
 | |
|         $resources = $resources->flatten();
 | |
|         $resources = $resources->map(function ($resource) {
 | |
|             $payload = $resource->toArray();
 | |
|             if ($resource->getMorphClass() === 'App\Models\Service') {
 | |
|                 $payload['status'] = $resource->status();
 | |
|             } else {
 | |
|                 $payload['status'] = $resource->status;
 | |
|             }
 | |
|             $payload['type'] = $resource->type();
 | |
| 
 | |
|             return $payload;
 | |
|         });
 | |
| 
 | |
|         return response()->json(serializeApiResponse($resources));
 | |
|     }
 | |
| }
 | 
