File manager - Edit - /var/www/html/gop/api/app/Http/Controllers/MedicaoController.php
Back
<?php namespace App\Http\Controllers; use App\Http\Requests\Index\IndexMedicaoRequest; use App\Http\Requests\Store\StoreImageRequest; use App\Http\Requests\Store\StoreMedicaoRequest; use App\Http\Requests\Store\StorePrivateFieldRequest; use App\Http\Requests\Update\UpdateMedicaoRequest; use App\Http\Services\ImageService; use App\Http\Services\PrivateFieldService; use App\Models\Medicao; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Response; /** * @OA\Tag( * name="Medicao", * description="Gerenciamento de Medições" * ) */ class MedicaoController extends Controller { public function __construct() { $this->authorizeResource(Medicao::class); } /** * @OA\Get( * path="/api/medicao", * summary="Lista de medições", * operationId="IndexMedicao", * tags={"Medicao"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="subitem_id", in="query", @OA\Schema(type="integer"), description="Filtra por subitem"), * @OA\Parameter(name="prestador_id", in="query", @OA\Schema(type="integer"), description="Filtra por prestador"), * @OA\Parameter(name="fiscalizacao_id", in="query", @OA\Schema(type="integer"), description="Filtra por fiscalização"), * @OA\Parameter(name="limit", in="query", @OA\Schema(type="integer", default=15)), * @OA\Response(response=200, description="Medições retornadas com sucesso") * ) */ public function index(IndexMedicaoRequest $request) { $limit = $request->limit ?? 15; $medicoes = Medicao::with(['subitem', 'prestador', 'fiscalizacao']) ->when(! empty($request->subitem_id), function ($q) use ($request) { $q->where('fase_servico_subitem_id', $request->subitem_id); }) ->when(! empty($request->prestador_id), function ($q) use ($request) { $q->where('prestador_id', $request->prestador_id); }) ->when(! empty($request->fiscalizacao_id), function ($q) use ($request) { $q->where('fiscalizacao_id', $request->fiscalizacao_id); }) ->latest('id') ->paginate($limit); return response()->json($medicoes); } /** * @OA\Post( * path="/api/medicao", * summary="Cria nova medição", * operationId="StoreMedicao", * tags={"Medicao"}, * security={{"bearerAuth":{}}}, * @OA\RequestBody(required=true, @OA\JsonContent()), * @OA\Response(response=201, description="Medição criada com sucesso") * ) */ public function store(StoreMedicaoRequest $request) { return response()->json(Medicao::create($request->validated()), JsonResponse::HTTP_CREATED); } /** * @OA\Get( * path="/api/medicao/{medicao}", * summary="Exibe uma medição", * operationId="ShowMedicao", * tags={"Medicao"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="medicao", in="path", required=true, @OA\Schema(type="integer", format="int64")), * @OA\Response(response=200, description="Medição retornada com sucesso") * ) */ public function show(Medicao $medicao) { return response()->json($medicao->load(['subitem', 'prestador'])); } /** * @OA\Put( * path="/api/medicao/{medicao}", * summary="Atualiza medição", * operationId="UpdateMedicao", * tags={"Medicao"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="medicao", in="path", required=true, @OA\Schema(type="integer", format="int64")), * @OA\RequestBody(required=true, @OA\JsonContent()), * @OA\Response(response=200, description="Medição atualizada com sucesso") * ) */ public function update(UpdateMedicaoRequest $request, Medicao $medicao) { return response()->json($medicao->update($request->validated())); } /** * @OA\Delete( * path="/api/medicao/{medicao}", * summary="Remove medição", * operationId="DeleteMedicao", * tags={"Medicao"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="medicao", in="path", required=true, @OA\Schema(type="integer", format="int64")), * @OA\Response(response=204, description="Medição removida com sucesso") * ) */ public function destroy(Medicao $medicao) { $medicao->delete(); return response()->json([], JsonResponse::HTTP_NO_CONTENT); } /** * @OA\Get( * path="/api/medicao/{medicao}/campos-ocultos", * summary="Campos privados da medição", * operationId="ShowMedicaoPrivateFields", * tags={"Medicao"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="medicao", in="path", required=true, @OA\Schema(type="integer", format="int64")), * @OA\Response(response=200, description="Campos privados retornados com sucesso") * ) */ public function showPrivateFields(Medicao $medicao) { $privateFieldService = new PrivateFieldService(); return $privateFieldService->show($medicao); } /** * @OA\Post( * path="/api/medicao/{medicao}/campos-ocultos", * summary="Atualiza campos privados da medição", * operationId="SetMedicaoPrivateFields", * tags={"Medicao"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="medicao", 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, Medicao $medicao) { $privateFieldService = new PrivateFieldService(); return $privateFieldService->setPrivateFields($request, $medicao); } /** * @OA\Post( * path="/api/medicao/{medicao}/images", * summary="Adiciona imagem à medição", * operationId="StoreMedicaoImage", * tags={"Medicao"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="medicao", in="path", required=true, @OA\Schema(type="integer", format="int64")), * @OA\RequestBody(required=true, @OA\JsonContent()), * @OA\Response(response=201, description="Imagem adicionada com sucesso") * ) */ public function storeImage(StoreImageRequest $request, Medicao $medicao) { $imageService = new ImageService(); $image = $imageService->storeImage($request, $medicao); return response()->json($image, Response::HTTP_CREATED); } /** * @OA\Get( * path="/api/medicao/{medicao}/images", * summary="Lista imagens da medição", * operationId="ShowMedicaoImages", * tags={"Medicao"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="medicao", in="path", required=true, @OA\Schema(type="integer", format="int64")), * @OA\Response(response=200, description="Imagens retornadas com sucesso") * ) */ public function showModelImages(Medicao $medicao) { $imageService = new ImageService(); $images = $imageService->showModelImages($medicao); return response()->json($images, Response::HTTP_OK); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings