<?php
/**
 * Selflix Vagas - Listagem de Candidaturas (CSS Unificado)
 */
if (session_status() == PHP_SESSION_NONE) { session_start(); }
require_once dirname(__DIR__) . '/conexao.php';
require_once dirname(__DIR__) . '/env.php';

if (!isset($_SESSION['id']) || ($_SESSION['role'] ?? '') !== 'Candidatos') {
    header("Location: ../login.php"); exit();
}

$candidato_id = (int)$_SESSION['id'];

try {
    $sql = "SELECT 
                c.id AS candidatura_id, c.vaga_id, c.data_candidatura,
                COALESCE(ap.titulo_vaga, ag.titulo_vaga, 'Vaga sem Título') AS titulo_vaga,
                age.id AS agendamento_id, age.data_hora_entrevista, age.status AS status_entrevista,
                age.mensagem AS msg_convite, COALESCE(age.motivo_reagendamento, '') AS msg_reagendar,
                COALESCE(age.justificativa_cancelamento, '') AS msg_cancelar
            FROM candidaturas c
            LEFT JOIN anuncio_pago ap ON (c.vaga_id = ap.id AND c.tipo_anuncio IN ('pago', 'paga'))
            LEFT JOIN anuncio_gratuito ag ON (c.vaga_id = ag.id AND c.tipo_anuncio IN ('gratuito', 'gratuita'))
            LEFT JOIN Agendamentos age ON (c.vaga_id = age.vaga_id AND c.candidato_id = age.candidato_id)
            WHERE c.candidato_id = :id_cand
            ORDER BY c.data_candidatura DESC";

    $stmt = $pdo->prepare($sql);
    $stmt->execute([':id_cand' => $candidato_id]);
    $minhasCandidaturas = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) { die("Erro: " . $e->getMessage()); }
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Minhas Candidaturas | Selflix</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
    <style>
    :root { --selflix-teal: #12929e; }
    body { background-color: #f8f9fa; font-family: 'Segoe UI', sans-serif; color: #333; }
    .wrapper { padding: 30px 0; }
    
    /* Estrutura do Card Principal */
    .main-card { border-radius: 15px; border: none; box-shadow: 0 5px 20px rgba(0,0,0,0.05); background: #fff; overflow: hidden; }
    
    /* Botões do Header - Estáticos */
    .btn-header-selflix {
        color: #6c757d !important;
        border: 1px solid #ced4da !important;
        background-color: #fff !important;
        transition: none !important;
        text-decoration: none;
    }

    /* Desktop: Alinhamento e Hovers Removidos */
    @media (min-width: 769px) {
        .card-header-selflix { padding: 25px; border-bottom: 1px solid #dee2e6; display: flex; justify-content: space-between; align-items: center; background-color: #fff; }
        
        .btn-header-selflix:hover {
            color: var(--selflix-teal) !important;
            border-color: var(--selflix-teal) !important;
            background-color: #fff !important;
        }

        table th:first-child, table td:first-child { padding-left: 20px !important; }
        
        /* Remove hover da tabela */
        .table tbody tr:hover { background-color: transparent !important; }
    }

    /* Botões de Ação - Estilo Base Estático */
    .btn-group-actions { border: 1px solid #dee2e6; border-radius: 10px; overflow: hidden; display: inline-flex; background-color: #fff; }
    .btn-group-actions .btn { border: none; border-right: 1px solid #dee2e6; padding: 10px 14px; font-size: 0.85rem; font-weight: 600; display: flex; align-items: center; gap: 6px; color: #444; background: #fff !important; cursor: pointer; text-decoration: none; transition: none !important; }
    .btn-group-actions .btn:hover { color: var(--selflix-teal) !important; background: #fff !important; }
    .btn-group-actions .btn:last-child { border-right: none; }

    /* Ícones */
    .icon-msg { color: #00838f; }
    .icon-confirm { color: #2e7d32; }
    .icon-reagendar { color: #f57f17; }
    .icon-desistir { color: #c62828; }

    .badge-custom { padding: 6px 12px; border-radius: 50px; font-weight: 700; font-size: 0.65rem; text-transform: uppercase; display: inline-block; }
    .bg-presenca { background-color: #0d6efd; color: #fff; }

    /* Estilos Mobile - REMOVE HOVER E EMPILHA */
    @media (max-width: 768px) {
        .wrapper { padding: 20px !important; }
        .main-card { background: transparent !important; box-shadow: none !important; border: none !important; }
        
        .main-card .card-header-selflix { 
            background: #fff !important;
            flex-direction: column !important; 
            align-items: center !important; 
            text-align: center !important; 
            gap: 12px !important; 
            padding: 25px 20px !important;
            border-radius: 15px !important; 
            box-shadow: 0 4px 15px rgba(0,0,0,0.06);
            border: 1px solid #eee !important;
            margin-bottom: 20px !important; 
            display: flex;
        }

        /* Botões do topo no mobile */
        .btn-header-selflix, .btn-header-selflix:active, .btn-header-selflix:focus {
            background-color: #fff !important;
            color: #6c757d !important;
            border-color: #ced4da !important;
            -webkit-tap-highlight-color: transparent;
        }

        .card-header-selflix .btn-header-selflix { width: 100%; }

        thead { display: none !important; }
        table, tbody, tr, td { display: block !important; width: 100% !important; }
        
        /* Cards mobile sem hover */
        tr { 
            background: #fff !important; 
            margin-bottom: 20px !important; 
            border-radius: 15px !important; 
            padding: 20px !important; 
            box-shadow: 0 4px 15px rgba(0,0,0,0.06) !important; 
            border: 1px solid #eee !important;
            -webkit-tap-highlight-color: transparent;
        }
        tr:active { background: #fff !important; }

        td { border: none !important; padding: 8px 0 !important; text-align: left !important; background: transparent !important; }
        td::before { content: attr(data-label); display: block; font-size: 0.65rem; font-weight: 800; color: #999; text-transform: uppercase; margin-bottom: 2px; }
        
        /* Botões de ação no mobile */
        .btn-group-actions { display: flex !important; flex-direction: column !important; width: 100% !important; border-radius: 10px !important; margin-top: 10px !important; }
        .btn-group-actions .btn { border-right: none !important; border-bottom: 1px solid #eee !important; justify-content: flex-start !important; padding: 14px !important; font-size: 0.9rem !important; background: #fff !important; }
        .btn-group-actions .btn:active { background: #fff !important; color: var(--selflix-teal) !important; }
    }

    .card-header-selflix h3 { color: var(--selflix-teal); font-weight: 700; margin: 0; }
</style>
</head>
<body>

    <?php include_once dirname(__DIR__) . '/menu-paineis.php'; ?>

    <div class="container wrapper">
        <div class="card main-card">
            <div class="card-header-selflix">
                <h3><i class="fas fa-briefcase me-2"></i> Minhas Candidaturas</h3>
                <div class="d-flex gap-2 flex-column flex-sm-row w-100 w-sm-auto justify-content-end">
                    <a href="https://selflix.com.br/selflix-video-curriculo/" target="_blank" class="btn btn-header-selflix btn-sm rounded-pill px-4">Vídeo Currículo</a>
                    <a href="../painel-de-gestao-candidato.php" class="btn btn-header-selflix btn-sm rounded-pill px-4">Painel</a>
                </div>
            </div>

            <div class="table-responsive-none">
                <table class="table align-middle mb-0">
                    <thead class="table-light"> 
                        <tr>
                            <th>Vaga</th>
                            <th>Inscrição</th>
                            <th>Status / Entrevista</th>
                            <th>Ações</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($minhasCandidaturas as $item): 
                            $status = trim($item['status_entrevista'] ?? '');
                            $ag_id = $item['agendamento_id'];
                            $temMsg = (!empty($item['msg_convite']) || !empty($item['msg_reagendar']) || !empty($item['msg_cancelar']));
                        ?>
                            <tr>
                                <td data-label="Vaga">
                                    <div class="fw-bold text-dark"><?= htmlspecialchars($item['titulo_vaga']) ?></div>
                                </td>
                                <td data-label="Inscrição">
                                    <div class="text-muted small"><?= date('d/m/Y', strtotime($item['data_candidatura'])) ?></div>
                                </td>
                                <td data-label="Status / Entrevista">
                                    <?php if ($ag_id): ?>
                                        <div class="fw-bold small mb-1"><?= date('d/m/Y H:i', strtotime($item['data_hora_entrevista'])) ?></div>
                                        <span class="badge-custom <?= (in_array($status, ['Aceito', 'Confirmado'])) ? 'bg-presenca' : (($status === 'Cancelado') ? 'bg-danger text-white' : 'bg-light border text-muted') ?>">
                                            <?= $status ?>
                                        </span>
                                    <?php else: ?>
                                        <span class="text-muted small italic">Em Triagem</span>
                                    <?php endif; ?>
                                </td>
                                <td data-label="Ações">
                                    <div class="btn-group-actions">
                                        <?php if ($temMsg): ?>
                                            <button type="button" class="btn" onclick="verMensagens('<?= addslashes($item['msg_convite']) ?>', '<?= addslashes($item['msg_reagendar']) ?>', '<?= addslashes($item['msg_cancelar']) ?>')">
                                                <i class="far fa-comment-dots icon-msg"></i> Mensagem
                                            </button>
                                        <?php endif; ?>

                                        <?php if ($ag_id && $status !== 'Cancelado'): ?>
                                            <?php if (!in_array($status, ['Aceito', 'Confirmado'])): ?>
                                                <button type="button" class="btn btn-trigger" data-id="<?= $ag_id ?>" data-tipo="confirmar" data-vaga="<?= htmlspecialchars($item['titulo_vaga']) ?>">
                                                    <i class="fas fa-check icon-confirm"></i> Confirmar
                                                </button>
                                            <?php endif; ?>

                                            <button type="button" class="btn btn-trigger" data-id="<?= $ag_id ?>" data-tipo="reagendar" data-vaga="<?= htmlspecialchars($item['titulo_vaga']) ?>">
                                                <i class="fas fa-clock icon-reagendar"></i> Reagendar
                                            </button>

                                            <button type="button" class="btn btn-trigger" data-id="<?= $ag_id ?>" data-tipo="desistir" data-vaga="<?= htmlspecialchars($item['titulo_vaga']) ?>">
                                                <i class="fas fa-user-times icon-desistir"></i> Desistir
                                            </button>
                                        <?php endif; ?>
                                    </div>
                                </td>
                            </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
        </div>
    </div>

    <div class="modal fade" id="modalAcao" tabindex="-1">
        <div class="modal-dialog modal-dialog-centered">
            <div class="modal-content border-0" style="border-radius:15px;">
                <div class="modal-header">
                    <h5 class="modal-title fw-bold" id="modalTitle">Ação</h5>
                    <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
                </div>
                <form id="formAcaoAgendamento">
                    <div class="modal-body">
                        <input type="hidden" name="agendamento_id" id="modal_id">
                        <p id="modalVagaTexto" class="fw-bold mb-3 small"></p>
                        <div id="msgConfirmar" class="alert alert-success d-none">Confirma a sua presença para esta data?</div>
                        <div id="msgDesistir" class="alert alert-danger d-none">Tem a certeza que deseja desistir desta candidatura?</div>
                        <div id="campoData" class="mb-3 d-none">
                            <label class="form-label fw-bold small">Sugerir Nova Data/Hora:</label>
                            <input type="datetime-local" name="data_hora" class="form-control" id="input_data">
                        </div>
                        <div id="campoMotivo" class="mb-3 d-none">
                            <label class="form-label fw-bold small" id="labelMotivo">Motivo:</label>
                            <textarea class="form-control" name="mensagem" id="txt_msg" rows="3"></textarea>
                        </div>
                    </div>
                    <div class="modal-footer">
                        <button type="submit" class="btn btn-primary w-100" id="btnSubmitModal" style="background:var(--selflix-teal); border:none; padding:12px; border-radius:10px; font-weight:bold;">Enviar</button>
                    </div>
                </form>
            </div>
        </div>
    </div>

    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
    <script>
    $(document).ready(function() {
        const modalAcao = new bootstrap.Modal('#modalAcao');
        $('.btn-trigger').click(function() {
            const btn = $(this);
            const tipo = btn.data('tipo');
            $('#modal_id').val(btn.data('id'));
            $('#modalVagaTexto').text('Vaga: ' + btn.data('vaga'));
            $('#campoData, #msgConfirmar, #msgDesistir, #campoMotivo').addClass('d-none');
            $('#input_data, #txt_msg').prop('required', false);
            $('#btnSubmitModal').css('background', '#12929e').text('Enviar Resposta');

            if(tipo === 'confirmar') {
                $('#modalTitle').text('Confirmar Presença');
                $('#msgConfirmar').removeClass('d-none');
                $('#formAcaoAgendamento').attr('action', '../agenda/processar_resposta_entrevista.php');
            } else if(tipo === 'reagendar') {
                $('#modalTitle').text('Solicitar Reagendamento');
                $('#campoData, #campoMotivo').removeClass('d-none');
                $('#labelMotivo').text('Justificativa:');
                $('#input_data, #txt_msg').prop('required', true);
                $('#formAcaoAgendamento').attr('action', '../agenda/propor_reagendamento.php');
            } else if(tipo === 'desistir') {
                $('#modalTitle').text('Desistir da Vaga');
                $('#msgDesistir, #campoMotivo').removeClass('d-none');
                $('#labelMotivo').text('Motivo (Opcional):');
                $('#btnSubmitModal').css('background', '#dc3545').text('Confirmar Desistência');
                $('#formAcaoAgendamento').attr('action', '../agenda/desistir_vaga.php');
            }
            modalAcao.show();
        });

        $('#formAcaoAgendamento').submit(function(e) {
            e.preventDefault();
            Swal.fire({ title: 'A processar...', didOpen: () => { Swal.showLoading(); }});
            $.ajax({
                url: $(this).attr('action'),
                type: 'POST',
                data: $(this).serialize(),
                dataType: 'json',
                success: function(res) {
                    if(res.success) { Swal.fire('Sucesso!', res.message, 'success').then(() => { location.reload(); }); }
                    else { Swal.fire('Erro', res.message, 'error'); }
                },
                error: function() { Swal.fire('Erro', 'Falha na ligação com o servidor.', 'error'); }
            });
        });
    });

    function verMensagens(conv, reag, canc) {
        let h = "";
        if(conv) h += `<div class='text-start mb-2'><span class='badge bg-info'>Convite</span><p class='small border p-2'>${conv}</p></div>`;
        if(reag) h += `<div class='text-start mb-2'><span class='badge bg-warning text-dark'>Reagendamento</span><p class='small border p-2'>${reag}</p></div>`;
        if(canc) h += `<div class='text-start mb-2'><span class='badge bg-danger'>Cancelamento</span><p class='small border p-2'>${canc}</p></div>`;
        Swal.fire({ title: 'Histórico', html: h, confirmButtonColor: '#12929e' });
    }
    </script>
</body>
</html>