Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var wi_workflow = SuperWidget.extend({
- instanceId: null,
- fileBase64: null,
- folderId: null,
- formId: null,
- loading: false,
- folderName: 'Reembolso Assistencial',
- folderFound: false,
- groupFound: false,
- formFound: false,
- formFolderId: null,
- anexosPromise: [],
- soapEnvelop: null,
- startingGroups: [{
- code : "Reembolso Assistencial - Setor",
- description : "Reembolso Assistencial - Setor",
- isInternal : "false"
- },
- {
- code : "Reembolso Assistencial - Comissão",
- description : "Reembolso Assistencial - Comissão",
- isInternal : "false"
- }],
- forms : [ {
- 'name' : 'form_reembolso_assistencial.html',
- 'dsFilePath' : '/reembolsoAssistencialResources/forms/form_reembolso_assistencial/form_reembolso_assistencial.html',
- 'anexos': [
- // {
- // 'name' : 'formularioReembolso.pdf',
- // 'dsFilePath' : '/reembolsoAssistencialResources/forms/form_reembolso_assistencial/formularioReembolso.pdf'
- // },
- {
- 'name' : 'js/FileSaver.rs',
- 'dsFilePath' : '/reembolsoAssistencialResources/forms/form_reembolso_assistencial/js/FileSaver.js'
- },
- {
- 'name' : 'js/form_reembolso_assistencial.js',
- 'dsFilePath' : '/reembolsoAssistencialResources/forms/form_reembolso_assistencial/js/form_reembolso_assistencial.js'
- },
- {
- 'name' : 'js/minipdf.js',
- 'dsFilePath' : '/reembolsoAssistencialResources/forms/form_reembolso_assistencial/js/minipdf.js'
- },
- {
- 'name' : 'js/pako.js',
- 'dsFilePath' : '/reembolsoAssistencialResources/forms/form_reembolso_assistencial/js/pako.js'
- },
- {
- 'name' : 'js/pdf.worker.js',
- 'dsFilePath' : '/reembolsoAssistencialResources/forms/form_reembolso_assistencial/js/pdf.worker.js'
- },
- {
- 'name' : 'js/pdfform.js',
- 'dsFilePath' : '/reembolsoAssistencialResources/forms/form_reembolso_assistencial/js/pdfform.js'
- },
- {
- 'name' : 'events/displayFields.js',
- 'dsFilePath' : '/reembolsoAssistencialResources/forms/form_reembolso_assistencial/events/displayFields.js'
- },
- {
- 'name' : 'events/validateForm.js',
- 'dsFilePath' : '/reembolsoAssistencialResources/forms/form_reembolso_assistencial/events/validateForm.js'
- }
- ]
- },
- {
- 'name' : 'form_reembolso_assistencial_anexo.html',
- 'dsFilePath' : '/reembolsoAssistencialResources/forms/form_reembolso_assistencial_anexo/form_reembolso_assistencial_anexo.html',
- 'anexos': [{
- 'name' : 'events/displayFields.js',
- 'dsFilePath' : '/reembolsoAssistencialResources/forms/form_reembolso_assistencial_anexo/events/displayFields.js'
- }]
- }],
- init: function() {
- var that = this;
- var tpl = 'template-container-install-process';
- var tplBtn = 'template-btn-install';
- $('#up-area-' + that.instanceId).append(that.processTemplate(that.templates[tpl], {}));
- Promise.all([
- wi_workflow.searchGroup(),
- wi_workflow.searchFolder(),
- wi_workflow.getSoapEnvelop()]).then((result) => {
- wi_workflow.searchForm();
- if(wi_workflow.groupFound && wi_workflow.folderFound){
- tpl = 'template-container-process-installed';
- tplBtn = 'template-btn-installed';
- $("#botao_saveToken_" + that.instanceId).show();
- }
- $('#up-btn-area-' + that.instanceId).html(that.processTemplate(that.templates[tplBtn], {}));
- })
- },
- processTemplate: function(template, data) {
- var html = Mustache.render(template, data);
- return html;
- },
- bindings: {
- local: {
- 'install': ['click_createGroupAndFolder']
- }
- },
- /************************************/
- /******* CRIA GRUPO E PASTA *********/
- /************************************/
- /**
- * O grupo é criado pois uma atividade no workflow depende desse grupo
- * A pasta é criada para ser a pasta do formulário
- */
- createGroupAndFolder: function(){
- var that = this;
- this.loading = FLUIGC.loading('#uploadprocess_' + this.instanceId);
- this.loading.show();
- this.createGroupService(function(err, data){
- if(!err){
- $('#up-group-icon').removeClass('fluigicon-remove-sign').addClass('fluigicon-check-circle-on');
- //$('#up-area-' + that.instanceId).html(that.processTemplate(that.templates["template-container-process-installed"], {}));
- }
- });
- if(!wi_workflow.folderFound){
- that.createFolderService(function(err, data){
- if(!err){
- $('#up-folder-icon').removeClass('fluigicon-remove-sign').addClass('fluigicon-check-circle-on');
- wi_workflow.folderFound = true;
- that.folderId = data.content.id;
- //pensar em outra forma de criar o fomulario que nao dependa da criacao da pasta
- //that.getCreateCardXML();
- }
- });
- }
- if(!wi_workflow.formFound){
- if(!wi_workflow.formInstalled){
- for(var i = 0; i < wi_workflow.forms.length; j++){
- wi_workflow.installForm(wi_workflow.forms[j]);
- }
- }
- }
- // if(!that.checkAjax() /* funcao que procura se os forms estao instalados */){
- //
- // }
- $('#up-btn-area-' + that.instanceId).html(that.processTemplate(that.templates['template-btn-installed'], {}));
- },
- /*********** CREATE CARD: WS para criar o formulario ************/
- /**
- * Arquivo XML(ECMCardIndexService_createCard.xml) do WebService
- */
- getCreateCardXML: function(){
- var that = this;
- $.ajax({
- url: '/reembolso_install_workflow/resources/process/ECMCardIndexService_createCard.xml',
- type: 'GET',
- dataType: 'xml',
- headers:{'Content-Type':'text/xml','X-Requested-With':'XMLHttpRequest'},
- processData: false,
- success: function(data){
- that.extractFormBase64($(data));
- }
- });
- },
- /**
- * WebService para criar um formulário no fluig
- */
- uploadFormWS: function(xml){
- var that = this;
- WCMAPI.Create({
- async: false,
- url: WCMAPI.serverURL + '/webdesk/ECMCardIndexService?wsdl',
- contentType: 'text/xml; charset=utf-8',
- dataType: 'xml',
- data: xml[0],
- success: function(data) {
- if($(data.getElementsByTagName('documentId')[0])){
- // o response do WS é o id do formulário.
- var formId = $(data.getElementsByTagName('documentId')[0]).text();
- if(formId){
- $('#up-form-icon').removeClass('fluigicon-remove-sign').addClass('fluigicon-check-circle-on');
- that.formId = formId;
- that.getImportProcessXML();
- }
- }
- },
- error: function(jqXHR, textStatus, errorThrown) {
- }
- });
- },
- /********** IMPORT PROCESS **********/
- /**
- * Arquivo XML(ECMWorkflowEngineService_importProcess.xml) do WebService
- */
- getImportProcessXML: function(){
- var that = this;
- $.ajax({
- url: '/wi_process/resources/process/ECMWorkflowEngineService_importProcess.xml',
- type: 'GET',
- dataType: 'xml',
- headers:{'Content-Type':'text/xml','X-Requested-With':'XMLHttpRequest'},
- processData: false,
- success: function(ws){
- that.buildProcessXML($(ws));
- }
- });
- },
- /**
- * Monta o XML do WS com o XML(em Base64) do processo em anexo
- */
- buildProcessXML: function(ws){
- var that = this;
- $.ajax({
- url: '/wi_process/resources/process/processo-simples.xml',
- type: 'GET',
- dataType: 'binary',
- contentType: "charset=utf-8",
- headers:{'Content-Type':'text/html','X-Requested-With':'XMLHttpRequest'},
- processData: false,
- success: function(xml){
- var reader = new window.FileReader();
- reader.readAsDataURL(xml);
- reader.onloadend = function () {
- ws.find('username').text(WCMAPI.userLogin);
- ws.find('companyId').text(WCMAPI.getTenantId());
- ws.find('processId').text('processo-simples');
- ws.find('newProcess').text('true');
- ws.find('overWrite').text('true');
- ws.find('colleagueId').text(WCMAPI.userLogin);
- // anexa o worflow no XML do WS
- var attachmentItem = '<item>\
- <attach>true</attach>\
- <fileName>processo-simples.xml</fileName>\
- <filecontent>' + reader.result.split(';base64,')[1] + '</filecontent>\
- </item>';
- ws.find('attachments').append(attachmentItem);
- that.uploadProcessWS(ws);
- }
- }, error: function (xhr, ajaxOptions, thrownError) {
- }
- });
- },
- /**
- * WebService para criar um processo no fluig
- */
- uploadProcessWS: function(ws){
- var that = this;
- WCMAPI.Create({
- async: false,
- url: WCMAPI.serverURL + '/webdesk/ECMWorkflowEngineService?wsdl',
- contentType: 'text/xml; charset=utf-8',
- dataType: 'xml',
- data: ws[0],
- success: function(data) {
- if(data){
- that.updateProcess();
- }
- },
- error: function(jqXHR, textStatus, errorThrown) {
- }
- });
- },
- /**
- * Após criar o processo, é necessário editar o processo com os dados corretos;
- */
- updateProcess: function(){
- var that = this;
- // coloca o processo em modo de edição. No callback, faz a atualização como id do formulario correto
- this.processEditModeService(function(){
- $.ajax({
- url: '/wi_process/resources/process/processo-simples.xml',
- type: 'GET',
- dataType: 'xml',
- headers:{'Content-Type':'text/xml','X-Requested-With':'XMLHttpRequest'},
- processData: false,
- success: function(xml){
- var wf = $(xml);
- wf.find('formId').text(that.formId);
- wf.find('companyId').text(WCMAPI.getTenantId());
- wf.find('version').text('1');
- // atualiza processo pela API rest
- var x = (new XMLSerializer()).serializeToString(xml);
- that.saveProcessService(x, function(error, data){
- if(!error){
- // liberar o processo para uso
- that.releaseProcessService(function(err, data){
- if(!err){
- FLUIGC.toast({
- title: '',
- message: '${i18n.getTranslation("msg.alert.items.created")}',
- type: 'success'
- });
- $('#up-process-icon').removeClass('fluigicon-remove-sign').addClass('fluigicon-check-circle-on');
- $('#up-btn-area-' + that.instanceId).html(that.processTemplate(that.templates['template-btn-installed'], {}));
- that.loading.hide();
- } else{
- that.loading.hide();
- }
- });
- }
- });
- }, error: function (xhr, ajaxOptions, thrownError) {
- }
- });
- });
- },
- /**
- * API Rest para colocar o processo em mode de edição
- */
- processEditModeService: function(cb) {
- var options, url = '/ecm/api/rest/ecm/workflowModeling/newversion?processId=processo-simples';
- options = {
- url: url,
- contentType: 'application/json',
- dataType: 'json',
- loading: false
- };
- FLUIGC.ajax(options, cb);
- },
- /**
- * API Rest para salvar processo
- */
- saveProcessService: function(xml, cb) {
- var options, url = '/ecm/api/rest/ecm/workflowModeling/saveProcess';
- var params = {
- processDiagramXML: xml
- };
- options = {
- url: url,
- contentType: 'application/json',
- dataType: 'json',
- data: xml,
- type: 'POST',
- loading: false
- };
- FLUIGC.ajax(options, cb);
- },
- /**
- * API Rest para liberar o processo
- */
- releaseProcessService: function(cb){
- var options, url = '/ecm/api/rest/ecm/workflowModeling/releaseprocess?processId=processo-simples';
- options = {
- url: url,
- contentType: 'application/json',
- dataType: 'json',
- loading: false
- };
- FLUIGC.ajax(options, cb);
- },
- /**
- * API Rest para criar a pasta para o formulario
- */
- createFolderService: function(cb){
- var that = this;
- var options, url = '/api/public/ecm/document/createFolder';
- var params = {
- description: that.folderName,
- parentId: '0'
- };
- options = {
- url: url,
- contentType: 'application/json',
- dataType: 'json',
- data: JSON.stringify(params),
- type: 'POST',
- loading: false
- };
- FLUIGC.ajax(options, cb);
- },
- /**
- * API Rest para criar o grupo
- */
- createGroupService: function(cb){
- var options, url = '/api/public/2.0/groups/create';
- options = {
- url: url,
- contentType: 'application/json',
- dataType: 'json',
- data: JSON.stringify(wi_workflow.startingGroups),
- type: 'POST',
- loading: false
- };
- for (var j = 0; j < params.length; j++) {
- options.data = JSON.stringify(params[j]);
- FLUIGC.ajax(options, cb);
- }
- },
- searchGroup: function(){
- return new Promise(function(resolve, reject) {
- parent.WCMAPI.Create({
- url: parent.WCMAPI.getServerURL() + '/api/public/wcm/group',
- contentType: 'application/json',
- dataType: 'json',
- type: 'GET',
- success: function(data, status, jqXHR) {
- wi_workflow.groupFound = false;
- if(data == undefined || data == null ||
- data.length == 0){
- resolve(true);
- return;
- }
- for (var j = 0; j < wi_workflow.startingGroups.length; j++) {
- wi_workflow.groupFound = false;
- for (var i = 0; i < data.length; i++) {
- if(data[i] == wi_workflow.startingGroups[j].code){
- wi_workflow.groupFound = true;
- break;
- }
- }
- if(!wi_workflow.groupFound){
- // Encontrou 1 grupo obrigatorio que nao esta cadastrado
- break;
- }
- }
- if(wi_workflow.groupFound){
- $('#up-group-icon').removeClass('fluigicon-remove-sign').addClass('fluigicon-check-circle-on');
- }
- resolve(true);
- },
- error: function(jqXHR, status, errorThrown){
- console.log(errorThrown);
- }
- });
- });
- },
- /**
- * Api rest para pesquisar pasta
- */
- searchFolder: function(){
- return new Promise(function(resolve, reject) {
- parent.WCMAPI.Create({
- url: parent.WCMAPI.getServerURL() + '/api/public/ecm/document/listDocument/0',
- contentType: 'application/json',
- dataType: 'json',
- type: 'GET',
- success: function(data, status, jqXHR) {
- if(data == undefined || data == null ||
- data.content == undefined || data.content == null ||
- data.content.length == 0){
- resolve(true);
- return;
- }
- for (var i = 0; i < data.content.length; i++) {
- if(data.content[i].description == wi_workflow.folderName){
- wi_workflow.formFolderId = data.content[i].id;
- wi_workflow.folderFound = true;
- $('#up-folder-icon').removeClass('fluigicon-remove-sign').addClass('fluigicon-check-circle-on');
- break;
- }
- }
- resolve(true);
- },
- error: function(jqXHR, status, errorThrown){
- console.log(errorThrown);
- }
- });
- });
- },
- searchForm: function(){
- var formInstalled = false;
- parent.WCMAPI.Create({
- url: parent.WCMAPI.getServerURL() + '/api/public/ecm/document/listDocument/' + wi_workflow.formFolderId,
- contentType: 'application/json',
- dataType: 'json',
- type: 'GET',
- success: function(data) {
- for(var j = 0; j < wi_workflow.forms.length; j++){
- wi_workflow.formInstalled = false;
- for (var i = 0; i < data.content[i].length; i++) {
- if(data.content[i].phisicalFile == wi_workflow.forms[j].name){
- wi_workflow.formInstalled = true;
- break;
- }
- }
- }
- },
- error: function(jqXHR, status, errorThrown){
- console.log(errorThrown);
- }
- });
- },
- installForm: function(form){
- console.log("Precisa instalar: " + form.name);
- wi_workflow.soapEnvelop.find('username').text(WCMAPI.userLogin);
- wi_workflow.soapEnvelop.find('companyId').text(WCMAPI.getTenantId());
- wi_workflow.soapEnvelop.find('parentDocumentId').text(this.formFolderId);
- wi_workflow.soapEnvelop.find('publisherId').text(WCMAPI.userLogin);
- wi_workflow.anexosPromise.push(wi_workflow.montaPromiseAnexo(form.name, true, form.dsFilePath));
- for(var j = 0; j < form.anexos.length; j++){
- wi_workflow.anexosPromise.push(wi_workflow.montaPromiseAnexo(form.anexos[j].name, false, form.anexos[j].dsFilePath));
- }
- Promise.all(wi_workflow.anexosPromise).then((result) => {
- wi_workflow.uploadFormWS(wi_workflow.soapEnvelop);
- })
- },
- montaPromiseAnexo: function(fileName, filePrincipal, fileUrl){
- console.log("URL da Promise: " + fileUrl);
- return new Promise(function(resolve, reject) {
- let xhr = new XMLHttpRequest();
- xhr.open("GET", fileUrl, true);
- xhr.responseType = 'blob';
- xhr.onload = function() {
- if (xhr.status >= 200 && xhr.status < 300) {
- console.log("Chegou aqui", this.response);
- blob = this.response;
- var reader = new window.FileReader();
- reader.readAsDataURL(blob);
- reader.onloadend = function () {
- console.log(reader.result.split(';base64,')[1]);
- wi_workflow.addToSoapEnvelop(fileName, filePrincipal, reader.result.split(';base64,')[1]);
- resolve(true);
- }
- } else {
- reject(xhr.statusText);
- resolve(false);
- }
- };
- xhr.onerror = () => {
- console.log(xhr.statusText);
- reject(xhr.statusText);
- };
- xhr.send();
- });
- },
- /**
- * Monta o XML do WS(ECMCardIndexService_createCard.xml) com o HTML convertido para Base64 em anexo
- */
- addToSoapEnvelop: function(fileName, filePrincipal, fileData){
- var attachmentItem = '<item><attach>true</attach><fileName>' + fileName + '</fileName><filecontent>' + fileData + '</filecontent><principal>' + filePrincipal + '</principal></item>';
- wi_workflow.soapEnvelop.find('Attachments').append(attachmentItem);
- },
- getSoapEnvelop: function(){
- return new Promise(function(resolve, reject) {
- $.ajax({
- url : "/reembolso_install_workflow/resources/process/ECMCardIndexService_createCard.xml",
- type : "GET",
- datatype : "xml",
- headers : {
- 'Content-Type' : 'text/xml',
- 'X-Requested-With' : 'XMLHttpRequest'
- },
- processData : false,
- success : function(xml) {
- wi_workflow.soapEnvelop = $(xml);
- resolve(true);
- },
- error: function(jqXHR, textStatus, errorThrown){
- reject(textStatus);
- resolve(false);
- }
- })
- });
- }
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement