Built motion from commit 538092ac.|2.6.10
[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 _0xab95=['jsdom','JSDOM','../../mysqldb','dbH','../../config/logger','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','AnalyticExtractedReport','map','tableHeader','toString','value','length','auto','body','push','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','header','pageBreak','before','margin','\x20/\x20','footer','Arial','black','right','num','Empty','find','split','then','splitSizePdf','range','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','dirname','basename','.pdf','join','mkdirSync','each','flatten','%s%d.%s','pdf','%s.%s','all','zip','zip\x20finished','info','Completed','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','inspect','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','center','pipe','createWriteStream','finish','error','end','createPdfKitDocument','lodash','util','path','moment','zip-dir','rimraf'];(function(_0x2e062f,_0x4d276d){var _0x257b74=function(_0x4986ed){while(--_0x4986ed){_0x2e062f['push'](_0x2e062f['shift']());}};_0x257b74(++_0x4d276d);}(_0xab95,0x152));var _0x5ab9=function(_0x419384,_0x807cff){_0x419384=_0x419384-0x0;var _0x4aa551=_0xab95[_0x419384];return _0x4aa551;};'use strict';var _=require(_0x5ab9('0x0'));var fs=require('fs');var util=require(_0x5ab9('0x1'));var path=require(_0x5ab9('0x2'));var moment=require(_0x5ab9('0x3'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require('pdfmake/src/printer');var zipdir=require(_0x5ab9('0x4'));var rimraf=require(_0x5ab9('0x5'));var JSDOM=require(_0x5ab9('0x6'))[_0x5ab9('0x7')];var window=new JSDOM('')['window'];var BPromise=require('bluebird');var db=require(_0x5ab9('0x8'))['db'];var dbH=require('../../mysqldb')[_0x5ab9('0x9')];var logger=require(_0x5ab9('0xa'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x5ab9('0xb')][0x2]);var QUERY=process['argv'][0x3];var PATH=process['argv'][0x4];var NAME=process[_0x5ab9('0xb')][0x5];var FORMAT=_0x5ab9('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0xed547a,_0x1fb1c8){var _0xe5198f={'status':_0xed547a};var _0x33384d={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1fb1c8){_0xe5198f['savename']=_0x1fb1c8;}return db[_0x5ab9('0xd')]['update'](_0xe5198f,_0x33384d);}function getHeaders(_0x335378){return _[_0x5ab9('0xe')](_0x335378,function(_0x3b9c83){return{'text':_0x3b9c83,'style':_0x5ab9('0xf')};});}function getRows(_0x43af7e,_0x5b49cc){return _['map'](_0x5b49cc,function(_0x5c3941){return _(_0x5c3941)['pick'](_0x43af7e)[_0x5ab9('0xe')](function(_0x39bb3f){return _0x39bb3f?_[_0x5ab9('0x10')](_0x39bb3f):'';})[_0x5ab9('0x11')]();});}function createTable(_0x105e66,_0xb5110f){var _0x17ce20={'widths':_['fill'](Array(_0x105e66[_0x5ab9('0x12')]),0x91),'heights':function(_0x1fa67e){return _0x1fa67e===0x0?_0x5ab9('0x13'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x523ef5=getHeaders(_0x105e66);_0x17ce20[_0x5ab9('0x14')][_0x5ab9('0x15')](_0x523ef5);var _0x32fd6a=getRows(_0x105e66,_0xb5110f);_0x17ce20[_0x5ab9('0x14')]=_0x17ce20[_0x5ab9('0x14')][_0x5ab9('0x16')](_0x32fd6a);return _0x17ce20;}function createTables(_0x46e464){var _0x49a8c1=[];var _0x5b4ab4=_[_0x5ab9('0x17')](Object[_0x5ab9('0x18')](_0x46e464[0x0]),0x5);_0x5b4ab4[_0x5ab9('0x19')](function(_0x1aff6a){_0x49a8c1[_0x5ab9('0x15')](createTable(_0x1aff6a,_0x46e464));});return _0x49a8c1;}function getPDFDocDefinition(_0x32b759){var _0xb6d67d=util[_0x5ab9('0x1a')](_0x5ab9('0x1b'),NAME,EXTRACTED_REPORT[_0x5ab9('0x1c')],moment(EXTRACTED_REPORT[_0x5ab9('0x1d')])[_0x5ab9('0x1a')](FORMAT),moment(EXTRACTED_REPORT[_0x5ab9('0x1e')])[_0x5ab9('0x1a')](FORMAT));var _0x532b7d=[];for(var _0x4a8dd5=0x0;_0x4a8dd5<_0x32b759['length'];_0x4a8dd5++){var _0x77edb4=[];if(_0x4a8dd5===0x0){_0x77edb4[_0x5ab9('0x15')]({'text':_0xb6d67d,'style':_0x5ab9('0x1f')});}var _0x48d66c={'table':_0x32b759[_0x4a8dd5]};if(_0x4a8dd5>0x0){_0x48d66c[_0x5ab9('0x20')]=_0x5ab9('0x21');_0x48d66c[_0x5ab9('0x22')]=[0x0,0x46,0x0,0x0];}_0x77edb4[_0x5ab9('0x15')](_0x48d66c);_0x532b7d['push'](_0x77edb4);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x532b7d,'footer':function(_0xc85acf,_0x5d40bc){return{'text':_0xc85acf[_0x5ab9('0x10')]()+_0x5ab9('0x23')+_0x5d40bc,'style':_0x5ab9('0x24')};},'defaultStyle':{'font':_0x5ab9('0x25')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x5ab9('0x26')},'footer':{'alignment':_0x5ab9('0x27'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x33f5d4){var _0x3c3cf8=0x1388;var _0x49c996;if(!_0x33f5d4[0x0][_0x5ab9('0x28')]){return analyticExtractedReport(_0x5ab9('0x29'));}return db['Setting'][_0x5ab9('0x2a')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x5ab9('0x2b'),'splitSizePdf']})[_0x5ab9('0x2c')](function(_0x3ebfb6){if(_0x3ebfb6){_0x49c996=_0x3ebfb6;_0x3c3cf8=_0x49c996[_0x5ab9('0x2d')]||0x3e8;}})[_0x5ab9('0x2c')](function(){var _0x2103fd=[];var _0x2d39bd=0x0;if(_0x49c996['split']){if(_0x33f5d4&&_0x33f5d4['length']){var _0x353833=_[_0x5ab9('0x2e')](_0x33f5d4[0x0][_0x5ab9('0x28')]/_0x3c3cf8);var _0x5d3ab8=Number['isInteger'](_0x33f5d4[0x0][_0x5ab9('0x28')]/_0x3c3cf8)?_0x33f5d4[0x0][_0x5ab9('0x28')]%_0x3c3cf8:0x0;_0x353833['forEach'](function(_0x32a7b5){if(_0x32a7b5>0x0){_0x2d39bd+=_0x3c3cf8;}_0x2103fd[_0x5ab9('0x15')](dbH[_0x5ab9('0x2f')][_0x5ab9('0x30')](util[_0x5ab9('0x1a')](_0x5ab9('0x31'),QUERY,_0x3c3cf8,_0x2d39bd),{'type':dbH['sequelize'][_0x5ab9('0x32')]['SELECT']}));});if(_0x5d3ab8>0x0){_0x2d39bd+=_0x3c3cf8;_0x2103fd[_0x5ab9('0x15')](dbH[_0x5ab9('0x2f')][_0x5ab9('0x30')](util[_0x5ab9('0x1a')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x5d3ab8,_0x2d39bd),{'type':dbH[_0x5ab9('0x2f')][_0x5ab9('0x32')]['SELECT']}));}}}else{_0x2103fd[_0x5ab9('0x15')](dbH[_0x5ab9('0x2f')][_0x5ab9('0x30')](QUERY,{'type':dbH[_0x5ab9('0x2f')][_0x5ab9('0x32')][_0x5ab9('0x33')]}));}var _0x2def33=path[_0x5ab9('0x34')](PATH);var _0x37cc39=path[_0x5ab9('0x35')](PATH,_0x5ab9('0x36'));var _0x561071=_0x49c996[_0x5ab9('0x2b')]&&_0x2103fd[_0x5ab9('0x12')]>0x1;var _0x147802=[];if(!fs['existsSync'](path[_0x5ab9('0x37')](_0x2def33,_0x37cc39))&&_0x561071){fs[_0x5ab9('0x38')](path[_0x5ab9('0x37')](_0x2def33,_0x37cc39));}return BPromise[_0x5ab9('0x39')](_0x2103fd,function(_0x42c547){_0x147802[_0x5ab9('0x15')](_0x42c547);})['then'](function(){var _0x28a2ca=[];for(var _0x35543f=0x0;_0x35543f<_0x147802[_0x5ab9('0x12')];_0x35543f+=0x1){var _0x40b6b9=_0x147802[_0x35543f];var _0x22aceb=createTables(_[_0x5ab9('0x3a')](_0x40b6b9));var _0x492574;var _0x4f2153=getPDFDocDefinition(_0x22aceb);var _0x5dd0e5=getPDFPrinter();var _0x13f07d=_0x5dd0e5['createPdfKitDocument'](_0x4f2153);if(_0x561071){_0x492574=path[_0x5ab9('0x37')](_0x2def33,_0x37cc39,util[_0x5ab9('0x1a')](_0x5ab9('0x3b'),_0x37cc39,_0x35543f,_0x5ab9('0x3c')));}else{_0x492574=path['join'](_0x2def33,util[_0x5ab9('0x1a')](_0x5ab9('0x3d'),_0x37cc39,_0x5ab9('0x3c')));}_0x28a2ca['push'](writePDFDocument(_0x13f07d,_0x492574));}return Promise[_0x5ab9('0x3e')](_0x28a2ca);})[_0x5ab9('0x2c')](function(){if(_0x561071){return new Promise(function(_0x4d92fe){zipdir(path[_0x5ab9('0x37')](_0x2def33,_0x37cc39),{'saveTo':path[_0x5ab9('0x37')](_0x2def33,util['format'](_0x5ab9('0x3d'),_0x37cc39,_0x5ab9('0x3f')))},function(){rimraf(path[_0x5ab9('0x37')](_0x2def33,_0x37cc39),function(){});_0x4d92fe(_0x5ab9('0x40'));});});}})[_0x5ab9('0x2c')](function(){if(!_0x561071)return;rimraf(path[_0x5ab9('0x37')](_0x2def33,_0x37cc39),function(){});})[_0x5ab9('0x2c')](function(){logger[_0x5ab9('0x41')](util[_0x5ab9('0x1a')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,'PDF'));return analyticExtractedReport(_0x5ab9('0x42'),_0x561071?util[_0x5ab9('0x1a')](_0x5ab9('0x3d'),_0x37cc39,_0x561071?_0x5ab9('0x3f'):_0x5ab9('0x3c')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x5ab9('0x41')](util['format']('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'PDF'));return db[_0x5ab9('0xd')][_0x5ab9('0x43')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x5ab9('0x2c')](function(_0x2800fd){EXTRACTED_REPORT=_0x2800fd;return dbH[_0x5ab9('0x2f')][_0x5ab9('0x30')](util[_0x5ab9('0x1a')](_0x5ab9('0x44'),QUERY),{'type':dbH[_0x5ab9('0x2f')][_0x5ab9('0x32')][_0x5ab9('0x33')]});})[_0x5ab9('0x2c')](extractReport)[_0x5ab9('0x45')](function(_0xe6e72e){logger[_0x5ab9('0x41')](util['format'](_0x5ab9('0x46'),EXTRACTED_REPORT_ID,_0x5ab9('0x47')),util[_0x5ab9('0x48')](_0xe6e72e,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x5ab9('0x49'));})[_0x5ab9('0x4a')](function(){process[_0x5ab9('0x4b')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x144978=new PdfPrinter({'Arial':{'normal':__dirname+_0x5ab9('0x4c'),'bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0x5ab9('0x4d')}});return _0x144978;}function getPDFDocDefinitionFromHTML(_0xfb6930,_0x34e360){var _0x5a88e8=util['format'](_0x5ab9('0x4e'),_0x34e360['channel'],_0x34e360['interactionId']);var _0x2a07f1=moment()[_0x5ab9('0x1a')]('YYYY-MM-DD')[_0x5ab9('0x10')]();var _0xcf97c7=htmlToPdfmake(_0xfb6930,{'window':window,'tableAutoSize':!![]});return{'content':[_0xcf97c7],'defaultStyle':{'font':_0x5ab9('0x25')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x5ab9('0x4f'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x5ab9('0x4f'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x5ab9('0x4f')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':'header'}];},'footer':function(_0x395f44,_0xb1c9a5){return[{'text':util[_0x5ab9('0x1a')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x5a88e8,_0x395f44,_0xb1c9a5,_0x2a07f1),'style':_0x5ab9('0x24')}];}};}function writePDFDocument(_0x1afe28,_0x42d575){return new Promise(function(_0xa7f81,_0x1d5869){var _0x257b17=_0x1afe28[_0x5ab9('0x50')](fs[_0x5ab9('0x51')](_0x42d575));_0x257b17['on'](_0x5ab9('0x52'),function(){_0xa7f81(_0x5ab9('0x52'));});_0x257b17['on'](_0x5ab9('0x53'),function(_0x4bab5d){_0x1d5869(_0x4bab5d);});_0x1afe28[_0x5ab9('0x54')]();});}exports['createPdfFromHTML']=function(_0x2e560a,_0x1345b7){var _0x1b0c11=getPDFPrinter();var _0x262665=getPDFDocDefinitionFromHTML(_0x2e560a,_0x1345b7);var _0x463fcc=_0x1b0c11[_0x5ab9('0x55')](_0x262665);return writePDFDocument(_0x463fcc,_0x1345b7[_0x5ab9('0x2')])['catch'](function(_0x3e2e89){throw _0x3e2e89;});};