/**
 * TEMPLATE: gravaHistorico-base.js
 * =============================================
 * Funcao auxiliar para gravar trilha de auditoria.
 * Chamada pelo inputFields a cada movimentacao.
 *
 * PADRAO DE PRODUCAO (VIPal):
 * - Monta registro: data + hora + usuario + acao + observacao
 * - Concatena com historico anterior (LIFO - mais recente primeiro)
 * - Grava em campo hidden "histGeral" (historico completo)
 * - Grava em campo hidden "histAtiv_N" (historico por atividade)
 * - Usa labels Bootstrap para separar por data
 *
 * CAMPOS HIDDEN NECESSARIOS NO HTML:
 * <input type="hidden" name="histGeral" id="histGeral" />
 * <input type="hidden" name="histAtiv_${ATIV}" id="histAtiv_${ATIV}" />
 * <input type="hidden" name="dtUltimoHistorico_EN" id="dtUltimoHistorico_EN" />
 */

function gravaHistorico(form, atividade, observacao, acao) {

    var nome = fnBuscarColleague(getValue("WKUser"), "colleagueName");
    var dtAtual = fnBuscarDataHora("data");
    var hrAtual = fnBuscarDataHora("hora");
    var dtAtual_EN = fnInverteData(dtAtual);

    // Montar linha do historico
    var histInic = dtAtual + " - " + hrAtual + " - " + nome;

    if (acao != null && acao != "") {
        histInic = histInic + " - Acao: " + acao;
    }

    if (observacao != null && observacao != "") {
        histInic = histInic + " - " + observacao;
    }

    histInic = histInic + "<br>";

    // =============================================
    // HISTORICO POR ATIVIDADE (histAtiv_N)
    // =============================================
    var histAtivAnt = form.getValue("histAtiv_" + atividade);
    if (histAtivAnt != null && histAtivAnt != "") {
        histInic = histInic + histAtivAnt;
    }
    form.setValue("histAtiv_" + atividade, histInic);

    // =============================================
    // HISTORICO GERAL (histGeral) com labels por data
    // =============================================
    var descricao = fnDescricaoAtividade(atividade);
    var histGeralAnt = form.getValue("histGeral");
    var dtUltimoHistorico_EN = form.getValue("dtUltimoHistorico_EN");
    var labelData = "";

    // Agrupar por data: se a data mudou, criar novo label
    if (dtAtual_EN == dtUltimoHistorico_EN) {
        // Mesma data: reutilizar label existente
        var posFimLabel = histGeralAnt.indexOf("</span><br>");
        if (posFimLabel != -1) {
            posFimLabel = posFimLabel + 11;
            labelData = histGeralAnt.substr(0, posFimLabel);
            histGeralAnt = histGeralAnt.substr(posFimLabel);
        } else {
            labelData = fnCriarLabelData(dtAtual);
            form.setValue("dtUltimoHistorico_EN", dtAtual_EN);
        }
    } else {
        // Nova data: criar novo label
        labelData = fnCriarLabelData(dtAtual);
        form.setValue("dtUltimoHistorico_EN", dtAtual_EN);
    }

    var histGeral = labelData
        + "<br><b>Atividade: " + descricao + "</b><br>"
        + dtAtual + " - " + hrAtual + " - " + nome;

    if (acao != null && acao != "") {
        histGeral = histGeral + " - " + acao;
    }
    if (observacao != null && observacao != "") {
        histGeral = histGeral + " - " + observacao;
    }

    histGeral = histGeral + "<br>" + histGeralAnt;
    form.setValue("histGeral", histGeral);
}

/**
 * Cria label Bootstrap com a data formatada.
 */
function fnCriarLabelData(data) {
    return '<br><span class="label label-primary" style="min-width:10%; min-height:auto; display:block; padding-top: 0.6em">'
        + data + '</span><br>';
}

/**
 * Retorna descricao da atividade pelo numero.
 * Ajuste conforme seu processo.
 */
function fnDescricaoAtividade(atividade) {
    // Mapeie as atividades do seu processo aqui
    if (atividade == ${ATIV_1}) return "1) ${DESC_ATIV_1}";
    if (atividade == ${ATIV_2}) return "2) ${DESC_ATIV_2}";
    // if (atividade == ${ATIV_3}) return "3) ${DESC_ATIV_3}";
    return "Atividade " + atividade;
}
