@php
// Configuração completa de todas as colunas da tabela candidates
$columnsConfig = [
// Dados Pessoais (Alta Prioridade)
'first_name' => ['name' => 'Nome', 'weight' => 4, 'category' => 'Dados Pessoais'],
'last_name' => ['name' => 'Sobrenome', 'weight' => 4, 'category' => 'Dados Pessoais'],
'date_of_birth' => ['name' => 'Data de Nascimento', 'weight' => 3, 'category' => 'Dados Pessoais'],
'gender' => ['name' => 'Género', 'weight' => 2, 'category' => 'Dados Pessoais'],
'nationality' => ['name' => 'Nacionalidade', 'weight' => 2, 'category' => 'Dados Pessoais'],
// Contactos (Alta Prioridade)
'phone' => ['name' => 'Telefone', 'weight' => 4, 'category' => 'Contactos'],
'address' => ['name' => 'Endereço', 'weight' => 2, 'category' => 'Contactos'],
// Localização (Média Prioridade)
'province_id' => ['name' => 'Província', 'weight' => 2, 'category' => 'Localização'],
'city' => ['name' => 'Cidade', 'weight' => 2, 'category' => 'Localização'],
// Perfil Profissional (Alta Prioridade)
'current_title' => ['name' => 'Título Profissional', 'weight' => 5, 'category' => 'Perfil Profissional'],
'bio' => ['name' => 'Resumo Profissional', 'weight' => 3, 'category' => 'Perfil Profissional'],
'experience_years' => ['name' => 'Anos de Experiência', 'weight' => 4, 'category' => 'Perfil Profissional'],
'education_level' => ['name' => 'Nível de Educação', 'weight' => 3, 'category' => 'Perfil Profissional'],
'expected_salary' => ['name' => 'Expectativa Salarial', 'weight' => 2, 'category' => 'Perfil Profissional'],
// Competências (Alta Prioridade)
'skills' => ['name' => 'Competências', 'weight' => 4, 'category' => 'Competências', 'type' => 'array'],
'languages' => ['name' => 'Idiomas', 'weight' => 3, 'category' => 'Competências', 'type' => 'array'],
// Experiência & Educação (Muito Alta Prioridade)
'experiences' => ['name' => 'Experiência Profissional', 'weight' => 6, 'category' => 'Experiência & Educação', 'type' => 'array'],
'educations' => ['name' => 'Formação Académica', 'weight' => 5, 'category' => 'Experiência & Educação', 'type' => 'array'],
// Licenças & Certificados (Média Prioridade)
'licenses' => ['name' => 'Licenças e Certificados', 'weight' => 2, 'category' => 'Licenças & Certificados', 'type' => 'array'],
// Preferências (Baixa Prioridade)
'preferred_locations' => ['name' => 'Localizações Preferidas', 'weight' => 1, 'category' => 'Preferências', 'type' => 'array'],
'preferred_job_types' => ['name' => 'Tipos de Emprego Preferidos', 'weight' => 1, 'category' => 'Preferências', 'type' => 'array'],
// Status (Baixa Prioridade)
'is_active' => ['name' => 'Perfil Ativo', 'weight' => 1, 'category' => 'Status'],
'is_available' => ['name' => 'Disponível para Trabalho', 'weight' => 1, 'category' => 'Status'],
];
// Inicializar variáveis
$totalWeight = 0;
$filledWeight = 0;
$completionDetails = [];
$categoryProgress = [];
if (isset($consultor) && $consultor) {
foreach ($columnsConfig as $column => $config) {
$totalWeight += $config['weight'];
$isFilled = false;
$value = $consultor->$column;
// Verificar se o campo está preenchido
if (isset($config['type']) && $config['type'] === 'array') {
// Campos do tipo array/JSON
if (!empty($value)) {
if (is_array($value) && count($value) > 0) {
$filledWeight += $config['weight'];
$isFilled = true;
} elseif (is_string($value)) {
$decoded = json_decode($value, true);
if (is_array($decoded) && count($decoded) > 0) {
$filledWeight += $config['weight'];
$isFilled = true;
}
}
}
} else {
// Campos normais
if (!empty($value)) {
$filledWeight += $config['weight'];
$isFilled = true;
}
}
// Armazenar detalhes
$completionDetails[$column] = [
'name' => $config['name'],
'filled' => $isFilled,
'weight' => $config['weight'],
'category' => $config['category'],
'value' => $value
];
// Calcular progresso por categoria
if (!isset($categoryProgress[$config['category']])) {
$categoryProgress[$config['category']] = [
'total' => 0,
'filled' => 0,
'items' => []
];
}
$categoryProgress[$config['category']]['total'] += $config['weight'];
if ($isFilled) {
$categoryProgress[$config['category']]['filled'] += $config['weight'];
}
$categoryProgress[$config['category']]['items'][] = $config['name'];
}
$completionPercentage = $totalWeight > 0 ? round(($filledWeight / $totalWeight) * 100) : 0;
} else {
$completionPercentage = 0;
$completionDetails = [];
$categoryProgress = [];
}
@endphp
{{ $filledWeight }}/{{ $totalWeight }} pontos conquistados
@if($completionPercentage >= 90)
- Perfil completo e pronto para candidaturas! 🎉
@elseif($completionPercentage >= 70)
- Perfil quase completo. Continue assim! 💪
@elseif($completionPercentage >= 50)
- Perfil moderado. Complete mais dados. 📈
@else
- Perfil básico. Complete seus dados. 🚀
@endif
Progresso por Categoria:
@foreach($categoryProgress as $category => $progress)
@php
$categoryPercentage = $progress['total'] > 0 ? round(($progress['filled'] / $progress['total']) * 100) : 0;
@endphp
{{ $category }}
{{ $categoryPercentage }}%
{{ $progress['filled'] }}/{{ $progress['total'] }} pontos
@endforeach
Itens para completar seu perfil:
-
Nome completo
-
Telefone
-
Título profissional
-
Anos de experiência
-
Data de nascimento
-
Formação académica
-
Experiência profissional
-
Idiomas
-
Resumo profissional
-
Endereço completo
{{ $consultor->applications->count() }}
Candidaturas Enviadas
{{ $consultor->applications->where('status', 'in_process')->count() }}
Em Processo
{{ $taxaResposta = $consultor->applications->count() > 0 ? round(($consultor->applications->where('status', 'in_process')->count() / $consultor->applications->count()) * 100) : 0 }}%
Taxa de Resposta
@push('scripts')
@endpush
@endsection