File manager - Edit - /var/www/html/portal/app/Http/Controllers/IndicadoresTi/GerenciarClientesController.php
Back
<?php namespace App\Http\Controllers\IndicadoresTi; use App\Http\Controllers\Controller; use App\Http\Services\IndicadoresTi\GerenciarClientesService; use App\Models\IndicadoresTi\Cliente; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\View\View; class GerenciarClientesController extends Controller { public function __construct(private readonly GerenciarClientesService $service) {} public function index(Request $request): View { $this->autorizar(); return view('admin.indicadoresTi.gerenciarClientes', [ 'headLine' => 'Gerenciar Clientes', 'clientes' => $this->service->listar($request->get('busca', '')), 'busca' => $request->get('busca', ''), ]); } public function store(Request $request): JsonResponse { $this->autorizar(); $dados = $request->validate( $this->regrasDados(), ['nome.required' => 'O nome é obrigatório.'] ); if (empty($dados['cpf']) && empty($dados['matricula'])) { return response()->json( ['errors' => ['identificacao' => ['Informe o CPF ou a Matrícula.']]], 422 ); } $this->service->criar($dados); return response()->json(['success' => true]); } public function show(Cliente $cliente): JsonResponse { $this->autorizar(); return response()->json([ 'id' => $cliente->id, 'nome' => $cliente->nome, 'cpf' => $cliente->cpf, 'matricula' => $cliente->matricula, 'setor' => $cliente->setor, 'telefone' => $cliente->telefone, ]); } public function update(Request $request, Cliente $cliente): JsonResponse { $this->autorizar(); $dados = $request->validate( $this->regrasDados(), ['nome.required' => 'O nome é obrigatório.'] ); if (empty($dados['cpf']) && empty($dados['matricula'])) { return response()->json( ['errors' => ['identificacao' => ['Informe o CPF ou a Matrícula.']]], 422 ); } $this->service->atualizar($cliente, $dados); return response()->json(['success' => true]); } public function destroy(Cliente $cliente): RedirectResponse { $this->autorizar(); if (!$this->service->excluir($cliente)) { return redirect() ->route('admin.indicadoresTi.gerenciar.clientes') ->withErrors(['cliente' => 'Este cliente possui chamados vinculados e não pode ser excluído.']); } return redirect() ->route('admin.indicadoresTi.gerenciar.clientes') ->with('success', 'Cliente excluído com sucesso.'); } private function regrasDados(): array { return [ 'nome' => ['required', 'string', 'max:255'], 'cpf' => ['nullable', 'string', 'max:14'], 'matricula' => ['nullable', 'string', 'max:50'], 'setor' => ['nullable', 'string', 'max:255'], 'telefone' => ['nullable', 'string', 'max:50'], ]; } private function autorizar(): void { $user = Auth::user(); $permissoes = $user->permissoes->pluck('permissao'); if ($permissoes->contains('SYSADMIN')) return; if ($user->getPermissaoDetalhes('INDICADORES_TI')['editar']) return; abort(403); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings