File manager - Edit - /var/www/html/gop/api/app/Http/Controllers/FiscalizacaoController.php
Back
<?php namespace App\Http\Controllers; use App\Http\Requests\Index\IndexFiscalizacaoRequest; use App\Http\Requests\Store\StoreFiscalizacaoRequest; use App\Http\Requests\Store\StoreImageRequest; use App\Http\Requests\Store\StorePrivateFieldRequest; use App\Http\Requests\Update\UpdateFiscalizacaoRequest; use App\Http\Services\ImageService; use App\Http\Services\PrivateFieldService; use App\Models\Fiscalizacao; use Exception; use Illuminate\Support\Facades\DB; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Response; /** * @OA\Tag( * name="Fiscalizacao", * description="Gerenciamento de Fiscalizações" * ) */ class FiscalizacaoController extends Controller { public function __construct() { $this->authorizeResource(Fiscalizacao::class); } /** * @OA\Get( * path="/api/fiscalizacao", * summary="Lista de fiscalizações", * operationId="IndexFiscalizacao", * tags={"Fiscalizacao"}, * security={{"bearerAuth":{}}}, * @OA\Response(response=200, description="Lista retornada com sucesso") * ) */ public function index(IndexFiscalizacaoRequest $request) { $limit = $request->limit ?? 15; $fiscalizacoes = Fiscalizacao::with(['medicoes', 'obra', 'servicos']) ->when(! empty($request->servico_id), function ($q) use ($request) { $q->where('servico_id', $request->servico_id); }) ->when(! empty($request->obra_id), function ($q) use ($request) { $q->where('obra_id', $request->obra_id); }) ->latest('id') ->paginate($limit); return response()->json($fiscalizacoes); } /** * @OA\Post( * path="/api/fiscalizacao", * summary="Cria uma nova fiscalização", * operationId="StoreFiscalizacao", * tags={"Fiscalizacao"}, * security={{"bearerAuth":{}}}, * @OA\RequestBody(required=true, @OA\JsonContent()), * @OA\Response(response=201, description="Fiscalização criada com sucesso"), * @OA\Response(response=500, description="Erro ao criar fiscalização") * ) */ public function store(StoreFiscalizacaoRequest $request) { try { DB::beginTransaction(); $data = $request->validated(); $data['user_id'] = auth()->user()->id; $data['name'] = auth()->user()->name; $data['document'] = auth()->user()->document; $fiscalizacao = Fiscalizacao::create($data); if ($request->has('servicos')) { foreach ($data['servicos'] as $servico) { $fiscalizacao->servicos()->create($servico); } } } catch (Exception $e) { DB::rollBack(); return response()->json( [$e->getMessage()], JsonResponse::HTTP_INTERNAL_SERVER_ERROR ); } DB::commit(); return response()->json($fiscalizacao->load(['servicos']), JsonResponse::HTTP_CREATED); } /** * @OA\Get( * path="/api/fiscalizacao/{fiscalizacao}", * summary="Exibe uma fiscalização", * operationId="ShowFiscalizacao", * tags={"Fiscalizacao"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="fiscalizacao", in="path", required=true, @OA\Schema(type="string")), * @OA\Response(response=200, description="Fiscalização retornada com sucesso") * ) */ public function show(Fiscalizacao $fiscalizacao) { return response()->json($fiscalizacao->load(['medicoes.subitem', 'obra', 'servicos'])); } /** * @OA\Put( * path="/api/fiscalizacao/{fiscalizacao}", * summary="Atualiza uma fiscalização", * operationId="UpdateFiscalizacao", * tags={"Fiscalizacao"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="fiscalizacao", in="path", required=true, @OA\Schema(type="string")), * @OA\RequestBody(required=true, @OA\JsonContent()), * @OA\Response(response=200, description="Fiscalização atualizada com sucesso") * ) */ public function update(UpdateFiscalizacaoRequest $request, Fiscalizacao $fiscalizacao) { return response()->json($fiscalizacao->update($request->validated())); } /** * @OA\Delete( * path="/api/fiscalizacao/{fiscalizacao}", * summary="Remove uma fiscalização", * operationId="DeleteFiscalizacao", * tags={"Fiscalizacao"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="fiscalizacao", in="path", required=true, @OA\Schema(type="string")), * @OA\Response(response=204, description="Fiscalização removida com sucesso") * ) */ public function destroy(Fiscalizacao $fiscalizacao) { $fiscalizacao->delete(); return response()->json([], JsonResponse::HTTP_NO_CONTENT); } /** * @OA\Get( * path="/api/fiscalizacao/{fiscalizacao}/campos-ocultos", * summary="Campos privados da fiscalização", * operationId="ShowFiscalizacaoPrivateFields", * tags={"Fiscalizacao"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="fiscalizacao", in="path", required=true, @OA\Schema(type="string")), * @OA\Response(response=200, description="Campos privados retornados com sucesso") * ) */ public function showPrivateFields(Fiscalizacao $fiscalizacao) { $privateFieldService = new PrivateFieldService(); return $privateFieldService->show($fiscalizacao); } /** * @OA\Post( * path="/api/fiscalizacao/{fiscalizacao}/campos-ocultos", * summary="Modifica campos privados da fiscalização", * operationId="SetFiscalizacaoPrivateFields", * tags={"Fiscalizacao"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="fiscalizacao", in="path", required=true, @OA\Schema(type="string")), * @OA\RequestBody(required=true, @OA\JsonContent()), * @OA\Response(response=200, description="Campos privados atualizados com sucesso") * ) */ public function setPrivateFields(StorePrivateFieldRequest $request, Fiscalizacao $fiscalizacao) { $privateFieldService = new PrivateFieldService(); return $privateFieldService->setPrivateFields($request, $fiscalizacao); } /** * @OA\Post( * path="/api/fiscalizacao/{fiscalizacao}/images", * summary="Adiciona imagem à fiscalização", * operationId="StoreFiscalizacaoImage", * tags={"Fiscalizacao"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="fiscalizacao", in="path", required=true, @OA\Schema(type="string")), * @OA\RequestBody(required=true, @OA\JsonContent()), * @OA\Response(response=201, description="Imagem adicionada com sucesso") * ) */ public function storeImage(StoreImageRequest $request, Fiscalizacao $fiscalizacao) { $imageService = new ImageService(); $image = $imageService->storeImage($request, $fiscalizacao); return response()->json($image, Response::HTTP_CREATED); } /** * @OA\Get( * path="/api/fiscalizacao/{fiscalizacao}/images", * summary="Lista as imagens da fiscalização", * operationId="ShowFiscalizacaoImages", * tags={"Fiscalizacao"}, * security={{"bearerAuth":{}}}, * @OA\Parameter(name="fiscalizacao", in="path", required=true, @OA\Schema(type="string")), * @OA\Response(response=200, description="Imagens retornadas com sucesso") * ) */ public function showModelImages(Fiscalizacao $fiscalizacao) { $imageService = new ImageService(); $images = $imageService->showModelImages($fiscalizacao); return response()->json($images, Response::HTTP_OK); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings