/**
 * TEMPLATE: widget-startprocess.js
 * =============================================
 * Widget que inicia processos via WCMAPI (SOAP WebService).
 *
 * PADRAO DE PRODUCAO (start_wf_igor, widget iniciar processo):
 * - Coletar dados de um formulario na widget
 * - Montar envelope XML para ECMWorkflowEngineService
 * - Chamar WCMAPI.Create() com o XML
 * - Extrair processInstanceId do retorno
 *
 * PRE-REQUISITO:
 * - Arquivo XML template em resources/js/xml/startProcess.xml
 * - Processo ja cadastrado no Fluig
 */

var ${NOME_WIDGET} = SuperWidget.extend({

    init: function() {
        // Inicializacao
    },

    bindings: {
        local: {
            'iniciar-processo': ['click_iniciarProcesso']
        }
    },

    iniciarProcesso: function(el, ev) {
        var that = this;
        var number = this.instanceId;

        // =============================================
        // COLETAR DADOS DO FORMULARIO DA WIDGET
        // =============================================
        var campo1 = $('#${CAMPO_1}_' + number).val();
        var campo2 = $('#${CAMPO_2}_' + number).val();

        // Validar campos obrigatorios
        if (!campo1 || campo1 === '') {
            FLUIGC.toast({
                title: 'Atencao',
                message: 'Preencha o campo obrigatorio',
                type: 'warning'
            });
            return;
        }

        // =============================================
        // CARREGAR TEMPLATE XML
        // =============================================
        var _xml = null;
        $.ajax({
            url: '/${NOME_WIDGET}/resources/js/xml/startProcess.xml',
            async: false,
            type: 'get',
            datatype: 'xml',
            success: function(xml) {
                _xml = $(xml);
            },
            error: function() {
                FLUIGC.toast({
                    message: 'Erro ao carregar template XML',
                    type: 'danger'
                });
            }
        });

        if (!_xml) return;

        // =============================================
        // PREENCHER DADOS NO XML
        // =============================================
        _xml.find("companyId").text(WCMAPI.tenantCode);
        _xml.find("username").text(WCMAPI.getUserLogin());
        _xml.find("password").text("${SENHA_WS}");
        _xml.find("processId").text("${CODIGO_PROCESSO}");
        _xml.find("choosedState").text("0");
        _xml.find("comments").text("Iniciado via widget");

        // Preencher campos do formulario do processo
        _xml.find("[name='${CAMPO_FORM_1}']").text(campo1);
        _xml.find("[name='${CAMPO_FORM_2}']").text(campo2);

        // =============================================
        // CHAMAR WEBSERVICE VIA WCMAPI
        // =============================================
        var loading = FLUIGC.loading('#' + that.DOM.id);
        loading.show();

        WCMAPI.Create({
            url: "/webdesk/ECMWorkflowEngineService?wsdl",
            contentType: "text/xml",
            dataType: "xml",
            data: _xml[0],
            success: function(data) {
                loading.hide();
                var processoCriado = $(data).find("iProcess").text();
                FLUIGC.toast({
                    title: 'Sucesso',
                    message: 'Processo ' + processoCriado + ' criado com sucesso',
                    type: 'success'
                });
                // Limpar formulario
                $('#${CAMPO_1}_' + number).val('');
                $('#${CAMPO_2}_' + number).val('');
            },
            error: function(err) {
                loading.hide();
                FLUIGC.toast({
                    title: 'Erro',
                    message: 'Falha ao iniciar processo',
                    type: 'danger'
                });
            }
        });
    }
});

// =============================================
// ALTERNATIVA: Iniciar processo via API REST
// (mais simples, nao precisa de XML)
// =============================================
// $.ajax({
//     type: 'POST',
//     url: '/api/public/2.0/workflow/startProcess',
//     contentType: 'application/json',
//     data: JSON.stringify({
//         processId: '${CODIGO_PROCESSO}',
//         activities: [{
//             activityId: 0,
//             colleagueIds: [WCMAPI.getUserLogin()]
//         }],
//         cardData: {
//             campo1: valor1,
//             campo2: valor2
//         },
//         comments: 'Iniciado via widget'
//     }),
//     success: function(data) {
//         console.log('Processo: ' + data.content.processInstanceId);
//     }
// });
