File manager - Edit - /var/www/html/portalHomolog/app/Http/Controllers/CadastroDeAmbulantes/AjudantesController.php
Back
<?php namespace App\Http\Controllers\CadastroDeAmbulantes; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use App\Models\CadastroDeAmbulantes\Ambulante; use App\Models\CadastroDeAmbulantes\Ajudante; use App\Http\Requests\CadastroDeAmbulantes\AjudantesRequest; use App\Models\User; use App\Models\Endereco; class AjudantesController extends Controller { public function index(Request $request, Ambulante $ambulante) { $paginate = 20; $ajudantes = Ajudante::where('ambulante_id', $ambulante->id) ->orderByDesc('created_at'); if ($request->filled('q')) { $request->validate([ 'q' => 'nullable|string|max:255', ]); $q = trim($request->q); // 🔎 Busca em usuários (ajudantes) $usuarios = \App\Models\User::select("id") ->where(function ($query) use ($q) { $query->where('firstName', 'like', "%{$q}%") ->orWhere('lastName', 'like', "%{$q}%") ->orWhere('email', 'like', "%{$q}%") ->orWhere('cpf', 'like', "%" . $this->clearCpfCnpj($q) . "%") ->orWhere('phoneNumber', 'like', "%{$q}%"); }) ->pluck('id'); // 🔎 Busca em empresas $empresas = \App\Models\Empresa::select("id") ->where(function ($query) use ($q) { $query->where('razaoSocial', 'like', "%{$q}%") ->orWhere('nomeFantasia', 'like', "%{$q}%") ->orWhere('numeroInscricaoMunicipal', 'like', "%{$q}%") ->orWhere('email', 'like', "%{$q}%") ->orWhere('celular', 'like', "%{$q}%") ->orWhere('telefone', 'like', "%{$q}%") ->orWhere('cnpj', 'like', "%" . $this->clearCpfCnpj($q) . "%"); }) ->pluck('id'); // 🔎 Busca em ambulantes vinculados $ambulantes = \App\Models\CadastroDeAmbulantes\Ambulante::select("id") ->whereIn('empresa_id', $empresas) ->orWhereIn('user_id', $usuarios) ->pluck('id'); // Aplica o filtro em ajudantes $ajudantes->where(function ($query) use ($usuarios, $ambulantes) { $query->whereIn('user_id', $usuarios) // ajudante é usuário ->orWhereIn('ambulante_id', $ambulantes); // ajudante vinculado a ambulante }); } $ajudantes = $ajudantes->paginate($paginate); return view("admin.cadastroDeAmbulantes.ajudantes.index", [ "ambulante" => $ambulante, "ajudantes" => $ajudantes, ]); } private function __cpf($numero, Ambulante $ambulante) { $user = User::where('cpf', $numero)->first(); if ($user) { $ajudante = Ajudante::firstOrCreate( ['user_id' => $user->id], [ 'status' => 'ATIVADO', 'owner_id' => Auth::user()->id, 'ambulante_id' => $ambulante->id, ] ); return redirect() ->route('admin.cadastroDeAmbulantes.ajudantes.edit', [$ambulante->id, $ajudante->id]) ->with('success', 'Ajudante localizado ou criado com sucesso.'); } \Session::put('cpfTmp', ""); return redirect() ->route('admin.cadastroDeAmbulantes.ajudantes.create', $ambulante->id) ->with('info', 'CPF não encontrado. Cadastre novo PF.'); } public function verify(Request $request, Ambulante $ambulante) { if ($request->isMethod('post')) { $request->validate([ 'cpf' => ['required', 'string', 'max:18', 'regex:/^(\d{3}\.\d{3}\.\d{3}\-\d{2}|\d{2}\.\d{3}\.\d{3}\/\d{4}\-\d{2})$/'], ], [ 'cpf.required' => '* O CPF/CNPJ é obrigatório!', 'cpf.regex' => '* O CPF deve estar no formato 000.000.000-00.', ]); $numero = preg_replace('/\D/', '', $request->cpf); $isCpf = strlen($numero) === 11; if (!$isCpf) { return back()->with('error', '* CPF inválido!'); } return $this->__cpf($numero, $ambulante); } return view('admin.cadastroDeAmbulantes.ajudantes.verify', [ "ambulante" => $ambulante, ]); } public function create(Ambulante $ambulante) { return view('admin.cadastroDeAmbulantes.ajudantes.create', [ "ambulante" => $ambulante, ]); } public function store(AjudantesRequest $request, Ambulante $ambulante, Ajudante $ajudante) { $request->validated(); try { if (!$this->validaCPF($request->cpfAjudante)) { return redirect() ->back() ->withInput() ->with('error', 'O número de CPF informado não é válido!'); } if ($this->clearCPF($ambulante->proprietario->cpf) == $this->clearCPF($request->cpfAjudante)) { return redirect() ->back() ->withInput() ->with('error', 'O número de CPF do ajudante não pode ser o mesmo e-mail do Proprietário!'); } DB::beginTransaction(); $fullnameProp = $this->resolveFullname($request->fullNameAjudante); $ajudante = User::create([ "structure_id" => null, "firstName" => $fullnameProp['firstName'], "lastName" => $fullnameProp['lastName'], "cpf" => $this->clearCPF($request->cpfAjudante), "phoneNumber" => $request->phoneNumberAjudante, "email" => $request->emailAjudante, "photo" => $this->getPathImageUserField($request, 'photoAjudante', null), "permission" => $this->setPermissions($request->permissionAjudante ?? []), "password" => Hash::make($request->passwordAjudante ?? "mudar123"), "isPasswordDefault" => 1, "papers" => $this->setPapers($request->papersAjudante ?? []), ]); $endereco_array = [ 'user_id' => Auth::id(), 'owner_id' => $ajudante->id, 'domicilio' => $request->domicilioAjudante, 'cep' => $request->cepAjudante, 'logradouro' => $request->logradouroAjudante, 'numero' => $request->numeroAjudante, 'complemento' => $request->complementoAjudante ?? null, 'cidade' => $request->cidadeAjudante, 'bairro' => $request->bairroAjudante, 'uf' => $request->ufAjudante, 'latitude' => $request->latitudeAjudante, 'longitude' => $request->longitudeAjudante, 'comprovante' => $this->getProofOfResidence($request, "comprovanteAjudante", $ajudante->endereco), ]; Endereco::updateOrCreate( ['owner_id' => $ajudante->id], $endereco_array ); $ajudante = Ajudante::firstOrCreate( ['user_id' => $ajudante->id], [ 'status' => 'ATIVADO', 'owner_id' => Auth::user()->id, 'ambulante_id' => $ambulante->id, ] ); DB::commit(); return redirect() ->route('admin.cadastroDeAmbulantes.ajudantes.index', $ambulante->id) ->with('success', 'Ajudante cadastrado com sucesso!'); } catch (\Exception $e) { DB::rollBack(); return redirect() ->back() ->withInput() ->with('error', 'Erro ao tentar cadastrar o ajudante: ' . $e->getMessage()); } } public function edit(Ambulante $ambulante, Ajudante $ajudante) { return view('admin.cadastroDeAmbulantes.ajudantes.edit', [ "ambulante" => $ambulante, "ajudante" => $ajudante, "endereco" => $ajudante->user?->endereco ?? NULL, ]); } public function update(AjudantesRequest $request, Ambulante $ambulante, Ajudante $ajudante) { $request->validated(); try { if (!$this->validaCPF($request->cpfAjudante)) { return redirect() ->back() ->withInput() ->with('error', 'O número de CPF informado não é válido!'); } if ($this->clearCPF($ambulante->proprietario->cpf) == $this->clearCPF($request->cpfAjudante)) { return redirect() ->back() ->withInput() ->with('error', 'O número de CPF do ajudante não pode ser o mesmo e-mail do Proprietário!'); } DB::beginTransaction(); $fullnameProp = $this->resolveFullname($request->fullNameAjudante); $ajudante->user->fill([ "firstName" => $fullnameProp['firstName'], "lastName" => $fullnameProp['lastName'], "phoneNumber" => $request->phoneNumberAjudante, "email" => $request->emailAjudante, "photo" => $this->getPathImageUserField($request, 'photoAjudante', $ajudante->user), ]); $ajudante->user->save(); $endereco_array = [ 'user_id' => Auth::id(), 'owner_id' => $ajudante->id, 'domicilio' => $request->domicilioAjudante, 'cep' => $request->cepAjudante, 'logradouro' => $request->logradouroAjudante, 'numero' => $request->numeroAjudante, 'complemento' => $request->complementoAjudante ?? null, 'cidade' => $request->cidadeAjudante, 'bairro' => $request->bairroAjudante, 'uf' => $request->ufAjudante, 'latitude' => $request->latitudeAjudante, 'longitude' => $request->longitudeAjudante, 'comprovante' => $this->getProofOfResidence($request, "comprovanteAjudante", $ajudante->endereco), ]; Endereco::updateOrCreate( ['owner_id' => $ajudante->id], $endereco_array ); $ajudante = Ajudante::firstOrCreate( ['user_id' => $ajudante->id], [ 'status' => 'ATIVADO', 'owner_id' => Auth::user()->id, 'ambulante_id' => $ambulante->id, ] ); DB::commit(); return redirect() ->route('admin.cadastroDeAmbulantes.ajudantes.index', $ambulante->id) ->with('success', 'Ajudante atualizado com sucesso!'); } catch (\Exception $e) { DB::rollBack(); return redirect() ->back() ->withInput() ->with('error', 'Erro ao tentar atualizar o ajudante: ' . $e->getMessage()); } } public function destroy(Request $request, Ambulante $ambulante, Ajudante $ajudante) { if (!in_array("DELETE", explode(",", Auth::user()->papers))) { return redirect() ->back() ->withInput() ->with('error', 'Permissão negada! Entre em contato com o administrador do sistema.'); } try { DB::beginTransaction(); Ajudante::destroy($ajudante->id); DB::commit(); $page = $request->input('page', 1); return redirect("/admin/cadastro-de-ambulantes/ambulantes/{$ambulante->id}/ajudantes?page={$page}")->with("success", __("* O ajudante {$ajudante?->user->firstName} foi excluÃdo com sucesso! Esta ação não pode ser desfeita!")); } catch (\Exception $e) { DB::rollBack(); return redirect() ->back() ->withInput() ->with('error', 'Erro ao tentar excluir este ajudante. ' . $e->getMessage()); } } public function status(Request $request, Ambulante $ambulante, Ajudante $ajudante) { try { DB::beginTransaction(); $ajudante->fill([ 'status' => $request->checkStatus ]); $ajudante->save(); DB::commit(); $page = $request->input('page', 1); return redirect("/admin/cadastro-de-ambulantes/ambulantes/{$ambulante->id}/ajudantes?page={$page}")->with("success", __("* O status do ajudante {$ajudante?->user->firstName} foi alterado com sucesso!")); } catch (\Exception $e) { DB::rollBack(); return redirect() ->back() ->withInput() ->with('error', 'Erro ao tentar alterar o status deste ajudante. ' . $e->getMessage()); } } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings