/**
 * TEMPLATE: beforeSendData-base.js
 * =============================================
 * Evento de WORKFLOW que popula campos customizados
 * para o Fluig Analytics (BI/Dashboards).
 *
 * PADRAO DE PRODUCAO (BOMAG, Aprovacao Compras):
 * - Popular customFields[0..14] com dados do formulario
 * - Calcular prazo da atividade se disponivel
 * - Formatar datas para exibicao
 */

function beforeSendData(customFields, customFacts) {

    // =============================================
    // DADOS BASICOS PARA ANALYTICS
    // =============================================
    customFields[0] = hAPI.getCardValue("${CAMPO_EMPRESA}");
    customFields[1] = hAPI.getCardValue("${CAMPO_FILIAL}");
    customFields[2] = hAPI.getCardValue("${CAMPO_AREA}");
    customFields[3] = hAPI.getCardValue("${CAMPO_SOLICITANTE}");

    // =============================================
    // DATA DE ABERTURA FORMATADA
    // =============================================
    var dataAtual = new Date();
    var dataAbertura = formataData(
        dataAtual.getDate(),
        dataAtual.getMonth() + 1,
        dataAtual.getYear() + 1900,
        dataAtual.getHours(),
        dataAtual.getMinutes(),
        dataAtual.getSeconds()
    );
    customFields[4] = dataAbertura;

    // =============================================
    // PRAZO DA ATIVIDADE (opcional)
    // Calcula prazo com base nas horas configuradas
    // =============================================
    var proximaAtividade = getValue("WKNextState");
    var prazoSemHora = "Sem prazo";
    var prazoComHora = "Sem prazo";

    // if (proximaAtividade == ${ATIV_COM_PRAZO}) {
    //     var processo = getValue("WKDef");
    //     var versao = getValue("WKVersDef");
    //     var c1 = DatasetFactory.createConstraint("processStatePK.sequence", proximaAtividade, proximaAtividade, ConstraintType.MUST);
    //     var c2 = DatasetFactory.createConstraint("processStatePK.processId", processo, processo, ConstraintType.MUST);
    //     var c3 = DatasetFactory.createConstraint("processStatePK.version", versao, versao, ConstraintType.MUST);
    //     var ds = DatasetFactory.getDataset("processState", null, new Array(c1, c2, c3), null);
    //
    //     if (ds != null && ds.rowsCount > 0) {
    //         var prazoHoras = parseInt(ds.getValue(0, "deadlineTime") + "") / 3600;
    //         if (prazoHoras > 0) {
    //             var consultaPrazo = hAPI.calculateDeadLineHours(dataAtual, 0, prazoHoras, "Default");
    //             var dataPrazo = consultaPrazo[0];
    //             prazoSemHora = formataData(dataPrazo.getDate(), dataPrazo.getMonth() + 1, dataPrazo.getYear() + 1900);
    //         }
    //     }
    // }

    customFields[5] = prazoSemHora;
    customFields[6] = prazoComHora;
}

/**
 * Formata data para exibicao no Analytics.
 */
function formataData(dia, mes, ano, hora, minuto, segundo) {
    if ((dia + "").length == 1) dia = "0" + dia;
    if ((mes + "").length == 1) mes = "0" + mes;

    var dataRetorno = dia + "/" + mes + "/" + ano;

    if (hora != undefined) {
        if ((hora + "").length == 1) hora = "0" + hora;
        if ((minuto + "").length == 1) minuto = "0" + minuto;
        if ((segundo + "").length == 1) segundo = "0" + segundo;
        dataRetorno = dataRetorno + " " + hora + ":" + minuto + ":" + segundo;
    }

    return dataRetorno;
}
