File manager - Edit - /var/www/html/gop/api/app/Http/Controllers/EmpenhoController.php
Back
<?php namespace App\Http\Controllers; use App\Http\Requests\Index\IndexEmpenhoRequest; use App\Http\Requests\Store\StoreArquivoRequest; use App\Http\Requests\Store\StoreEmpenhoRequest; use App\Http\Requests\Store\StoreImageRequest; use App\Http\Requests\Store\StorePrivateFieldRequest; use App\Http\Requests\Update\UpdateEmpenhoRequest; use App\Http\Services\ArquivoService; use App\Http\Services\ImageService; use App\Http\Services\PrivateFieldService; use App\Models\Empenho; use App\Models\Obra; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Response; /** * @OA\Tag( * name="Empenho", * description="Gerenciamento de Empenhos" * ) */ class EmpenhoController extends Controller { public function __construct() { $this->authorizeResource(Empenho::class); } /** * @OA\Get( * path="/api/empenhos", * summary="Lista Empenhos", * operationId="IndexEmpenho", * tags={"Empenho"}, * security={{"bearerAuth":{}}}, * @OA\Response(response=200, description="Empenhos retornados com sucesso") * ) */ public function index(IndexEmpenhoRequest $request) { $limit = $request->limit ?? 15; $empenho = Empenho::with(['obra', 'notasFiscais', 'anulacoes', 'fornecimentos']) ->when(! empty($request->numero), function ($q) use ($request) { $q->where('numero', 'LIKE', '%'.$request->numero.'%'); }) ->when(! empty($request->obra_id), function ($q) use ($request) { $q->where('obra_id', $request->obra_id); }) ->latest('id') ->paginate($limit); return response()->json($empenho); } /** * @OA\Post( * path="/api/empenhos", * summary="Cria Empenho", * operationId="StoreEmpenho", * tags={"Empenho"}, * security={{"bearerAuth":{}}}, * @OA\RequestBody(required=true, @OA\JsonContent()), * @OA\Response(response=201, description="Empenho criado com sucesso"), * @OA\Response(response=422, description="Valor excede disponibilidade da obra") * ) */ public function store(StoreEmpenhoRequest $request) { $obra = Obra::findOrFail($request->obra_id); if (round((float) $obra->valor_empenhado + (float) $request->valor, 2) > (float) $obra->valor_ajustado) { $valor_disponivel = (float) $obra->valor_ajustado - (float) $obra->valor_empenhado; $valor_disponivel = number_format($valor_disponivel, 2, ',', ''); return response()->json([ 'message' => "Atualmente a obra possui apenas R\$$valor_disponivel disponíveis para empenho.", 'errors' => [ 'valor' => 'O valor informado ultrapassou o valor disponível.', ], ], JsonResponse::HTTP_UNPROCESSABLE_ENTITY); } return response()->json( Empenho::create($request->validated()), JsonResponse::HTTP_CREATED ); } /** * @OA\Get( * path="/api/empenhos/{empenho}", * summary="Mostra Empenho", * operationId="ShowEmpenho", * tags={"Empenho"}, * security={{"bearerAuth":{}}}, * @OA\Parameter( * name="empenho", * in="path", * required=true, * @OA\Schema(type="string") * ), * @OA\Response(response=200, description="Empenho retornado com sucesso") * ) */ public function show(Empenho $empenho) { return response()->json( $empenho->load(['obra', 'notasFiscais', 'anulacoes', 'fornecimentos']) ); } /** * @OA\Put( * path="/api/empenhos/{empenho}", * summary="Atualiza Empenho", * operationId="UpdateEmpenho", * tags={"Empenho"}, * security={{"bearerAuth":{}}}, * @OA\Parameter( * name="empenho", * in="path", * required=true, * @OA\Schema(type="string") * ), * @OA\RequestBody(required=true, @OA\JsonContent()), * @OA\Response(response=200, description="Empenho atualizado com sucesso"), * @OA\Response(response=422, description="Valor excede disponibilidade da obra") * ) */ public function update(UpdateEmpenhoRequest $request, Empenho $empenho) { $obra = Obra::findOrFail($request->obra_id); if ((float) $obra->valor_empenhado + (float) $request->valor > ((float) $obra->valor_ajustado + (float) $empenho->valor)) { $valor_disponivel = (float) $obra->valor_ajustado - (float) $obra->valor_empenhado + (float) $empenho->valor; $valor_disponivel = number_format($valor_disponivel, 2, ',', ''); return response()->json([ 'message' => "Atualmente a obra possui apenas R\$$valor_disponivel disponíveis para empenho.", 'errors' => [ 'valor' => 'O valor informado ultrapassou o valor disponível.', ], ], JsonResponse::HTTP_UNPROCESSABLE_ENTITY); } $empenho->update($request->validated()); return response()->json($empenho); } /** * @OA\Delete( * path="/api/empenhos/{empenho}", * summary="Remove Empenho", * operationId="DeleteEmpenho", * tags={"Empenho"}, * security={{"bearerAuth":{}}}, * @OA\Parameter( * name="empenho", * in="path", * required=true, * @OA\Schema(type="string") * ), * @OA\Response(response=204, description="Empenho removido com sucesso") * ) */ public function destroy(Empenho $empenho) { $empenho->delete(); return response()->json([], JsonResponse::HTTP_NO_CONTENT); } /** * @OA\Get( * path="/api/empenhos/{empenho}/campos-ocultos", * summary="Mostra campos privados do Empenho", * operationId="ShowEmpenhoPrivateFields", * tags={"Empenho"}, * security={{"bearerAuth":{}}}, * @OA\Parameter( * name="empenho", * in="path", * required=true, * @OA\Schema(type="string") * ), * @OA\Response(response=200, description="Campos privados retornados com sucesso") * ) */ public function showPrivateFields(Empenho $empenho) { $privateFieldService = new PrivateFieldService(); return $privateFieldService->show($empenho); } /** * @OA\Put( * path="/api/empenhos/{empenho}/campos-ocultos", * summary="Modifica campos privados do Empenho", * operationId="SetEmpenhoPrivateFields", * tags={"Empenho"}, * security={{"bearerAuth":{}}}, * @OA\Parameter( * name="empenho", * in="path", * required=true, * @OA\Schema(type="string") * ), * @OA\RequestBody(required=true, @OA\JsonContent()), * @OA\Response(response=200, description="Campos privados modificados com sucesso") * ) */ public function setPrivateFields(StorePrivateFieldRequest $request, Empenho $empenho) { $privateFieldService = new PrivateFieldService(); return $privateFieldService->setPrivateFields($request, $empenho); } /** * @OA\Post( * path="/api/empenhos/{empenho}/images", * summary="Adiciona imagem ao Empenho", * operationId="StoreEmpenhoImage", * tags={"Empenho"}, * security={{"bearerAuth":{}}}, * @OA\Parameter( * name="empenho", * in="path", * required=true, * @OA\Schema(type="string") * ), * @OA\RequestBody( * required=true, * @OA\MediaType( * mediaType="multipart/form-data", * @OA\Schema( * @OA\Property(property="file", type="string", format="binary") * ) * ) * ), * @OA\Response(response=201, description="Imagem adicionada com sucesso") * ) */ public function storeImage(StoreImageRequest $request, Empenho $empenho) { $imageService = new ImageService(); $image = $imageService->storeImage($request, $empenho); return response()->json($image, Response::HTTP_CREATED); } /** * @OA\Get( * path="/api/empenhos/{empenho}/images", * summary="Mostra imagens do Empenho", * operationId="ShowEmpenhoImages", * tags={"Empenho"}, * security={{"bearerAuth":{}}}, * @OA\Parameter( * name="empenho", * in="path", * required=true, * @OA\Schema(type="string") * ), * @OA\Response(response=200, description="Imagens retornadas com sucesso") * ) */ public function showModelImages(Empenho $empenho) { $imageService = new ImageService(); $images = $imageService->showModelImages($empenho); return response()->json($images, Response::HTTP_OK); } /** * @OA\Post( * path="/api/empenhos/{empenho}/files", * summary="Adiciona arquivo ao Empenho", * operationId="StoreEmpenhoFile", * tags={"Empenho"}, * security={{"bearerAuth":{}}}, * @OA\Parameter( * name="empenho", * in="path", * required=true, * @OA\Schema(type="string") * ), * @OA\RequestBody( * required=true, * @OA\MediaType( * mediaType="multipart/form-data", * @OA\Schema( * @OA\Property(property="file", type="string", format="binary") * ) * ) * ), * @OA\Response(response=201, description="Arquivo adicionado com sucesso") * ) */ public function storeFile(StoreArquivoRequest $request, Empenho $empenho) { $arquivoService = new ArquivoService(); $arquivo = $arquivoService->storeFile($request, $empenho); return response()->json($arquivo, Response::HTTP_CREATED); } /** * @OA\Get( * path="/api/empenhos/{empenho}/files", * summary="Mostra arquivos do Empenho", * operationId="ShowEmpenhoFiles", * tags={"Empenho"}, * security={{"bearerAuth":{}}}, * @OA\Parameter( * name="empenho", * in="path", * required=true, * @OA\Schema(type="string") * ), * @OA\Response(response=200, description="Arquivos retornados com sucesso") * ) */ public function showModelFiles(Empenho $empenho) { $arquivoService = new ArquivoService(); $arquivos = $arquivoService->showModelFiles($empenho); return response()->json($arquivos, Response::HTTP_OK); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings