/**
 * TEMPLATE: beforeSendValidate-base.js
 * =============================================
 * Validacao CLIENT-SIDE executada antes de enviar
 * o formulario. Complementa o validateForm (server).
 *
 * IMPORTANTE:
 * - Roda no NAVEGADOR (ES6 permitido)
 * - Retorna true para permitir, false para bloquear
 * - Use FLUIGC.toast() para mensagens de erro
 * - NAO substitui validateForm (server-side)
 * - Adicione este arquivo junto ao custom.js
 *
 * PADRAO DE PRODUCAO (VIPal, BOMAG):
 * 1. Verificar atividade atual
 * 2. Validar campos obrigatorios
 * 3. Mostrar toast se invalido
 * 4. Retornar false para bloquear
 */

function beforeSendValidate(numState, nextState) {

    // =============================================
    // ATIVIDADE ${ATIV_1}: Solicitante
    // =============================================
    if (numState == ${ATIV_1}) {

        // Campo texto obrigatorio
        if (!$('#${CAMPO_1}').val() || $.trim($('#${CAMPO_1}').val()) == '') {
            FLUIGC.toast({
                title: 'Campo obrigatorio',
                message: 'Preencha o campo "${LABEL_1}".',
                type: 'danger'
            });
            return false;
        }

        // Select obrigatorio
        if (!$('#${CAMPO_SELECT}').val()) {
            FLUIGC.toast({
                title: 'Campo obrigatorio',
                message: 'Selecione uma opcao em "${LABEL_SELECT}".',
                type: 'danger'
            });
            return false;
        }

        // Data obrigatoria
        if (!$('#${CAMPO_DATA}').val()) {
            FLUIGC.toast({
                title: 'Campo obrigatorio',
                message: 'Informe a data em "${LABEL_DATA}".',
                type: 'danger'
            });
            return false;
        }

        // Tabela pai-filho: pelo menos 1 item
        // var primeiraLinha = $('[name="${CAMPO_FILHO_1}"]').first().val();
        // if (!primeiraLinha || $.trim(primeiraLinha) == '') {
        //     FLUIGC.toast({
        //         title: 'Tabela vazia',
        //         message: 'Adicione pelo menos um item na tabela.',
        //         type: 'danger'
        //     });
        //     return false;
        // }
    }

    // =============================================
    // ATIVIDADE ${ATIV_2}: Aprovacao
    // =============================================
    if (numState == ${ATIV_2}) {

        // Radio obrigatorio
        if (!$('input[name="aprovacao_${ATIV_2}"]:checked').val()) {
            FLUIGC.toast({
                title: 'Aprovacao',
                message: 'Selecione "Aprovar" ou "Reprovar".',
                type: 'danger'
            });
            return false;
        }

        // Se reprovado, exigir observacao
        var decisao = $('input[name="aprovacao_${ATIV_2}"]:checked').val();
        if (decisao == 'N' && !$.trim($('#obs_${ATIV_2}').val())) {
            FLUIGC.toast({
                title: 'Observacao obrigatoria',
                message: 'Informe o motivo da reprovacao.',
                type: 'danger'
            });
            return false;
        }
    }

    // Tudo OK
    return true;
}
