File manager - Edit - /var/www/html/gop/api/app/Http/Controllers/MaterialController.php
Back
<?php namespace App\Http\Controllers; use App\Http\Requests\Index\IndexMaterialRequest; use App\Http\Requests\Store\StoreMaterialRequest; use App\Http\Requests\Store\StorePrivateFieldRequest; use App\Http\Requests\Update\UpdateMaterialRequest; use App\Http\Services\PrivateFieldService; use App\Models\Material; use Illuminate\Http\JsonResponse; use Symfony\Component\HttpFoundation\Response; /** * @OA\Tag( * name="Material", * description="Gerenciamento de Materiais" * ) */ class MaterialController extends Controller { public function __construct() { $this->authorizeResource(Material::class); } /** * @OA\Get( * path="/api/material", * summary="Lista de materiais", * operationId="IndexMaterial", * tags={"Material"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="fornecimento_id", in="query", @OA\Schema(type="integer"), description="Filtra por fornecimento"), * @OA\Parameter(name="limit", in="query", @OA\Schema(type="integer", default=15)), * @OA\Response(response=200, description="Materiais retornados com sucesso") * ) */ public function index(IndexMaterialRequest $request) { $limit = $request->limit ?? 15; $materiais = Material::with(['fornecimento']) ->when(! empty($request->fornecimento_id), function ($q) use ($request) { $q->where('fornecimento_id', $request->fornecimento_id); }) ->latest('id') ->paginate($limit); return response()->json($materiais); } /** * @OA\Post( * path="/api/material", * summary="Cria novo material", * operationId="StoreMaterial", * tags={"Material"}, * security={{"bearerAuth":{}}}, * @OA\RequestBody(required=true, @OA\JsonContent()), * @OA\Response(response=201, description="Material criado com sucesso") * ) */ public function store(StoreMaterialRequest $request) { return response()->json(Material::create($request->validated()), Response::HTTP_CREATED); } /** * @OA\Get( * path="/api/material/{material}", * summary="Exibe um material", * operationId="ShowMaterial", * tags={"Material"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="material", in="path", required=true, @OA\Schema(type="integer", format="int64")), * @OA\Response(response=200, description="Material retornado com sucesso") * ) */ public function show(Material $material) { return response()->json($material->load(['fornecimento'])); } /** * @OA\Put( * path="/api/material/{material}", * summary="Atualiza um material", * operationId="UpdateMaterial", * tags={"Material"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="material", in="path", required=true, @OA\Schema(type="integer", format="int64")), * @OA\RequestBody(required=true, @OA\JsonContent()), * @OA\Response(response=200, description="Material atualizado com sucesso") * ) */ public function update(UpdateMaterialRequest $request, Material $material) { $material->update($request->validated()); return response()->json($material, Response::HTTP_OK); } /** * @OA\Delete( * path="/api/material/{material}", * summary="Remove um material", * operationId="DeleteMaterial", * tags={"Material"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="material", in="path", required=true, @OA\Schema(type="integer", format="int64")), * @OA\Response(response=204, description="Material removido com sucesso") * ) */ public function destroy(Material $material) { $material->delete(); return response()->json([], Response::HTTP_NO_CONTENT); } /** * @OA\Get( * path="/api/material/{material}/campos-ocultos", * summary="Campos privados do material", * operationId="ShowMaterialPrivateFields", * tags={"Material"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="material", in="path", required=true, @OA\Schema(type="integer", format="int64")), * @OA\Response(response=200, description="Campos privados retornados com sucesso") * ) */ public function showPrivateFields(Material $material) { $privateFieldService = new PrivateFieldService(); return $privateFieldService->show($material); } /** * @OA\Post( * path="/api/material/{material}/campos-ocultos", * summary="Atualiza campos privados do material", * operationId="SetMaterialPrivateFields", * tags={"Material"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="material", in="path", required=true, @OA\Schema(type="integer", format="int64")), * @OA\RequestBody(required=true, @OA\JsonContent()), * @OA\Response(response=200, description="Campos privados atualizados com sucesso") * ) */ public function setPrivateFields(StorePrivateFieldRequest $request, Material $material) { $privateFieldService = new PrivateFieldService(); return $privateFieldService->setPrivateFields($request, $material); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.01 |
proxy
|
phpinfo
|
Settings