@extends('admin.base-chamados') @section('page_title', 'Pré-Contratações | Admin RH') @section('nav') @include('admin.partials.nav-rh') @endsection @section('page-header')

Contratações

@endsection @section('stat-cards') @endsection @section('toolbar-filters') @endsection @section('table-rows') @php $statusAtual = request('status', ''); $filialAtual = request('filial', ''); $cargoAtual = request('cargo', ''); $periodoInicio = request('data_inicio', ''); $periodoFim = request('data_fim', ''); $busca = request('busca', ''); $periodoInicioDisplay = $periodoInicio ? \Carbon\Carbon::parse($periodoInicio)->format('d/m/Y') : ''; $periodoFimDisplay = $periodoFim ? \Carbon\Carbon::parse($periodoFim)->format('d/m/Y') : ''; @endphp

Total: {{ $registros->total() }} registro(s)

{{-- Abas de Navegação --}}
Contratações {{ $countPreContratacoes ?? $registros->total() }} Pré-finalizados {{ $countPreFinalizados ?? 0 }} Finalizados {{ $countFinalizados ?? 0 }}
{{-- Busca + Filtros --}}
Filtros Avançados
até
@if (request()->hasAny(['status', 'filial', 'cargo', 'data_inicio', 'data_fim', 'busca'])) Limpar Filtros @endif
{{-- Filtros Ativos --}} @if (request()->hasAny(['status', 'filial', 'cargo', 'data_inicio', 'data_fim', 'busca']))
Filtros ativos: @if ($busca) Busca: "{{ $busca }}" @endif @if ($statusAtual) Status: {{ ucfirst($statusAtual) }} @endif @if ($filialAtual) @if ($filiais->has($filialAtual)) Filial: {{ $filiais->get($filialAtual) }} @endif @endif @if ($cargoAtual) Cargo: {{ str_replace('_', ' ', ucwords($cargoAtual, '_')) }} @endif @if ($periodoInicio || $periodoFim) Período: {{ $periodoInicioDisplay ?: '...' }} até {{ $periodoFimDisplay ?: '...' }} @endif
@endif @if ($registros->isEmpty())

Nenhum resultado encontrado

Tente ajustar os filtros ou limpar todos os filtros.

@else @foreach ($registros as $registro) @php $status = $registro->status ?? ($registro->payload['status'] ?? 'pendente'); $isNovo = $registro->created_at->diffInHours(now()) < 24 && in_array($status, ['pendente', 'pendente_reenvio']); $docsRenviados = $registro->payload['docs_reenviados'] ?? []; $qtdRenviados = count($docsRenviados); @endphp
#{{ $registro->id }} @if ($isNovo) NOVO @endif
{{ $registro->nome_candidato }}
{{ $registro->cargo_formatado }} {{ optional($registro->filial)->comment ?? '-' }}
@if ($qtdRenviados > 0 && $status === 'pendente') Documento reenviado ({{ $qtdRenviados }}) @endif
@if ($status === 'pendente') Pendente @elseif ($status === 'pendente_reenvio') Aguardando Retorno @elseif ($status === 'aprovado') Aprovado @elseif ($status === 'reprovado') Reprovado @elseif ($status === 'aguardando_assinatura_usuario') Assinatura Pendente @elseif ($status === 'aguardando_documento_rh') RH Preparando Doc. @elseif ($status === 'assinatura_recebida') Assinatura Enviada @elseif ($status === 'aguardando_malote') Aguardando Malote @elseif ($status === 'cancelado') Cancelado @endif
{{ optional($registro->data_admissao_prevista)->format('d/m/Y') ?? '-' }} Admissão
@endforeach
{{ $registros->appends(request()->query())->links() }}
@endif
@endsection @section('scripts-extra') document.getElementById('filtro-main-drop').style.display = 'none'; window.toggleFilters = function() { const body = document.getElementById('filtersBody'); const icon = document.querySelector('.toggle-icon'); if (body.style.display === 'none') { body.style.display = 'block'; icon.style.transform = 'rotate(180deg)'; } else { body.style.display = 'none'; icon.style.transform = 'rotate(0deg)'; } }; function validarDataBR(valor) { if (!valor || valor.trim() === '') return { valido: true, motivo: '' }; if (valor.length !== 10) return { valido: false, motivo: 'Formato inválido. Use dd/mm/aaaa.' }; const p = valor.split('/'); if (p.length !== 3) return { valido: false, motivo: 'Formato inválido. Use dd/mm/aaaa.' }; const dia = +p[0], mes = +p[1], ano = +p[2], anoAtual = new Date().getFullYear(); if (isNaN(dia) || isNaN(mes) || isNaN(ano)) return { valido: false, motivo: 'Data inválida.' }; if (mes < 1 || mes > 12) return { valido: false, motivo: 'Mês inválido (01 a 12).' }; if (dia < 1 || dia > 31) return { valido: false, motivo: 'Dia inválido (01 a 31).' }; if (ano < 2000 || ano > anoAtual) return { valido: false, motivo: 'Ano inválido (2000 a ' + anoAtual + ').' }; const d = new Date(ano, mes - 1, dia); if (d.getFullYear() !== ano || d.getMonth() !== mes - 1 || d.getDate() !== dia) return { valido: false, motivo: 'Esta data não existe.' }; return { valido: true, motivo: '' }; } function aplicarValidacaoData(input) { const feedbackId = input.id === 'periodo_inicio_display' ? 'erro-periodo-inicio' : 'erro-periodo-fim'; const fb = document.getElementById(feedbackId); const r = validarDataBR(input.value); if (!r.valido) { input.classList.add('erro-validacao'); if (fb) { fb.textContent = r.motivo; fb.style.display = 'block'; } return false; } input.classList.remove('erro-validacao'); if (fb) { fb.textContent = ''; fb.style.display = 'none'; } return true; } document.addEventListener('DOMContentLoaded', function () { document.querySelectorAll('.precontratacao-card[data-href]').forEach(function (card) { card.addEventListener('click', function (e) { if (e.target.closest('a, button')) return; window.location.href = card.dataset.href; }); }); const searchInput = document.querySelector('input[name="busca"]'); if (searchInput) { let searchTimer = null; searchInput.addEventListener('input', function () { clearTimeout(searchTimer); const len = this.value.trim().length; if (len >= 3 || len === 0) { searchTimer = setTimeout(function () { document.getElementById('filtrosForm').submit(); }, 400); } }); } document.querySelectorAll('.date-input-br').forEach(function (input) { input.addEventListener('input', function () { let v = this.value.replace(/\D/g, ''); if (v.length >= 2) v = v.substring(0, 2) + '/' + v.substring(2); if (v.length >= 5) v = v.substring(0, 5) + '/' + v.substring(5, 9); this.value = v; }); input.addEventListener('blur', function () { aplicarValidacaoData(this); }); }); const form = document.getElementById('filtrosForm'); if (form) { form.addEventListener('submit', function (e) { const ini = document.getElementById('periodo_inicio_display'); const fim = document.getElementById('periodo_fim_display'); if (!aplicarValidacaoData(ini) || !aplicarValidacaoData(fim)) { e.preventDefault(); e.stopPropagation(); alert('Por favor, corrija as datas inválidas.'); return false; } const parse = (v, id) => { if (v && v.length === 10) { const p = v.split('/'); document.getElementById(id).value = `${p[2]}-${p[1]}-${p[0]}`; } }; parse(ini.value.trim(), 'periodo_inicio'); parse(fim.value.trim(), 'periodo_fim'); }); } }); @endsection