File manager - Edit - /var/www/html/gop/api/app/Http/Controllers/PrestadorController.php
Back
<?php namespace App\Http\Controllers; use App\Http\Requests\Store\StorePrestadorRequest; use App\Http\Requests\Store\StorePrivateFieldRequest; use App\Http\Requests\Update\UpdatePrestadorRequest; use App\Http\Services\PrivateFieldService; use App\Models\Prestador; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Validator; use Intervention\Image\ImageManagerStatic as Image; /** * @OA\Tag( * name="Prestador", * description="Gerenciamento de Prestadores" * ) */ class PrestadorController extends Controller { public function __construct() { $this->authorizeResource(Prestador::class); } // /** // * @OA\Get( // * path="/api/prestador", // * summary="Lista de prestadores", // * operationId="IndexPrestador", // * tags={"Prestador"}, // * security={{"bearerAuth":{}}}, // * @OA\Response(response=200, description="Prestadores retornados com sucesso") // * ) // */ // public function index() // { // return response()->json(Prestador::paginate()); // } /** * @OA\Get( * path="/api/prestador", * summary="Lista de prestadores", * operationId="IndexPrestador", * tags={"Prestador"}, * security={{"bearerAuth":{}}}, * * @OA\Parameter( * name="empresa_id", * in="query", * description="Filtrar prestadores pelo id da empresa (opcional)", * required=false, * * @OA\Schema(type="integer", format="int64") * ), * * @OA\Response(response=200, description="Prestadores retornados com sucesso"), * @OA\Response(response=422, description="Parâmetros inválidos") * ) */ public function index(Request $request) { // Validação simples do parâmetro (opcional, mas recomendado) $validator = Validator::make($request->all(), [ 'empresa_id' => 'sometimes|nullable|integer|min:1', 'per_page' => 'sometimes|nullable|integer|min:1|max:500', ]); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 422); } $perPage = (int) $request->query('per_page', 15); $query = Prestador::query(); // aplica filtro por empresa_id quando informado if ($request->filled('empresa_id')) { $query->where('empresa_id', $request->query('empresa_id')); } // ordenar opcionalmente (ajuste conforme necessidade) $query->orderBy('id', 'desc'); // pagina e garante que os parâmetros permaneçam nos links $paginator = $query->paginate($perPage)->appends($request->only(['empresa_id', 'per_page'])); return response()->json($paginator); } /** * @OA\Post( * path="/api/prestador", * summary="Cria novo prestador", * operationId="StorePrestador", * tags={"Prestador"}, * security={{"bearerAuth":{}}}, * * @OA\RequestBody( * required=true, * * @OA\MediaType( * mediaType="multipart/form-data", * * @OA\Schema( * required={"nome","documento"}, * * @OA\Property(property="nome", type="string"), * @OA\Property(property="documento", type="string"), * @OA\Property(property="assinatura", type="string", format="binary") * ) * ) * ), * * @OA\Response(response=201, description="Prestador criado com sucesso") * ) */ public function store(StorePrestadorRequest $request) { $campos = $request->validated(); if ($request->hasFile('assinatura')) { $campos['assinatura'] = $this->salvarAssinatura($request); } $prestador = Prestador::create($campos); return response()->json($prestador, JsonResponse::HTTP_CREATED); } /** * @OA\Get( * path="/api/prestador/{prestador}", * summary="Exibe um prestador", * operationId="ShowPrestador", * tags={"Prestador"}, * security={{"bearerAuth":{}}}, * * @OA\Parameter( * name="prestador", * in="path", * required=true, * * @OA\Schema(type="integer", format="int64") * ), * * @OA\Response(response=200, description="Prestador retornado com sucesso") * ) */ public function show(Prestador $prestador) { return response()->json($prestador); } /** * @OA\Put( * path="/api/prestador/{prestador}", * summary="Atualiza um prestador", * operationId="UpdatePrestador", * tags={"Prestador"}, * security={{"bearerAuth":{}}}, * * @OA\Parameter( * name="prestador", * in="path", * required=true, * * @OA\Schema(type="integer", format="int64") * ), * * @OA\RequestBody( * required=true, * * @OA\MediaType( * mediaType="multipart/form-data", * * @OA\Schema( * * @OA\Property(property="nome", type="string"), * @OA\Property(property="documento", type="string"), * @OA\Property(property="assinatura", type="string", format="binary") * ) * ) * ), * * @OA\Response(response=200, description="Prestador atualizado com sucesso") * ) */ public function update(UpdatePrestadorRequest $request, Prestador $prestador) { $campos = $request->validated(); if ($request->hasFile('assinatura')) { $campos['assinatura'] = $this->salvarAssinatura($request); } $prestador->update($campos); return response()->json($prestador, JsonResponse::HTTP_OK); } /** * @OA\Delete( * path="/api/prestador/{prestador}", * summary="Remove um prestador", * operationId="DeletePrestador", * tags={"Prestador"}, * security={{"bearerAuth":{}}}, * * @OA\Parameter( * name="prestador", * in="path", * required=true, * * @OA\Schema(type="integer", format="int64") * ), * * @OA\Response(response=204, description="Prestador removido com sucesso") * ) */ public function destroy(Prestador $prestador) { $prestador->delete(); return response()->json([], JsonResponse::HTTP_NO_CONTENT); } /** * @OA\Get( * path="/api/prestador/{prestador}/campos-ocultos", * summary="Campos privados do prestador", * operationId="ShowPrestadorPrivateFields", * tags={"Prestador"}, * security={{"bearerAuth":{}}}, * * @OA\Parameter( * name="prestador", * in="path", * required=true, * * @OA\Schema(type="integer", format="int64") * ), * * @OA\Response(response=200, description="Campos privados retornados com sucesso") * ) */ public function showPrivateFields(Prestador $prestador) { $privateFieldService = new PrivateFieldService; return $privateFieldService->show($prestador); } /** * @OA\Post( * path="/api/prestador/{prestador}/campos-ocultos", * summary="Atualiza campos privados do prestador", * operationId="SetPrestadorPrivateFields", * tags={"Prestador"}, * security={{"bearerAuth":{}}}, * * @OA\Parameter( * name="prestador", * 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, Prestador $prestador) { $privateFieldService = new PrivateFieldService; return $privateFieldService->setPrivateFields($request, $prestador); } /** * Salva o arquivo de assinatura girado corretamente. */ public function salvarAssinatura($request) { $name = str($request->nome.'-'.$request->documento)->slug().'.png'; $path = 'app/public/assets/prestadores/assinaturas'; $storagePath = str_replace('\\', '/', storage_path($path)); $path = str_replace('\\', '/', $path); if (! File::exists($storagePath)) { File::makeDirectory($storagePath, 0777, true, true); } $image = Image::make($request->file('assinatura'))->rotate(-90)->encode('png'); $image->save($storagePath.'/'.$name); return str($path.'/'.$name)->replace('app/public', 'storage'); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings