File manager - Edit - /var/www/html/portal/app/Http/Controllers/ValidacaoDocumentosController.php
Back
<?php namespace App\Http\Controllers; use App\Models\Validacao; use App\Models\User; use App\Models\Pessoa; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Auth; use Illuminate\Http\Request; use App\Http\Requests\ValidacaoRequest; use App\Helpers\FileUploadHelper; class ValidacaoDocumentosController extends Controller { public function __construct() { $this->middleware('validacaoDocumentos'); } private function __generateUniqueVoucherCode(): string { do { $voucher = $this->__generateVoucher(); } while (Validacao::where('code', $voucher)->exists()); return $voucher; } private function __generateVoucher(): string { $parts = []; for ($i = 0; $i < 3; $i++) { $parts[] = strtoupper(substr(bin2hex(random_bytes(2)), 0, 3)); } return implode('-', $parts); // Ex: ABC-1F2-9ZQ } public function index(Request $request) { $paginate = 20; if (isset($request->q)) { $request->validate([ 'q' => 'nullable|string|max:255', ]); $documentos = Validacao::select('validacoes.*') ->join('users', 'users.id', '=', 'validacoes.user_id') ->where(function ($query) use ($request) { $q = trim($request->q); $query->where('validacoes.resumo', 'like', "%{$q}%") ->orWhere('users.firstName', 'like', "%{$q}%") ->orWhere('users.lastName', 'like', "%{$q}%") ->orWhere('users.cpf', 'like', "%{$this->clearCPF($q)}%") ->orWhere('users.email', 'like', "%{$q}%") ->orWhere('users.matriculation', 'like', "%{$q}%") ->orWhere('users.phoneNumber', 'like', "%{$q}%"); }) ->orderByDesc('validacoes.created_at') ->paginate($paginate); } else { $documentos = Validacao::orderBy("created_at", "asc")->paginate($paginate); } return view("admin.validacaoDocumentos.index", [ "documentos" => $documentos, ]); } public function create() { return view("admin.validacaoDocumentos.create"); } public function store(ValidacaoRequest $request) { $validacao_array = [ 'user_id' => $request->user_id ??= null, 'categoria' => $request->categoria, 'resumo' => $request->resumo, 'status' => $request->status ??= "ATIVADO", 'code' => $this->__generateUniqueVoucherCode(), ]; $fullname = $this->resolveFullname($request->nome); $user_array = [ 'structure_id' => null, 'firstName' => $fullname['firstName'], 'lastName' => $fullname['lastName'], 'cpf' => $this->clearCPF($request->cpf), 'matriculation' => $request->matriculation ??= null, 'phoneNumber' => $request->telefone, 'email' => $request->email, 'permission' => "GUEST", 'isPasswordDefault' => 0, ]; $isServidorPublico = $request->isServidorPublico ??= "off"; $user_array["isServidorPublico"] = "Não"; if ($isServidorPublico == "on") { $user_array["isServidorPublico"] = "Sim"; } $pessoa_array = [ 'user_id' => $request->user_id ??= null, 'nacimento_at' => $request->nacimento_at, ]; try { DB::beginTransaction(); $ds = DIRECTORY_SEPARATOR; if ($request->hasFile('documento') && $request->file('documento')->isValid()) { $file = $request->file('documento'); $uploadedPath = FileUploadHelper::processSafeDocumentUpload($file, 'documentos'); if ($uploadedPath) { $validacao_array["documento"] = $uploadedPath; } } $checkUser = User::where("cpf", $this->clearCPF($request->cpf)) ->leftJoin('pessoas', 'users.id', '=', 'pessoas.user_id') ->select('users.*', 'pessoas.nacimento_at as nacimento_at') ->first(); $user = null; if (isset($checkUser["cpf"])) { unset($user_array['structure_id']); unset($user_array['cpf']); unset($user_array['email']); unset($user_array['permission']); unset($user_array['isPasswordDefault']); $validacao_array["user_id"] = $checkUser["id"]; $pessoa_array["user_id"] = $checkUser["id"]; $checkUser->fill($user_array); $checkUser->save(); } else { $user_array["password"] = bcrypt("mudar123"); if(User::where("email", $request->email)->exists()){ return redirect() ->back() ->withInput() ->with('error', 'O e-mail informado já está cadastrado no sistema.'); } $user = User::create($user_array); if (strlen($request->user_id) != 36) { $validacao_array["user_id"] = $user->id; $pessoa_array["user_id"] = $user->id; } } if (isset($checkUser["nacimento_at"]) && strlen("1977-10-30") != 10) { unset($pessoa_array['nacimento_at']); $pessoa = Pessoa::where("user_id", $checkUser["cpf"])->first(); $pessoa->update($pessoa_array); } else { Pessoa::create($pessoa_array); } Validacao::create($validacao_array); DB::commit(); $page = $request->input('page', 1); return redirect("/admin/validacao-de-documentos?page={$page}")->with("success", __("* O documento foi adicionado com sucesso!")); } catch (\Exception $e) { DB::rollBack(); return redirect() ->back() ->withInput() ->with('error', 'Erro ao tentar cadastrar este documento. ' . $e->getMessage()); } } public function edit(Validacao $validacao) { $documento = Validacao::where('id', $validacao->id) ->where('status', 'ATIVADO') ->whereHas('user.pessoa') ->with(['user.pessoa']) ->first(); return view("admin.validacaoDocumentos.edit", ["documento" => $documento]); } public function update(ValidacaoRequest $request, Validacao $validacao) { $validacao_array = [ 'categoria' => $request->categoria, 'resumo' => $request->resumo, 'documento' => $validacao->documento, 'status' => $request->status ??= "ATIVADO", 'isServidorPublico' => (isset($request->isServidorPublico) && $request->isServidorPublico == 'on') ? "Sim" : "Não", ]; $fullname = $this->resolveFullname($request->nome); $user_array = [ 'firstName' => $fullname['firstName'], 'lastName' => $fullname['lastName'], 'matriculation' => $request->matriculation ??= null, 'phoneNumber' => $request->telefone, 'email' => $request->email ]; $pessoa_array = [ 'nacimento_at' => $request->nacimento_at, ]; try { DB::beginTransaction(); $ds = DIRECTORY_SEPARATOR; if ($request->hasFile('documento') && $request->file('documento')->isValid()) { $file = $request->file('documento'); $uploadedPath = FileUploadHelper::processSafeDocumentUpload($file, 'documentos'); if ($uploadedPath) { $validacao_array["documento"] = $uploadedPath; } $search = "pmar{$ds}assets{$ds}img"; $file_exist = storage_path() . str_replace($search, "{$ds}app{$ds}public", $validacao->documento); if (@file_exists($file_exist)) { unlink($file_exist); } } $validacao->user->update($user_array); $validacao->user->pessoa->update($pessoa_array); $validacao->update($validacao_array); DB::commit(); $page = $request->input('page', 1); return redirect("/admin/validacao-de-documentos?page={$page}")->with("success", __("* O documento foi atualizado com sucesso!")); } catch (\Exception $e) { DB::rollBack(); return redirect() ->back() ->withInput() ->with('error', 'Erro ao tentar cadastrar este documento. ' . $e->getMessage()); } } public function destroy(Request $request, Validacao $validacao) { 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.'); } $ds = DIRECTORY_SEPARATOR; if ($validacao->documento != "pmar/assets/img/icons/neutro.png") { $search = "pmar{$ds}assets{$ds}img"; $file_exist = storage_path() . str_replace($search, "{$ds}app{$ds}public", $validacao->documento); if (@file_exists($file_exist)) { unlink($file_exist); } } try { DB::beginTransaction(); Validacao::destroy($validacao->id); DB::commit(); $page = $request->input('page', 1); return redirect("/admin/validacao-de-documentos?page={$page}")->with("success", __("* O documento 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 tentar excluir este documento. ' . $e->getMessage()); } } public function status(Request $request, Validacao $validacao) { try { DB::beginTransaction(); $validacao->fill([ 'status' => $request->checkStatus ]); $validacao->save(); DB::commit(); $page = $request->input('page', 1); return redirect("/admin/validacao-de-documentos?page={$page}")->with("success", __("* O status deste documento foi alterado com sucesso!")); } catch (\Exception $e) { DB::rollBack(); return redirect() ->back() ->withInput() ->with('error', 'Erro ao tentar alterar o status deste documento. ' . $e->getMessage()); } } public function checkUser($cpf) { $user = User::where("cpf", $this->clearCPF($cpf)) ->leftJoin('pessoas', 'users.id', '=', 'pessoas.user_id') ->select('users.*', 'pessoas.nacimento_at as nacimento_at') ->first(); if (isset($user["cpf"])) { return response()->json($user, 200); } return response()->json([], 200); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.04 |
proxy
|
phpinfo
|
Settings