/**
 * TEMPLATE: afterProcessCreate-base.js
 * =============================================
 * Evento de WORKFLOW executado quando um novo
 * processo e criado. Grava dados iniciais.
 *
 * PADRAO DE PRODUCAO (VIPal, BOMAG):
 * 1. Gravar numero da solicitacao
 * 2. Gravar data/hora de abertura (BR e EN)
 * 3. Definir situacao inicial "Aberto"
 * 4. Enviar email de notificacao (opcional)
 */

function afterProcessCreate(processId) {

    var nrSolic = processId.toString();
    var WKUser = getValue("WKUser");

    log.info("=== ${COD_PROCESSO} afterProcessCreate - processId: " + nrSolic);

    // =============================================
    // GRAVAR DADOS INICIAIS
    // =============================================
    hAPI.setCardValue("nrSolic", nrSolic);
    hAPI.setCardValue("situacaoSolic", "Aberto");

    // Data BR (dd/mm/yyyy) e EN (yyyy-mm-dd)
    var dataBR = fnBuscarDataHora("data");
    var partes = dataBR.split("/");
    var dataEN = partes[2] + "-" + partes[1] + "-" + partes[0];

    hAPI.setCardValue("dtAberturaSolic", dataBR);
    hAPI.setCardValue("dtAberturaSolic_EN", dataEN);
    hAPI.setCardValue("hrAberturaSolic", fnBuscarDataHora("hora"));

    // =============================================
    // NOTIFICACAO POR EMAIL (opcional)
    // Descomente se precisar notificar alguem na abertura
    // =============================================
    // try {
    //     var url = fluigAPI.getPageService().getServerURL();
    //     var parametros = new java.util.HashMap();
    //     parametros.put("processo", nrSolic);
    //     parametros.put("solicitante", fnBuscarColleague(WKUser, "colleagueName"));
    //     parametros.put("subject", "${TITULO_PROCESSO} #" + nrSolic);
    //     parametros.put("tituloEmail", "Nova ${TITULO_PROCESSO}");
    //     parametros.put("link", '<a href="' + url + '/portal/p/1/pageworkflowview?app_ecm_workflowview_detailsProcessInstanceID=' + nrSolic + '">' + nrSolic + '</a>');
    //
    //     var destinatarios = new java.util.ArrayList();
    //     destinatarios.add("${LOGIN_DESTINATARIO}");
    //
    //     notifier.notify(WKUser, "${TEMPLATE_EMAIL}", parametros, destinatarios, "text/html");
    //     log.info("=== Email enviado com sucesso");
    // } catch (e) {
    //     log.error("=== Erro ao enviar email: " + e.message);
    // }
}

// =============================================
// FUNCOES HELPER
// =============================================

function fnBuscarDataHora(tipo) {
    var fullDate = new java.util.Date();
    var sdf;
    if (tipo == "data") {
        sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");
    } else {
        sdf = new java.text.SimpleDateFormat("HH:mm");
    }
    return sdf.format(fullDate);
}

function fnBuscarColleague(login, campo) {
    var c1 = DatasetFactory.createConstraint(
        "colleaguePK.colleagueId", login, login, ConstraintType.MUST);
    var ds = DatasetFactory.getDataset("colleague", null, new Array(c1), null);
    if (ds.rowsCount > 0) {
        return ds.getValue(0, campo);
    }
    return "";
}
