File manager - Edit - /var/www/html/portalHomolog/app/Http/Resources/RHInformativoResource.php
Back
<?php namespace App\Http\Resources; use App\Helpers\FileUploadHelper; use App\Http\Controllers\Controller; use App\Http\Services\RHInformativoService; use App\Models\RHInformativo; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class RHInformativoResource extends Controller { public function __construct( private readonly RHInformativoService $service ) { } protected function deleteFile(?string $path): void { if (empty($path)) { return; } $ds = DIRECTORY_SEPARATOR; $search = "pmar{$ds}assets{$ds}files"; $filePath = storage_path() . str_replace($search, "{$ds}app{$ds}public", $path); if (file_exists($filePath)) { @unlink($filePath); } } protected function buildDataFromRequest(Request $request, ?RHInformativo $informativo = null): array { if ($request->categoria === 'INFORMATIVOS_DO_RH') { $request->merge(['numero' => '']); } $data = [ 'categoria' => $request->categoria, 'tipo' => $request->tipo, 'dataPublicacao' => $request->dataPublicacao, 'numero' => $request->numero, 'descricao' => $request->descricao, 'arquivo' => $informativo?->arquivo ?? null, 'status' => $request->status, ]; if ($request->hasFile('arquivo') && $request->file('arquivo')->isValid()) { if ($informativo && $informativo->arquivo) { $this->deleteFile($informativo->arquivo); } $file = $request->file('arquivo'); $uploadedPath = FileUploadHelper::processSafeDocumentUpload($file, 'arquivos'); if ($uploadedPath) { $data['arquivo'] = $uploadedPath; } else { throw new \RuntimeException(__('Erro ao fazer upload do arquivo.')); } } elseif (!$informativo) { throw new \RuntimeException(__('Erro ao fazer upload do arquivo.')); } return $data; } public function store(Request $request): RedirectResponse { try { DB::beginTransaction(); $data = $this->buildDataFromRequest($request); $this->service->create($data); DB::commit(); $page = $request->input('page', 1); return redirect("/admin/informativos-recursos-humanos?page={$page}") ->with('success', __('* Informe criado com sucesso!')); } catch (\Throwable $e) { DB::rollBack(); $message = $e instanceof \RuntimeException ? $e->getMessage() : __('Erro tentar adiciona um novo informe.') . ' ' . $e->getMessage(); return redirect() ->back() ->withInput() ->with('error', $message); } } public function update(Request $request, RHInformativo $informativo): RedirectResponse { try { DB::beginTransaction(); $data = $this->buildDataFromRequest($request, $informativo); $this->service->update($informativo, $data); DB::commit(); $page = $request->input('page', 1); return redirect("/admin/informativos-recursos-humanos?page={$page}") ->with('success', __('* Informe atualizado com sucesso!')); } catch (\Throwable $e) { DB::rollBack(); $message = $e instanceof \RuntimeException ? $e->getMessage() : __('Erro tentar atualizar este informe.') . ' ' . $e->getMessage(); return redirect() ->back() ->withInput() ->with('error', $message); } } public function destroy(Request $request, RHInformativo $informativo): RedirectResponse { try { DB::beginTransaction(); $this->deleteFile($informativo->arquivo); $this->service->delete($informativo); DB::commit(); $page = $request->input('page', 1); return redirect("/admin/informativos-recursos-humanos?page={$page}") ->with('success', __('* O informe foi excluído com sucesso! Esta ação não pode ser desfeita!')); } catch (\Throwable $e) { DB::rollBack(); return redirect() ->back() ->withInput() ->with('error', __('Erro tentar excluir este informe.') . ' ' . $e->getMessage()); } } public function status(Request $request, RHInformativo $informativo): RedirectResponse { try { DB::beginTransaction(); $this->service->updateStatus($informativo, $request->checkStatus); DB::commit(); $page = $request->input('page', 1); return redirect("/admin/informativos-recursos-humanos?page={$page}") ->with('success', __('* O status do informe foi atualizado com sucesso!')); } catch (\Throwable $e) { DB::rollBack(); return redirect() ->back() ->withInput() ->with('error', __('Erro ao tentar alterar o status deste informe.') . ' ' . $e->getMessage()); } } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings