/**
 * afterTaskComplete.js — Exemplo: Workflow Aprovacao de Compras
 * 
 * Executa apos o usuario completar (movimentar) uma tarefa.
 * Uso: gravar quem completou, quando, dados de aprovacao.
 * 
 * API:
 *   hAPI.setCardValue("campo", "valor") / hAPI.getCardValue("campo")
 *   getValue("WKNumState") - atividade atual
 *   getValue("WKUser") - login do usuario
 * 
 * @param {string} colleagueId - Login de quem completou a tarefa
 * @param {number} nextSequenceId - Proxima atividade no fluxo
 * @param {java.util.List} userList - Lista de usuarios para a proxima atividade
 */
function afterTaskComplete(colleagueId, nextSequenceId, userList) {
    var nrAtividade = getValue("WKNumState");

    // Ignorar movimentacoes automaticas do sistema
    if (colleagueId == "System:Auto") {
        return;
    }

    // Gravar quem completou e quando (para span de historico visual)
    hAPI.setCardValue("vUserSpan_" + nrAtividade, colleagueId);
    hAPI.setCardValue("vDateSpan_" + nrAtividade, fnBuscarDataHora("data"));

    log.info("afterTaskComplete - Atividade " + nrAtividade +
        " completada por " + colleagueId +
        " -> proxima: " + nextSequenceId);

    // ============================================
    // ATIVIDADE 4 -> 5 (Solicitante -> Gestor)
    // ============================================
    if (parseInt(nrAtividade) == 4) {
        hAPI.setCardValue("situacaoSolic", "Aguardando Aprovacao");
    }

    // ============================================
    // ATIVIDADE 5 (Gestor aprova/reprova)
    // ============================================
    if (parseInt(nrAtividade) == 5) {
        var decisao = hAPI.getCardValue("aprovacao_gestor");

        hAPI.setCardValue("loginAprovador", colleagueId);
        hAPI.setCardValue("dataAprovacao", fnBuscarDataHora("data"));

        if (decisao == "S") {
            hAPI.setCardValue("situacaoSolic", "Aprovado");
        } else {
            hAPI.setCardValue("situacaoSolic", "Reprovado");
        }
    }
}

/**
 * Helper: busca data ou hora atual do servidor
 */
function fnBuscarDataHora(tipo) {
    var agora = new java.util.Date();
    var formato;
    if (tipo == "data") {
        formato = new java.text.SimpleDateFormat("dd/MM/yyyy");
    } else {
        formato = new java.text.SimpleDateFormat("HH:mm");
    }
    return formato.format(agora);
}
