File manager - Edit - /var/www/html/portal/app/Http/Controllers/Cultura/ArteSacra/AvaliacaoTecnicaController.php
Back
<?php namespace App\Http\Controllers\Cultura\ArteSacra; use App\Http\Controllers\Controller; use App\Models\Cultura\ArteSacra\{ AvaliacaoTecnica, Acervo, }; use Illuminate\Http\Request; use Illuminate\View\View; use Illuminate\Http\RedirectResponse; use Illuminate\Validation\Rule; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; use Illuminate\Support\Facades\Log; use App\Helpers\FileUploadHelper; class AvaliacaoTecnicaController extends Controller { private $permissao = "GERENCIADOR_DO_CADASTRO_DE_ARTE_SACRA"; private function salvarImagem(Request $request, string $field): ?string { if ($request->hasFile($field) && $request->file($field)->isValid()) { $file = $request->file($field); // Valida arquivo if (!FileUploadHelper::validateFile( $file, FileUploadHelper::ALLOWED_IMAGE_EXTENSIONS, FileUploadHelper::ALLOWED_IMAGE_MIME_TYPES )) { return null; } $uuid = (string) Str::uuid(); $safeExt = FileUploadHelper::getSafeExtension( $file, FileUploadHelper::ALLOWED_IMAGE_EXTENSIONS ); if (!$safeExt) { return null; } $filename = "{$field}_{$uuid}.{$safeExt}"; $file->storeAs('public/arte_sacra/avaliacaoTecnica', $filename); return $filename; } return null; } public function index($id) : View|RedirectResponse { $response = $this->checkPermissao($this->permissao, 'visualizar'); if ($response instanceof RedirectResponse) { return $response; } $acervo = Acervo::findOrFail($id); $avaliacoes = AvaliacaoTecnica::where('acervo_id', $acervo->id) ->with('acervo') ->latest('data_avaliacao') ->get(); return view('admin.cultura.arteSacra.avaliacaoTecnica', compact('acervo', 'avaliacoes')); } public function store(Request $request) : RedirectResponse { $response = $this->checkPermissao($this->permissao, "adicionar"); if ($response instanceof RedirectResponse) { return $response; } $validatedData = $request->validate([ 'codigo_acervo' => ['required', 'exists:mysql_arte_sacra.acervo,codigo_acervo'], 'suporte' => ['required', Rule::in(['Ótimo', 'Bom', 'Regular', 'Ruim', 'Péssimo'])], 'policromia' => ['required', Rule::in(['Ótimo', 'Bom', 'Regular', 'Ruim', 'Péssimo', 'Não possui'])], 'data_avaliacao' => ['required', 'date'], 'responsavel' => ['required', 'string', 'max:255'], ], [ 'codigo_acervo.required' => 'O código do acervo é obrigatório.', 'codigo_acervo.exists' => 'O código do acervo informado não existe.', 'suporte.required' => 'O campo suporte é obrigatório.', 'suporte.in' => 'O valor de suporte deve ser um dos valores permitidos.', 'policromia.required' => 'O campo policromia é obrigatório.', 'policromia.in' => 'O valor de policromia deve ser um dos valores permitidos.', 'data_avaliacao.required' => 'A data da avaliação é obrigatória.', 'responsavel.required' => 'O nome do responsável é obrigatório.', ]); try { DB::beginTransaction(); $acervo = Acervo::where('codigo_acervo', $validatedData['codigo_acervo'])->firstOrFail(); $imagemAntesFrente = $this->salvarImagem($request, 'imagem_antes_frente'); $imagemAntesVerso = $this->salvarImagem($request, 'imagem_antes_verso'); $imagemDepoisFrente = $this->salvarImagem($request, 'imagem_depois_frente'); $imagemDepoisVerso = $this->salvarImagem($request, 'imagem_depois_verso'); $avaliacao = AvaliacaoTecnica::create([ 'acervo_id' => $acervo->id, 'suporte' => $validatedData['suporte'], 'policromia' => $validatedData['policromia'], 'diagnostico' => $request->diagnostico ?? null, 'procedimentos' => $request->procedimentos ?? null, 'imagem_antes_frente' => $imagemAntesFrente, 'imagem_antes_verso' => $imagemAntesVerso, 'imagem_depois_frente' => $imagemDepoisFrente, 'imagem_depois_verso' => $imagemDepoisVerso, 'data_avaliacao' => $validatedData['data_avaliacao'], 'responsavel' => $validatedData['responsavel'], ]); DB::commit(); Log::channel('usuario')->info('Avaliação técnica criada', [ 'user_id' => auth()->id(), 'avaliacao_id' => $avaliacao->id, 'acervo_id' => $avaliacao->acervo_id, 'codigo' => $validatedData['codigo_acervo'], 'ip' => request()->ip(), 'modulo' => 'ARTE-SACRA', ]); return redirect() ->back() ->with('success', 'Avaliação técnica cadastrada com sucesso.'); } catch (\Exception $e) { DB::rollBack(); return redirect() ->back() ->withInput() ->with('error', 'Ocorreu um erro ao cadastrar a avaliação técnica. Por favor, tente novamente. Erro: ' . $e->getMessage()); } } public function update(Request $request, $id) : RedirectResponse { $response = $this->checkPermissao($this->permissao, 'editar'); if ($response instanceof RedirectResponse) { return $response; } $avaliacao = AvaliacaoTecnica::findOrFail($id); $validated = $request->validate([ 'acervo_id' => ['required', 'exists:mysql_arte_sacra.acervo,id'], 'suporte' => ['required', Rule::in(['Ótimo', 'Bom', 'Regular', 'Ruim', 'Péssimo'])], 'policromia' => ['nullable', Rule::in(['Ótimo', 'Bom', 'Regular', 'Ruim', 'Péssimo', 'Não possui'])], 'diagnostico' => 'nullable|string', 'procedimentos' => 'nullable|string', 'data_avaliacao' => 'required|date', 'responsavel' => 'required|string|max:255', 'imagem_antes_frente' => 'nullable|image|mimes:jpeg,png,jpg|max:5120', 'imagem_antes_verso' => 'nullable|image|mimes:jpeg,png,jpg|max:5120', 'imagem_depois_frente' => 'nullable|image|mimes:jpeg,png,jpg|max:5120', 'imagem_depois_verso' => 'nullable|image|mimes:jpeg,png,jpg|max:5120', ]); try { DB::beginTransaction(); $imageFields = [ 'imagem_antes_frente', 'imagem_antes_verso', 'imagem_depois_frente', 'imagem_depois_verso' ]; foreach ($imageFields as $field) { if ($request->hasFile($field)) { if ($avaliacao->$field) { Storage::delete('public/arte_sacra/avaliacaoTecnica/' . $avaliacao->$field); } $filename = $this->salvarImagem($request, $field); $validated[$field] = $filename; } else { $validated[$field] = $avaliacao->$field; } } $avaliacao->update($validated); DB::commit(); Log::channel('usuario')->info('Avaliação técnica atualizada', [ 'user_id' => auth()->id(), 'avaliacao_id' => $avaliacao->id, 'ip' => request()->ip(), 'codigo' => $avaliacao->acervo->codigo_acervo, 'modulo' => 'ARTE-SACRA', ]); return back()->with('success', 'Avaliação atualizada com sucesso!'); } catch (\Exception $e) { DB::rollBack(); return back() ->withInput() ->with('error', 'Ocorreu um erro ao atualizar a avaliação técnica. Por favor, tente novamente. Erro: ' . $e->getMessage()); } } public function destroy($id) : RedirectResponse { $response = $this->checkPermissao($this->permissao, 'excluir'); if ($response instanceof RedirectResponse) { return $response; } try { DB::beginTransaction(); $avaliacao = AvaliacaoTecnica::findOrFail($id); $imagens = [ $avaliacao->imagem_antes_frente, $avaliacao->imagem_antes_verso, $avaliacao->imagem_depois_frente, $avaliacao->imagem_depois_verso, ]; $caminhoBase = public_path('pmar/assets/img/arte_sacra/avaliacaoTecnica/'); foreach ($imagens as $img) { if ($img) { $caminhoCompleto = $caminhoBase . $img; if (file_exists($caminhoCompleto)) { unlink($caminhoCompleto); } } } $avaliacao->delete(); DB::commit(); Log::channel('usuario')->info('Avaliação técnica deletada', [ 'user_id' => auth()->id(), 'avaliacao_id' => $avaliacao->id, 'codigo' => $avaliacao->acervo->codigo_acervo, 'ip' => request()->ip(), 'modulo' => 'ARTE-SACRA', ]); return back()->with('success', 'Avaliação deletada com sucesso.'); } catch (\Exception $e) { DB::rollBack(); return back() ->with('error', 'Erro ao deletar a avaliação. Tente novamente. Erro: ' . $e->getMessage()); } } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings