File manager - Edit - /var/www/html/portal/app/Http/Controllers/GestorIdController.php
Back
<?php namespace App\Http\Controllers; use App\Models\IdGerado; use Illuminate\Http\Request; use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Support\Facades\File; use App\Models\User; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Validator; class GestorIdController extends Controller { public function index(Request $request) { $busca = $request->input('busca'); $registros = IdGerado::query() ->when($busca, function ($query, $busca) { $palavras = explode(' ', strtolower($busca)); $query->where(function ($q) use ($palavras) { foreach ($palavras as $palavra) { $q->where(function ($subQuery) use ($palavra) { $subQuery->whereRaw('LOWER(id_gerado) LIKE ?', ["%{$palavra}%"]) ->orWhereRaw('LOWER(nome_completo) LIKE ?', ["%{$palavra}%"]) ->orWhereRaw('LOWER(cpf) LIKE ?', ["%{$palavra}%"]) ->orWhereRaw('LOWER(doc_sei) LIKE ?', ["%{$palavra}%"]) ->orWhereRaw('LOWER(ramal) LIKE ?', ["%{$palavra}%"]) ->orWhereRaw('LOWER(telefone) LIKE ?', ["%{$palavra}%"]) ->orWhereRaw('LOWER(CASE WHEN status = 0 THEN "ativo" ELSE "inativo" END) LIKE ?', ["%{$palavra}%"]); }); } }); }) ->orderBy('id_gerado') ->paginate(20); return view('admin.gerador-id.index', compact('registros')); } public function create() { return view('admin.gerador-id.create'); } public function store(Request $request) { $request->validate([ 'nome_completo' => 'required|string|max:255', 'cpf' => 'required|string|max:14|unique:id_gerados,cpf', 'doc_sei' => 'nullable|string|max:100', 'ramal' => 'nullable|string|max:10', 'telefone' => 'nullable|string|max:20', ]); DB::beginTransaction(); if (!$this->validaCPF($request->cpf)) { return redirect() ->back() ->withInput() ->with('error', 'O CPF informado é inválido!'); } try { $registro = IdGerado::create($request->only([ 'nome_completo', 'cpf', 'doc_sei', 'ramal', 'telefone', 'link' ])); Log::channel('usuario')->info('ID Gerado criado com sucesso.', [ 'user_id' => auth()->id(), 'id' => $registro->id, 'nome' => $registro->nome_completo, 'codigo' => $registro->id_gerado, 'ip' => request()->ip(), 'modulo' => 'GERADOR-ID', ]); DB::commit(); return redirect()->route('admin.gerador-id.index')->with('success', 'Registro criado com sucesso!'); } catch (\Exception $e) { DB::rollBack(); Log::error('Erro ao criar ID Gerado: ' . $e->getMessage()); return back()->withErrors(['erro' => 'Ocorreu um erro ao salvar o registro.']); } } public function update(Request $request, $id) { $request->validate([ 'nome_completo' => 'required|string|max:255', 'cpf' => 'required|string|max:14|unique:id_gerados,cpf,' . $id, 'doc_sei' => 'nullable|string|max:100', 'ramal' => 'nullable|string|max:10', 'telefone' => 'nullable|string|max:20', 'link' => 'nullable|url|max:255', ]); DB::beginTransaction(); try { $registro = IdGerado::findOrFail($id); $registro->update($request->only([ 'nome_completo', 'cpf', 'doc_sei', 'ramal', 'telefone', 'link' ])); Log::channel('usuario')->info('ID Gerado atualizado com sucesso.', [ 'user_id' => auth()->id(), 'id' => $registro->id, 'nome' => $registro->nome_completo, 'codigo' => $registro->id_gerado, 'ip' => request()->ip(), 'modulo' => 'GERADOR-ID', ]); DB::commit(); return redirect()->route('admin.gerador-id.index')->with('success', 'Registro atualizado com sucesso!'); } catch (\Exception $e) { DB::rollBack(); Log::error('Erro ao atualizar ID Gerado: ' . $e->getMessage()); return back()->withErrors(['erro' => 'Ocorreu um erro ao atualizar o registro.']); } } public function toggleStatus($id) { DB::beginTransaction(); try { $usuario = IdGerado::findOrFail($id); $usuario->status = $usuario->status == 0 ? 1 : 0; $usuario->save(); Log::channel('usuario')->info('Status do ID Gerado alterado para - ' . ($usuario->status == 0 ? 'Inativado' : 'Ativado'), [ 'user_id' => auth()->id(), 'id' => $usuario->id, 'nome' => $usuario->nome_completo, 'cpf' => $usuario->cpf, 'ip' => request()->ip(), 'modulo' => 'GERADOR-ID', ]); DB::commit(); return redirect()->back()->with('success', 'Status atualizado com sucesso!'); } catch (\Exception $e) { DB::rollBack(); Log::error('Erro ao atualizar status do ID Gerado: ' . $e->getMessage()); return redirect()->back()->withErrors(['erro' => 'Erro ao atualizar o status.']); } } public function logsUsuario() { $path = storage_path('logs/usuario.log'); if (!File::exists($path)) { return view('admin.gerador-id.logs.logsUsuarios', ['logs' => collect()]); } $busca = request('busca'); $lines = array_slice(array_reverse(explode("\n", File::get($path))), 0, 1000); $logs = []; foreach ($lines as $line) { if (empty($line)) continue; preg_match('/\[(.*?)\] (\w+)\.(\w+): (.*?) ({.*})/', $line, $matches); if ($matches) { $contexto = json_decode($matches[5], true) ?? []; if (strtoupper($contexto['modulo'] ?? '') !== 'GERADOR-ID') { continue; } $usuario = null; if (!empty($contexto['user_id'])) { $usuario = User::find($contexto['user_id']); } $logData = [ 'data' => $matches[1], 'canal' => $matches[2], 'nivel' => $matches[3], 'mensagem' => $matches[4], 'contexto' => $contexto, 'usuario' => $usuario, ]; if ($busca) { $buscaPalavras = explode(' ', strtolower($busca)); $haystack = strtolower( $logData['data'] . ' ' . $logData['mensagem'] . ' ' . ($usuario->firstName ?? '') . ' ' . ($usuario->lastName ?? '') . ' ' . ($usuario->email ?? '') . ' ' . ($usuario->matriculation ?? '') . ' ' . ($contexto['cpf'] ?? '') . ' ' . ($contexto['nome'] ?? '') ); $encontrouTodas = collect($buscaPalavras)->every(fn($palavra) => str_contains($haystack, $palavra)); if (!$encontrouTodas) continue; } $logs[] = $logData; } } $currentPage = request()->get('page', 1); $perPage = 20; $offset = ($currentPage - 1) * $perPage; $logsPaginated = new LengthAwarePaginator( array_slice($logs, $offset, $perPage), count($logs), $perPage, $currentPage, ['path' => url()->current(), 'query' => request()->query()] ); return view('admin.gerador-id.logs.logsUsuarios', ['logs' => $logsPaginated]); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.09 |
proxy
|
phpinfo
|
Settings