68 lines
2.1 KiB
PHP
68 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',
|
|
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));
|
|
}
|
|
}
|