Built motion from commit e0fa946e.|2.6.5
[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 _0x1f5b=['concat','chunk','forEach','push','startDate','format','endDate','header','pageBreak','before','margin','landscape','\x20/\x20','footer','Arial','black','num','Empty','Setting','split','splitSizePdf','then','range','isInteger','query','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','QueryTypes','SELECT','basename','.pdf','existsSync','join','mkdirSync','each','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','all','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','catch','inspect','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','createWriteStream','finish','error','createPdfFromHTML','lodash','util','path','moment','pdfmake/src/printer','zip-dir','jsdom','JSDOM','window','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','AnalyticExtractedReport','map','toString','value','length','body'];(function(_0xa42f5,_0x563a93){var _0x25d52c=function(_0x17df82){while(--_0x17df82){_0xa42f5['push'](_0xa42f5['shift']());}};_0x25d52c(++_0x563a93);}(_0x1f5b,0x9c));var _0xb1f5=function(_0x336b52,_0x3bb679){_0x336b52=_0x336b52-0x0;var _0x28ca22=_0x1f5b[_0x336b52];return _0x28ca22;};'use strict';var _=require(_0xb1f5('0x0'));var fs=require('fs');var util=require(_0xb1f5('0x1'));var path=require(_0xb1f5('0x2'));var moment=require(_0xb1f5('0x3'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0xb1f5('0x4'));var zipdir=require(_0xb1f5('0x5'));var rimraf=require('rimraf');var JSDOM=require(_0xb1f5('0x6'))[_0xb1f5('0x7')];var window=new JSDOM('')[_0xb1f5('0x8')];var BPromise=require(_0xb1f5('0x9'));var db=require('../../mysqldb')['db'];var dbH=require(_0xb1f5('0xa'))[_0xb1f5('0xb')];var logger=require(_0xb1f5('0xc'))(_0xb1f5('0xd'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0xb1f5('0xe')][0x3];var PATH=process[_0xb1f5('0xe')][0x4];var NAME=process[_0xb1f5('0xe')][0x5];var FORMAT=_0xb1f5('0xf');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x532967,_0x4403aa){var _0x425db3={'status':_0x532967};var _0x6e65ee={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4403aa){_0x425db3['savename']=_0x4403aa;}return db[_0xb1f5('0x10')]['update'](_0x425db3,_0x6e65ee);}function getHeaders(_0x108c51){return _[_0xb1f5('0x11')](_0x108c51,function(_0x44e01a){return{'text':_0x44e01a,'style':'tableHeader'};});}function getRows(_0x5c08b7,_0x3f6266){return _[_0xb1f5('0x11')](_0x3f6266,function(_0xc3aff2){return _(_0xc3aff2)['pick'](_0x5c08b7)[_0xb1f5('0x11')](function(_0x1be771){return _0x1be771?_[_0xb1f5('0x12')](_0x1be771):'';})[_0xb1f5('0x13')]();});}function createTable(_0x131d5f,_0x4bb25c){var _0x2a6b0c={'widths':_['fill'](Array(_0x131d5f[_0xb1f5('0x14')]),0x91),'heights':function(_0x289481){return _0x289481===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x4afc35=getHeaders(_0x131d5f);_0x2a6b0c[_0xb1f5('0x15')]['push'](_0x4afc35);var _0x345aac=getRows(_0x131d5f,_0x4bb25c);_0x2a6b0c['body']=_0x2a6b0c[_0xb1f5('0x15')][_0xb1f5('0x16')](_0x345aac);return _0x2a6b0c;}function createTables(_0x583953){var _0x1b31a1=[];var _0x387ab6=_[_0xb1f5('0x17')](Object['keys'](_0x583953[0x0]),0x5);_0x387ab6[_0xb1f5('0x18')](function(_0x1c04c1){_0x1b31a1[_0xb1f5('0x19')](createTable(_0x1c04c1,_0x583953));});return _0x1b31a1;}function getPDFDocDefinition(_0x1aa6d6){var _0x93b376=util['format']('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0xb1f5('0x1a')])[_0xb1f5('0x1b')](FORMAT),moment(EXTRACTED_REPORT[_0xb1f5('0x1c')])[_0xb1f5('0x1b')](FORMAT));var _0x39c686=[];for(var _0x5d88ea=0x0;_0x5d88ea<_0x1aa6d6['length'];_0x5d88ea++){var _0x4c741c=[];if(_0x5d88ea===0x0){_0x4c741c[_0xb1f5('0x19')]({'text':_0x93b376,'style':_0xb1f5('0x1d')});}var _0x274791={'table':_0x1aa6d6[_0x5d88ea]};if(_0x5d88ea>0x0){_0x274791[_0xb1f5('0x1e')]=_0xb1f5('0x1f');_0x274791[_0xb1f5('0x20')]=[0x0,0x46,0x0,0x0];}_0x4c741c[_0xb1f5('0x19')](_0x274791);_0x39c686[_0xb1f5('0x19')](_0x4c741c);}return{'pageSize':'A4','pageOrientation':_0xb1f5('0x21'),'content':_0x39c686,'footer':function(_0x3e8623,_0xa3d605){return{'text':_0x3e8623[_0xb1f5('0x12')]()+_0xb1f5('0x22')+_0xa3d605,'style':_0xb1f5('0x23')};},'defaultStyle':{'font':_0xb1f5('0x24')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0xb1f5('0x25')},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x15285b){var _0x5256af=0x1388;var _0x3b0acd;if(!_0x15285b[0x0][_0xb1f5('0x26')]){return analyticExtractedReport(_0xb1f5('0x27'));}return db[_0xb1f5('0x28')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xb1f5('0x29'),_0xb1f5('0x2a')]})[_0xb1f5('0x2b')](function(_0x2f58da){if(_0x2f58da){_0x3b0acd=_0x2f58da;_0x5256af=_0x3b0acd[_0xb1f5('0x2a')]||0x3e8;}})[_0xb1f5('0x2b')](function(){var _0x20b4fb=[];var _0x4fa23e=0x0;if(_0x3b0acd[_0xb1f5('0x29')]){if(_0x15285b&&_0x15285b[_0xb1f5('0x14')]){var _0x8428a3=_[_0xb1f5('0x2c')](_0x15285b[0x0][_0xb1f5('0x26')]/_0x5256af);var _0x2ff949=Number[_0xb1f5('0x2d')](_0x15285b[0x0][_0xb1f5('0x26')]/_0x5256af)?_0x15285b[0x0][_0xb1f5('0x26')]%_0x5256af:0x0;_0x8428a3[_0xb1f5('0x18')](function(_0x24bbf4){if(_0x24bbf4>0x0){_0x4fa23e+=_0x5256af;}_0x20b4fb['push'](dbH['sequelize'][_0xb1f5('0x2e')](util[_0xb1f5('0x1b')](_0xb1f5('0x2f'),QUERY,_0x5256af,_0x4fa23e),{'type':dbH[_0xb1f5('0x30')][_0xb1f5('0x31')][_0xb1f5('0x32')]}));});if(_0x2ff949>0x0){_0x4fa23e+=_0x5256af;_0x20b4fb[_0xb1f5('0x19')](dbH[_0xb1f5('0x30')][_0xb1f5('0x2e')](util[_0xb1f5('0x1b')](_0xb1f5('0x2f'),QUERY,_0x2ff949,_0x4fa23e),{'type':dbH['sequelize'][_0xb1f5('0x31')][_0xb1f5('0x32')]}));}}}else{_0x20b4fb[_0xb1f5('0x19')](dbH[_0xb1f5('0x30')]['query'](QUERY,{'type':dbH[_0xb1f5('0x30')][_0xb1f5('0x31')][_0xb1f5('0x32')]}));}var _0x3d7571=path['dirname'](PATH);var _0x494808=path[_0xb1f5('0x33')](PATH,_0xb1f5('0x34'));var _0x41c407=_0x3b0acd[_0xb1f5('0x29')]&&_0x20b4fb[_0xb1f5('0x14')]>0x1;var _0x2b8ae3=[];if(!fs[_0xb1f5('0x35')](path[_0xb1f5('0x36')](_0x3d7571,_0x494808))&&_0x41c407){fs[_0xb1f5('0x37')](path[_0xb1f5('0x36')](_0x3d7571,_0x494808));}return BPromise[_0xb1f5('0x38')](_0x20b4fb,function(_0x268854){_0x2b8ae3[_0xb1f5('0x19')](_0x268854);})[_0xb1f5('0x2b')](function(){var _0x25ca2e=[];for(var _0x3be663=0x0;_0x3be663<_0x2b8ae3[_0xb1f5('0x14')];_0x3be663+=0x1){var _0x47ae87=_0x2b8ae3[_0x3be663];var _0x5d5316=createTables(_[_0xb1f5('0x39')](_0x47ae87));var _0xcfa260;var _0x5c9b68=getPDFDocDefinition(_0x5d5316);var _0xdb9701=getPDFPrinter();var _0x485be6=_0xdb9701[_0xb1f5('0x3a')](_0x5c9b68);if(_0x41c407){_0xcfa260=path['join'](_0x3d7571,_0x494808,util[_0xb1f5('0x1b')](_0xb1f5('0x3b'),_0x494808,_0x3be663,_0xb1f5('0x3c')));}else{_0xcfa260=path['join'](_0x3d7571,util[_0xb1f5('0x1b')](_0xb1f5('0x3d'),_0x494808,_0xb1f5('0x3c')));}_0x25ca2e[_0xb1f5('0x19')](writePDFDocument(_0x485be6,_0xcfa260));}return Promise[_0xb1f5('0x3e')](_0x25ca2e);})['then'](function(){if(_0x41c407){return new Promise(function(_0x57177f){zipdir(path['join'](_0x3d7571,_0x494808),{'saveTo':path[_0xb1f5('0x36')](_0x3d7571,util['format'](_0xb1f5('0x3d'),_0x494808,_0xb1f5('0x3f')))},function(){rimraf(path[_0xb1f5('0x36')](_0x3d7571,_0x494808),function(){});_0x57177f(_0xb1f5('0x40'));});});}})[_0xb1f5('0x2b')](function(){if(!_0x41c407)return;rimraf(path['join'](_0x3d7571,_0x494808),function(){});})[_0xb1f5('0x2b')](function(){logger[_0xb1f5('0x41')](util[_0xb1f5('0x1b')](_0xb1f5('0x42'),EXTRACTED_REPORT_ID,_0xb1f5('0x43')));return analyticExtractedReport('Completed',_0x41c407?util['format']('%s.%s',_0x494808,_0x41c407?'zip':_0xb1f5('0x3c')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xb1f5('0x41')](util[_0xb1f5('0x1b')](_0xb1f5('0x44'),EXTRACTED_REPORT_ID,_0xb1f5('0x43')));return db['AnalyticExtractedReport'][_0xb1f5('0x45')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xb1f5('0x2b')](function(_0x20778b){EXTRACTED_REPORT=_0x20778b;return dbH[_0xb1f5('0x30')][_0xb1f5('0x2e')](util[_0xb1f5('0x1b')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0xb1f5('0x31')][_0xb1f5('0x32')]});})[_0xb1f5('0x2b')](extractReport)[_0xb1f5('0x46')](function(_0x238f72){logger[_0xb1f5('0x41')](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xb1f5('0x43')),util[_0xb1f5('0x47')](_0x238f72,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xb1f5('0x48'));})[_0xb1f5('0x49')](function(){process[_0xb1f5('0x4a')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x24673c=new PdfPrinter({'Arial':{'normal':__dirname+_0xb1f5('0x4b'),'bold':__dirname+_0xb1f5('0x4c'),'italics':__dirname+_0xb1f5('0x4d'),'bolditalics':__dirname+_0xb1f5('0x4e')}});return _0x24673c;}function getPDFDocDefinitionFromHTML(_0x118e1d,_0x32c583){var _0x280109=util[_0xb1f5('0x1b')](_0xb1f5('0x4f'),_0x32c583[_0xb1f5('0x50')],_0x32c583[_0xb1f5('0x51')]);var _0x572b8f=moment()[_0xb1f5('0x1b')](_0xb1f5('0x52'))['toString']();var _0x287388=htmlToPdfmake(_0x118e1d,{'window':window,'tableAutoSize':!![]});return{'content':[_0x287388],'defaultStyle':{'font':_0xb1f5('0x24')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0xb1f5('0x53'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0xb1f5('0x53')}},'header':function(){return[{'text':_0xb1f5('0x54'),'style':_0xb1f5('0x1d')}];},'footer':function(_0x324fbf,_0x29dd04){return[{'text':util[_0xb1f5('0x1b')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x280109,_0x324fbf,_0x29dd04,_0x572b8f),'style':'footer'}];}};}function writePDFDocument(_0x1a07c1,_0xc14029){return new Promise(function(_0x4c5459,_0x4ca2af){var _0x2108fb=_0x1a07c1['pipe'](fs[_0xb1f5('0x55')](_0xc14029));_0x2108fb['on']('finish',function(){_0x4c5459(_0xb1f5('0x56'));});_0x2108fb['on'](_0xb1f5('0x57'),function(_0x35bec6){_0x4ca2af(_0x35bec6);});_0x1a07c1['end']();});}exports[_0xb1f5('0x58')]=function(_0x3ba6f6,_0x48286b){var _0x17a94c=getPDFPrinter();var _0x48c029=getPDFDocDefinitionFromHTML(_0x3ba6f6,_0x48286b);var _0x39495a=_0x17a94c['createPdfKitDocument'](_0x48c029);return writePDFDocument(_0x39495a,_0x48286b[_0xb1f5('0x2')])[_0xb1f5('0x46')](function(_0x481e9f){throw _0x481e9f;});};