File manager - Edit - /var/www/html/portalHomolog/app/Http/Controllers/MeioAmbiente/CastracaoAnimal/CastracaoTutorsPublicoController.php
Back
<?php namespace App\Http\Controllers\MeioAmbiente\CastracaoAnimal; use App\Http\Controllers\Controller; use App\Http\Requests\MeioAmbiente\CastracaoAnimal\CastracaoTutorsRequest; use App\Models\CastracaoAnimal\Tutor; use App\Models\User; use App\Models\Endereco; use Illuminate\Http\Request; use App\Models\CastracaoAnimal\Animal; use App\Models\CastracaoAnimal\Raca; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; use Illuminate\Support\Facades\Session; use App\Helpers\FileUploadHelper; class CastracaoTutorsPublicoController extends Controller { public function paginaAcompanhamento(Tutor $castracao) { $tutor = $castracao->load('animals.raca'); return view('paginas.castracao.paginaAcompanhamento', compact('tutor')); } public function create() { $user = null; $cpfTmp = session('cpfTmp'); return view('paginas.castracao.tutors.create', compact('user', 'cpfTmp')); } public function store(CastracaoTutorsRequest $request) { $request->validate([ 'cpf' => 'required|string|max:14', 'email' => 'required|email', 'firstName' => 'required|string', 'lastName' => 'required|string', 'phoneNumber' => 'required|string', 'password' => 'required|string', 'tipo_tutor' => 'required|string', 'photo' => 'nullable|image|mimes:jpg,jpeg,png|max:2048', 'cep' => 'required|string', 'logradouro' => 'required|string', 'complemento' => 'nullable|string', 'numero' => 'nullable|string', 'bairro' => 'required|string', 'cidade' => 'required|string', 'uf' => 'required|string|max:2', ]); $ds = DIRECTORY_SEPARATOR; $path = $user?->photo ?? "pmar{$ds}assets{$ds}img{$ds}icons{$ds}usuario.png"; if ($request->hasFile('photo') && $request->file('photo')->isValid()) { $file = $request->file('photo'); $uploadedPath = FileUploadHelper::processSafeImageUpload($file, 'contas'); if ($uploadedPath) { // Remove o prefixo "pmar/assets/img/" para manter compatibilidade $path = str_replace("pmar{$ds}assets{$ds}img{$ds}", "", $uploadedPath); } } DB::beginTransaction(); try { $user = User::where('cpf', $request->cpf)->first(); if (!$user) { $user = User::create([ 'id' => Str::uuid(), 'cpf' => $request->cpf, 'email' => $request->email, 'structure_id' => null, 'firstName' => $request->firstName, 'lastName' => $request->lastName, 'phoneNumber' => $request->phoneNumber, 'password' => bcrypt($request->password), 'photo' => $path, 'status' => 'ATIVADO', ]); } else { $user->update([ 'email' => $request->email, 'firstName' => explode(' ', $request->nome_completo)[0], 'lastName' => implode(' ', array_slice(explode(' ', $request->nome_completo), 1)), 'phoneNumber' => $request->phoneNumber, 'photo' => $this->saveUserPhoto($request, $user), ]); } Tutor::updateOrCreate( ['user_id' => $user->id], [ 'id' => (string) Str::uuid(), 'tipo_tutor' => $request->tipo_tutor, 'status' => 'ATIVADO' ] ); // Endereço Endereco::updateOrCreate( ['user_id' => $user->id], [ 'owner_id' => $user->id, 'cep' => $request->cep, 'logradouro' => $request->logradouro, 'complemento' => $request->complemento, 'numero' => $request->numero, 'bairro' => $request->bairro, 'cidade' => $request->cidade, 'uf' => strtoupper($request->uf), 'status' => 'ATIVADO', 'domicilio' => 'OUTROS', ] ); DB::commit(); return redirect()->route('paginas.castracao')->with('success', 'Tutor cadastrado com sucesso!'); } catch (\Exception $e) { DB::rollBack(); return back()->withErrors(['error' => 'Erro ao cadastrar tutor: ' . $e->getMessage()]); } } public function edit(Tutor $tutor) { $user = $tutor->user; $endereco = $user->enderecos->first(); return view('paginas.castracao.tutors.edit', compact('user', 'tutor', 'endereco')); } public function update(CastracaoTutorsRequest $request, Tutor $tutor) { DB::beginTransaction(); try { $user = $tutor->user; $user->update($request->only('cpf', 'email', 'phoneNumber') + [ 'firstName' => $request->firstName, 'lastName' => $request->lastName, 'photo' => $this->handlePhotoUpload($request, $user->photo), ]); $tutor->update([ 'tipo_tutor' => $request->tipo_tutor, ]); $user->enderecos()->updateOrCreate(['user_id' => $user->id], $request->only( 'cep', 'logradouro', 'complemento', 'numero', 'bairro', 'cidade' ) + [ 'owner_id' => $user->id, 'uf' => strtoupper($request->uf), 'status' => 'ATIVADO', 'domicilio' => 'OUTROS', ]); DB::commit(); return redirect()->route('paginas.castracao.paginaAcompanhamento', ['castracao' => $tutor->id])->with('success', 'Tutor atualizado com sucesso!'); } catch (\Exception $e) { DB::rollBack(); return back()->withErrors(['error' => 'Erro ao atualizar tutor: ' . $e->getMessage()]); } } private function handlePhotoUpload($request, $default = null) { if ($request->hasFile('photo') && $request->file('photo')->isValid()) { $file = $request->file('photo'); $uploadedPath = FileUploadHelper::processSafeImageUpload($file, 'contas'); if ($uploadedPath) { // Remove o prefixo "pmar/assets/img/" para manter compatibilidade $ds = DIRECTORY_SEPARATOR; return str_replace("pmar{$ds}assets{$ds}img{$ds}", "", $uploadedPath); } } return $default ?? "pmar/assets/img/icons/usuario.png"; } public function resetPassword(Request $request) { $request->validate(['senha' => 'required|min:6|confirmed']); $tutor = auth()->user(); $tutor->update(['senha' => Hash::make($request->senha)]); return back()->with('success', 'Senha atualizada com sucesso!'); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.01 |
proxy
|
phpinfo
|
Settings