File manager - Edit - /var/www/html/portalHomolog/app/Http/Services/Observatorio/MapaService.php
Back
<?php namespace App\Http\Services\Observatorio; use App\Models\Observatorio\Mapa; use App\Models\Observatorio\MapaTema; use Illuminate\Contracts\Pagination\LengthAwarePaginator; use Illuminate\Http\Request; use Illuminate\Http\UploadedFile; use Illuminate\Support\Facades\DB; class MapaService { public function listTemas(Request $request, int $perPage = 20): LengthAwarePaginator { return MapaTema::query() ->withCount('mapas') ->when($request->filled('q'), function ($query) use ($request) { $query->where('nome', 'like', '%' . trim((string) $request->input('q')) . '%'); }) ->orderBy('nome') ->paginate($perPage) ->appends($request->query()); } public function listMapas(Request $request, int $perPage = 20): LengthAwarePaginator { return Mapa::query() ->with('tema') ->when($request->filled('mapa_tema_id'), function ($query) use ($request) { $query->where('mapa_tema_id', (int) $request->input('mapa_tema_id')); }) ->when($request->filled('q'), function ($query) use ($request) { $query->where('titulo', 'like', '%' . trim((string) $request->input('q')) . '%'); }) ->orderBy('titulo') ->paginate($perPage) ->appends($request->query()); } public function createTema(array $data, ?UploadedFile $iconeArquivo = null): MapaTema { return DB::connection('mysql_observatorio')->transaction(function () use ($data, $iconeArquivo): MapaTema { $data = $this->sanitize($data); ObservatorioUploadHelper::applyIconeUpload( $data, $iconeArquivo, null, ObservatorioUploadHelper::FOLDER_MAPA_TEMA ); return MapaTema::create($data); }); } public function updateTema(MapaTema $tema, array $data, ?UploadedFile $iconeArquivo = null): MapaTema { DB::connection('mysql_observatorio')->transaction(function () use ($tema, $data, $iconeArquivo): void { $data = $this->sanitize($data); ObservatorioUploadHelper::applyIconeUpload( $data, $iconeArquivo, $tema->icone, ObservatorioUploadHelper::FOLDER_MAPA_TEMA ); $tema->update($data); }); return $tema; } public function deleteTema(MapaTema $tema): void { DB::connection('mysql_observatorio')->transaction(function () use ($tema): void { ObservatorioUploadHelper::deleteIcone($tema->icone); $tema->delete(); }); } public function createMapa(array $data): Mapa { return DB::connection('mysql_observatorio')->transaction( fn () => Mapa::create($this->sanitize($data)) ); } public function updateMapa(Mapa $mapa, array $data): Mapa { DB::connection('mysql_observatorio')->transaction(function () use ($mapa, $data): void { $mapa->update($this->sanitize($data)); }); return $mapa; } public function deleteMapa(Mapa $mapa): void { DB::connection('mysql_observatorio')->transaction(function () use ($mapa): void { $mapa->delete(); }); } private function sanitize(array $data): array { $data['status'] = $data['status'] ?? 'ATIVADO'; if (array_key_exists('mapa_tema_id', $data)) { $data['mapa_tema_id'] = !empty($data['mapa_tema_id']) ? (int) $data['mapa_tema_id'] : null; } unset($data['q'], $data['page'], $data['icone_arquivo']); return $data; } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings