Built motion from commit c738b9ac.|2.6.25
[motion2.git] / server / components / export / pdf.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x1305=['createPdfFromHTML','catch','util','path','moment','pdfmake/src/printer','zip-dir','jsdom','window','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','update','map','tableHeader','pick','toString','value','fill','length','auto','body','concat','chunk','keys','forEach','push','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','header','pageBreak','margin','landscape','\x20/\x20','footer','Arial','black','Empty','Setting','split','then','splitSizePdf','range','num','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','sequelize','dirname','basename','.pdf','existsSync','join','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','all','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','AnalyticExtractedReport','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','info','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','%s\x20#%d','YYYY-MM-DD','center','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end'];(function(_0x1145c8,_0x4fed40){var _0x3aabd5=function(_0x56c985){while(--_0x56c985){_0x1145c8['push'](_0x1145c8['shift']());}};_0x3aabd5(++_0x4fed40);}(_0x1305,0x176));var _0x5130=function(_0x258d72,_0x7b072a){_0x258d72=_0x258d72-0x0;var _0x4389b2=_0x1305[_0x258d72];return _0x4389b2;};'use strict';var _=require('lodash');var fs=require('fs');var util=require(_0x5130('0x0'));var path=require(_0x5130('0x1'));var moment=require(_0x5130('0x2'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x5130('0x3'));var zipdir=require(_0x5130('0x4'));var rimraf=require('rimraf');var JSDOM=require(_0x5130('0x5'))['JSDOM'];var window=new JSDOM('')[_0x5130('0x6')];var BPromise=require('bluebird');var db=require('../../mysqldb')['db'];var dbH=require(_0x5130('0x7'))[_0x5130('0x8')];var logger=require(_0x5130('0x9'))(_0x5130('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0x5130('0xb')][0x2]);var QUERY=process[_0x5130('0xb')][0x3];var PATH=process[_0x5130('0xb')][0x4];var NAME=process['argv'][0x5];var FORMAT=_0x5130('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x19e512,_0x3a6bf9){var _0x168c69={'status':_0x19e512};var _0x1b6d55={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x3a6bf9){_0x168c69[_0x5130('0xd')]=_0x3a6bf9;}return db['AnalyticExtractedReport'][_0x5130('0xe')](_0x168c69,_0x1b6d55);}function getHeaders(_0x9adc15){return _[_0x5130('0xf')](_0x9adc15,function(_0x33e3e8){return{'text':_0x33e3e8,'style':_0x5130('0x10')};});}function getRows(_0x528535,_0x1ae87a){return _['map'](_0x1ae87a,function(_0x12781b){return _(_0x12781b)[_0x5130('0x11')](_0x528535)[_0x5130('0xf')](function(_0x42cdd2){return _0x42cdd2?_[_0x5130('0x12')](_0x42cdd2):'';})[_0x5130('0x13')]();});}function createTable(_0x3c47e,_0x26d7bb){var _0x4e6efd={'widths':_[_0x5130('0x14')](Array(_0x3c47e[_0x5130('0x15')]),0x91),'heights':function(_0x1f2f42){return _0x1f2f42===0x0?_0x5130('0x16'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x38655b=getHeaders(_0x3c47e);_0x4e6efd['body']['push'](_0x38655b);var _0xf22027=getRows(_0x3c47e,_0x26d7bb);_0x4e6efd['body']=_0x4e6efd[_0x5130('0x17')][_0x5130('0x18')](_0xf22027);return _0x4e6efd;}function createTables(_0xed380d){var _0x2a90b5=[];var _0x43c7d9=_[_0x5130('0x19')](Object[_0x5130('0x1a')](_0xed380d[0x0]),0x5);_0x43c7d9[_0x5130('0x1b')](function(_0x151557){_0x2a90b5[_0x5130('0x1c')](createTable(_0x151557,_0xed380d));});return _0x2a90b5;}function getPDFDocDefinition(_0x59aa67){var _0x30d8ff=util[_0x5130('0x1d')](_0x5130('0x1e'),NAME,EXTRACTED_REPORT[_0x5130('0x1f')],moment(EXTRACTED_REPORT[_0x5130('0x20')])[_0x5130('0x1d')](FORMAT),moment(EXTRACTED_REPORT[_0x5130('0x21')])[_0x5130('0x1d')](FORMAT));var _0x16e638=[];for(var _0xf5c98b=0x0;_0xf5c98b<_0x59aa67[_0x5130('0x15')];_0xf5c98b++){var _0x571ee6=[];if(_0xf5c98b===0x0){_0x571ee6[_0x5130('0x1c')]({'text':_0x30d8ff,'style':_0x5130('0x22')});}var _0x31b05d={'table':_0x59aa67[_0xf5c98b]};if(_0xf5c98b>0x0){_0x31b05d[_0x5130('0x23')]='before';_0x31b05d[_0x5130('0x24')]=[0x0,0x46,0x0,0x0];}_0x571ee6['push'](_0x31b05d);_0x16e638['push'](_0x571ee6);}return{'pageSize':'A4','pageOrientation':_0x5130('0x25'),'content':_0x16e638,'footer':function(_0xfc855e,_0x40cc32){return{'text':_0xfc855e['toString']()+_0x5130('0x26')+_0x40cc32,'style':_0x5130('0x27')};},'defaultStyle':{'font':_0x5130('0x28')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x5130('0x29')},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x4f520a){var _0x139e16=0x1388;var _0x2fe059;if(!_0x4f520a[0x0]['num']){return analyticExtractedReport(_0x5130('0x2a'));}return db[_0x5130('0x2b')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x5130('0x2c'),'splitSizePdf']})[_0x5130('0x2d')](function(_0x233fa8){if(_0x233fa8){_0x2fe059=_0x233fa8;_0x139e16=_0x2fe059[_0x5130('0x2e')]||0x3e8;}})[_0x5130('0x2d')](function(){var _0x2985f9=[];var _0x438d1b=0x0;if(_0x2fe059[_0x5130('0x2c')]){if(_0x4f520a&&_0x4f520a[_0x5130('0x15')]){var _0x44801e=_[_0x5130('0x2f')](_0x4f520a[0x0][_0x5130('0x30')]/_0x139e16);var _0x17d1da=Number['isInteger'](_0x4f520a[0x0][_0x5130('0x30')]/_0x139e16)?_0x4f520a[0x0][_0x5130('0x30')]%_0x139e16:0x0;_0x44801e[_0x5130('0x1b')](function(_0x53c028){if(_0x53c028>0x0){_0x438d1b+=_0x139e16;}_0x2985f9['push'](dbH['sequelize'][_0x5130('0x31')](util[_0x5130('0x1d')](_0x5130('0x32'),QUERY,_0x139e16,_0x438d1b),{'type':dbH['sequelize'][_0x5130('0x33')][_0x5130('0x34')]}));});if(_0x17d1da>0x0){_0x438d1b+=_0x139e16;_0x2985f9[_0x5130('0x1c')](dbH[_0x5130('0x35')]['query'](util['format'](_0x5130('0x32'),QUERY,_0x17d1da,_0x438d1b),{'type':dbH[_0x5130('0x35')][_0x5130('0x33')][_0x5130('0x34')]}));}}}else{_0x2985f9[_0x5130('0x1c')](dbH[_0x5130('0x35')][_0x5130('0x31')](QUERY,{'type':dbH[_0x5130('0x35')][_0x5130('0x33')]['SELECT']}));}var _0x3af74c=path[_0x5130('0x36')](PATH);var _0x23d23c=path[_0x5130('0x37')](PATH,_0x5130('0x38'));var _0x13cfcf=_0x2fe059[_0x5130('0x2c')]&&_0x2985f9[_0x5130('0x15')]>0x1;var _0x218623=[];if(!fs[_0x5130('0x39')](path['join'](_0x3af74c,_0x23d23c))&&_0x13cfcf){fs['mkdirSync'](path[_0x5130('0x3a')](_0x3af74c,_0x23d23c));}return BPromise['each'](_0x2985f9,function(_0x13cc8a){_0x218623[_0x5130('0x1c')](_0x13cc8a);})[_0x5130('0x2d')](function(){var _0x38adcb=[];for(var _0x5992b3=0x0;_0x5992b3<_0x218623[_0x5130('0x15')];_0x5992b3+=0x1){var _0x4fddde=_0x218623[_0x5992b3];var _0x2f9244=createTables(_[_0x5130('0x3b')](_0x4fddde));var _0x35c678;var _0x586bcc=getPDFDocDefinition(_0x2f9244);var _0x2b724a=getPDFPrinter();var _0x2d1578=_0x2b724a[_0x5130('0x3c')](_0x586bcc);if(_0x13cfcf){_0x35c678=path[_0x5130('0x3a')](_0x3af74c,_0x23d23c,util['format'](_0x5130('0x3d'),_0x23d23c,_0x5992b3,_0x5130('0x3e')));}else{_0x35c678=path[_0x5130('0x3a')](_0x3af74c,util[_0x5130('0x1d')](_0x5130('0x3f'),_0x23d23c,_0x5130('0x3e')));}_0x38adcb[_0x5130('0x1c')](writePDFDocument(_0x2d1578,_0x35c678));}return Promise[_0x5130('0x40')](_0x38adcb);})[_0x5130('0x2d')](function(){if(_0x13cfcf){return new Promise(function(_0x571df4){zipdir(path[_0x5130('0x3a')](_0x3af74c,_0x23d23c),{'saveTo':path['join'](_0x3af74c,util[_0x5130('0x1d')](_0x5130('0x3f'),_0x23d23c,_0x5130('0x41')))},function(){rimraf(path[_0x5130('0x3a')](_0x3af74c,_0x23d23c),function(){});_0x571df4(_0x5130('0x42'));});});}})['then'](function(){if(!_0x13cfcf)return;rimraf(path[_0x5130('0x3a')](_0x3af74c,_0x23d23c),function(){});})[_0x5130('0x2d')](function(){logger['info'](util[_0x5130('0x1d')](_0x5130('0x43'),EXTRACTED_REPORT_ID,_0x5130('0x44')));return analyticExtractedReport(_0x5130('0x45'),_0x13cfcf?util[_0x5130('0x1d')](_0x5130('0x3f'),_0x23d23c,_0x13cfcf?_0x5130('0x41'):_0x5130('0x3e')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x5130('0x1d')](_0x5130('0x46'),EXTRACTED_REPORT_ID,'PDF'));return db[_0x5130('0x47')][_0x5130('0x48')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x5130('0x2d')](function(_0x38adb3){EXTRACTED_REPORT=_0x38adb3;return dbH['sequelize'][_0x5130('0x31')](util[_0x5130('0x1d')](_0x5130('0x49'),QUERY),{'type':dbH[_0x5130('0x35')][_0x5130('0x33')]['SELECT']});})['then'](extractReport)['catch'](function(_0xcdb430){logger[_0x5130('0x4a')](util[_0x5130('0x1d')](_0x5130('0x4b'),EXTRACTED_REPORT_ID,'PDF'),util[_0x5130('0x4c')](_0xcdb430,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x5130('0x4d')](function(){process[_0x5130('0x4e')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x883a17=new PdfPrinter({'Arial':{'normal':__dirname+_0x5130('0x4f'),'bold':__dirname+_0x5130('0x50'),'italics':__dirname+_0x5130('0x51'),'bolditalics':__dirname+'/fonts/arial-bold-italic.ttf'}});return _0x883a17;}function getPDFDocDefinitionFromHTML(_0x19e94f,_0x300346){var _0xebb67e=util[_0x5130('0x1d')](_0x5130('0x52'),_0x300346['channel'],_0x300346['interactionId']);var _0xb93a27=moment()[_0x5130('0x1d')](_0x5130('0x53'))[_0x5130('0x12')]();var _0x23e949=htmlToPdfmake(_0x19e94f,{'window':window,'tableAutoSize':!![]});return{'content':[_0x23e949],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x5130('0x54'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x5130('0x54'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x5130('0x54')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':_0x5130('0x22')}];},'footer':function(_0x10212a,_0x19552a){return[{'text':util[_0x5130('0x1d')](_0x5130('0x55'),_0xebb67e,_0x10212a,_0x19552a,_0xb93a27),'style':_0x5130('0x27')}];}};}function writePDFDocument(_0x384362,_0x517ab7){return new Promise(function(_0x212848,_0x2ba61d){var _0x99b367=_0x384362[_0x5130('0x56')](fs[_0x5130('0x57')](_0x517ab7));_0x99b367['on']('finish',function(){_0x212848(_0x5130('0x58'));});_0x99b367['on'](_0x5130('0x59'),function(_0x3b6172){_0x2ba61d(_0x3b6172);});_0x384362[_0x5130('0x5a')]();});}exports[_0x5130('0x5b')]=function(_0x38f8ff,_0x922e79){var _0x49bc48=getPDFPrinter();var _0x41e44d=getPDFDocDefinitionFromHTML(_0x38f8ff,_0x922e79);var _0x265cc1=_0x49bc48[_0x5130('0x3c')](_0x41e44d);return writePDFDocument(_0x265cc1,_0x922e79['path'])[_0x5130('0x5c')](function(_0x3337d7){throw _0x3337d7;});};