File manager - Edit - /var/www/html/homologBancodetalentos/app/Http/Controllers/Web/TalentBank/ConcluirCadastroController.php
Back
<?php namespace App\Http\Controllers\Web\TalentBank; use App\Http\Controllers\Controller; use App\Http\Services\TalentBank\CandidateService; use App\Models\TalentBank\Candidate; use App\Models\TalentBank\EducationLevel; use App\Models\TalentBank\Neighbourhood; use App\Models\TalentBank\Occupation; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\View\View; class ConcluirCadastroController extends Controller { public function show(Request $request): View|RedirectResponse { $candidate = $this->resolveCandidate($request); if ($candidate->isProfileComplete()) { return redirect()->route('talent-bank.candidate.profile'); } // Candidato sem dados legados (veio direto do Conta Angra, sem histórico no BT antigo): // não tem birth_date nem address importados — exibe texto de boas-vindas diferente. $hasLegacyData = $candidate->birth_date !== null || $candidate->address !== null; return view('talent-bank.candidate.concluir-cadastro', [ 'candidate' => $candidate, 'hasLegacyData' => $hasLegacyData, 'educationLevels' => EducationLevel::orderBy('name')->get(), 'occupations' => Occupation::orderBy('name')->get(), 'neighbourhoods' => Neighbourhood::orderBy('name')->get(), ]); } public function store(Request $request): RedirectResponse { $candidate = $this->resolveCandidate($request); if ($candidate->isProfileComplete()) { return redirect()->route('talent-bank.candidate.profile'); } $data = $request->validate([ 'birth_date' => ['required', 'date', 'before:today'], 'cellphone' => ['required', 'string', 'max:20'], 'zip_code' => ['required', 'string', 'max:9'], 'neighbourhood_id' => ['nullable', 'integer', 'exists:neighbourhoods,id'], 'address' => ['nullable', 'string', 'max:255'], 'occupation_id' => ['required', 'integer', 'exists:occupations,id'], 'cv_summary' => ['nullable', 'string', 'max:2000'], 'terms' => ['accepted'], 'privacy' => ['accepted'], ], [ 'birth_date.required' => 'A data de nascimento é obrigatória.', 'birth_date.date' => 'Informe uma data de nascimento válida.', 'birth_date.before' => 'A data de nascimento deve ser anterior a hoje.', 'cellphone.required' => 'O celular é obrigatório.', 'zip_code.required' => 'O CEP é obrigatório.', 'occupation_id.required' => 'Selecione uma área de atuação.', 'occupation_id.exists' => 'Área de atuação inválida.', 'terms.accepted' => 'Você precisa aceitar os Termos de Uso.', 'privacy.accepted' => 'Você precisa aceitar a Política de Privacidade.', ]); DB::transaction(function () use ($candidate, $data): void { // Remove campos de aceite — não são colunas do model unset($data['terms'], $data['privacy']); $cellphone = preg_replace('/\D/', '', (string) ($data['cellphone'] ?? '')); $data['cellphone'] = $cellphone; $candidate->fill($data); $candidate->markProfileComplete(); }); return redirect()->route('talent-bank.candidate.profile') ->with('success', 'Cadastro concluído com sucesso! Bem-vindo ao Banco de Talentos.'); } private function resolveCandidate(Request $request): Candidate { $user = $request->input('talentBankUser') ?? $request->talentBankUser ?? null; abort_if(! $user instanceof Candidate, 403); return $user; } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings