801c609cdc9c7699b3bfb7f6cffc57014eb4a679
[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 _0x285c=['MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','update','map','tableHeader','pick','toString','value','fill','auto','body','push','concat','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','length','header','before','margin','landscape','\x20/\x20','footer','Arial','num','Empty','Setting','find','split','then','range','isInteger','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','QueryTypes','dirname','basename','.pdf','existsSync','mkdirSync','join','each','%s%d.%s','pdf','all','zip','PDF','Completed','%s.%s','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Failed','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','%s\x20#%d','YYYY-MM-DD','center','Interaction\x20Transcript','pipe','createWriteStream','finish','error','end','createPdfKitDocument','lodash','util','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','window','bluebird','../../mysqldb','dbH','../../config/logger','argv'];(function(_0x5b6440,_0x1b297c){var _0x2a567a=function(_0x135d6b){while(--_0x135d6b){_0x5b6440['push'](_0x5b6440['shift']());}};_0x2a567a(++_0x1b297c);}(_0x285c,0x150));var _0xc285=function(_0x1de1eb,_0x196031){_0x1de1eb=_0x1de1eb-0x0;var _0x1042fb=_0x285c[_0x1de1eb];return _0x1042fb;};'use strict';var _=require(_0xc285('0x0'));var fs=require('fs');var util=require(_0xc285('0x1'));var path=require(_0xc285('0x2'));var moment=require(_0xc285('0x3'));var htmlToPdfmake=require(_0xc285('0x4'));var PdfPrinter=require(_0xc285('0x5'));var zipdir=require(_0xc285('0x6'));var rimraf=require(_0xc285('0x7'));var JSDOM=require(_0xc285('0x8'))[_0xc285('0x9')];var window=new JSDOM('')[_0xc285('0xa')];var BPromise=require(_0xc285('0xb'));var db=require(_0xc285('0xc'))['db'];var dbH=require(_0xc285('0xc'))[_0xc285('0xd')];var logger=require(_0xc285('0xe'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0xc285('0xf')][0x2]);var QUERY=process[_0xc285('0xf')][0x3];var PATH=process[_0xc285('0xf')][0x4];var NAME=process[_0xc285('0xf')][0x5];var FORMAT=_0xc285('0x10');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x588c98,_0x463813){var _0x560ce0={'status':_0x588c98};var _0x4602bb={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x463813){_0x560ce0[_0xc285('0x11')]=_0x463813;}return db['AnalyticExtractedReport'][_0xc285('0x12')](_0x560ce0,_0x4602bb);}function getHeaders(_0xaf5695){return _[_0xc285('0x13')](_0xaf5695,function(_0x18daf1){return{'text':_0x18daf1,'style':_0xc285('0x14')};});}function getRows(_0x550665,_0x254cd5){return _[_0xc285('0x13')](_0x254cd5,function(_0x20308a){return _(_0x20308a)[_0xc285('0x15')](_0x550665)[_0xc285('0x13')](function(_0x1fc0d8){return _0x1fc0d8?_[_0xc285('0x16')](_0x1fc0d8):'';})[_0xc285('0x17')]();});}function createTable(_0x58d594,_0x11ff29){var _0x2ad137={'widths':_[_0xc285('0x18')](Array(_0x58d594['length']),0x91),'heights':function(_0x2bb93b){return _0x2bb93b===0x0?_0xc285('0x19'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x23ee5b=getHeaders(_0x58d594);_0x2ad137[_0xc285('0x1a')][_0xc285('0x1b')](_0x23ee5b);var _0x197ed0=getRows(_0x58d594,_0x11ff29);_0x2ad137[_0xc285('0x1a')]=_0x2ad137[_0xc285('0x1a')][_0xc285('0x1c')](_0x197ed0);return _0x2ad137;}function createTables(_0x48e109){var _0x18ba5b=[];var _0x1812ef=_['chunk'](Object['keys'](_0x48e109[0x0]),0x5);_0x1812ef[_0xc285('0x1d')](function(_0x5ccf98){_0x18ba5b['push'](createTable(_0x5ccf98,_0x48e109));});return _0x18ba5b;}function getPDFDocDefinition(_0x4eda0e){var _0x5284e6=util[_0xc285('0x1e')](_0xc285('0x1f'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT['startDate'])[_0xc285('0x1e')](FORMAT),moment(EXTRACTED_REPORT['endDate'])[_0xc285('0x1e')](FORMAT));var _0x5b15b0=[];for(var _0x8a7353=0x0;_0x8a7353<_0x4eda0e[_0xc285('0x20')];_0x8a7353++){var _0xdf2590=[];if(_0x8a7353===0x0){_0xdf2590[_0xc285('0x1b')]({'text':_0x5284e6,'style':_0xc285('0x21')});}var _0x5ce620={'table':_0x4eda0e[_0x8a7353]};if(_0x8a7353>0x0){_0x5ce620['pageBreak']=_0xc285('0x22');_0x5ce620[_0xc285('0x23')]=[0x0,0x46,0x0,0x0];}_0xdf2590[_0xc285('0x1b')](_0x5ce620);_0x5b15b0[_0xc285('0x1b')](_0xdf2590);}return{'pageSize':'A4','pageOrientation':_0xc285('0x24'),'content':_0x5b15b0,'footer':function(_0x15bb2a,_0x5ddfa5){return{'text':_0x15bb2a[_0xc285('0x16')]()+_0xc285('0x25')+_0x5ddfa5,'style':_0xc285('0x26')};},'defaultStyle':{'font':_0xc285('0x27')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x1eb2f3){var _0x2ec421=0x1388;var _0x23274a;if(!_0x1eb2f3[0x0][_0xc285('0x28')]){return analyticExtractedReport(_0xc285('0x29'));}return db[_0xc285('0x2a')][_0xc285('0x2b')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xc285('0x2c'),'splitSizePdf']})[_0xc285('0x2d')](function(_0x396cb7){if(_0x396cb7){_0x23274a=_0x396cb7;_0x2ec421=_0x23274a['splitSizePdf']||0x3e8;}})[_0xc285('0x2d')](function(){var _0x177627=[];var _0x261b55=0x0;if(_0x23274a[_0xc285('0x2c')]){if(_0x1eb2f3&&_0x1eb2f3[_0xc285('0x20')]){var _0x32b0d8=_[_0xc285('0x2e')](_0x1eb2f3[0x0][_0xc285('0x28')]/_0x2ec421);var _0x158198=Number[_0xc285('0x2f')](_0x1eb2f3[0x0][_0xc285('0x28')]/_0x2ec421)?_0x1eb2f3[0x0][_0xc285('0x28')]%_0x2ec421:0x0;_0x32b0d8[_0xc285('0x1d')](function(_0x82f23f){if(_0x82f23f>0x0){_0x261b55+=_0x2ec421;}_0x177627[_0xc285('0x1b')](dbH[_0xc285('0x30')][_0xc285('0x31')](util[_0xc285('0x1e')](_0xc285('0x32'),QUERY,_0x2ec421,_0x261b55),{'type':dbH['sequelize']['QueryTypes'][_0xc285('0x33')]}));});if(_0x158198>0x0){_0x261b55+=_0x2ec421;_0x177627[_0xc285('0x1b')](dbH[_0xc285('0x30')][_0xc285('0x31')](util[_0xc285('0x1e')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x158198,_0x261b55),{'type':dbH[_0xc285('0x30')]['QueryTypes'][_0xc285('0x33')]}));}}}else{_0x177627[_0xc285('0x1b')](dbH[_0xc285('0x30')][_0xc285('0x31')](QUERY,{'type':dbH[_0xc285('0x30')][_0xc285('0x34')][_0xc285('0x33')]}));}var _0x5a3ad8=path[_0xc285('0x35')](PATH);var _0x3fc0ad=path[_0xc285('0x36')](PATH,_0xc285('0x37'));var _0x2ab4d1=_0x23274a[_0xc285('0x2c')]&&_0x177627[_0xc285('0x20')]>0x1;var _0xbcb5dc=[];if(!fs[_0xc285('0x38')](path['join'](_0x5a3ad8,_0x3fc0ad))&&_0x2ab4d1){fs[_0xc285('0x39')](path[_0xc285('0x3a')](_0x5a3ad8,_0x3fc0ad));}return BPromise[_0xc285('0x3b')](_0x177627,function(_0x364a99){_0xbcb5dc[_0xc285('0x1b')](_0x364a99);})[_0xc285('0x2d')](function(){var _0x46b125=[];for(var _0x2d593b=0x0;_0x2d593b<_0xbcb5dc[_0xc285('0x20')];_0x2d593b+=0x1){var _0xb2de68=_0xbcb5dc[_0x2d593b];var _0xc2da2e=createTables(_['flatten'](_0xb2de68));var _0x2a861a;var _0x2ac4bb=getPDFDocDefinition(_0xc2da2e);var _0x457333=getPDFPrinter();var _0x39cdba=_0x457333['createPdfKitDocument'](_0x2ac4bb);if(_0x2ab4d1){_0x2a861a=path[_0xc285('0x3a')](_0x5a3ad8,_0x3fc0ad,util[_0xc285('0x1e')](_0xc285('0x3c'),_0x3fc0ad,_0x2d593b,_0xc285('0x3d')));}else{_0x2a861a=path[_0xc285('0x3a')](_0x5a3ad8,util[_0xc285('0x1e')]('%s.%s',_0x3fc0ad,'pdf'));}_0x46b125[_0xc285('0x1b')](writePDFDocument(_0x39cdba,_0x2a861a));}return Promise[_0xc285('0x3e')](_0x46b125);})[_0xc285('0x2d')](function(){if(_0x2ab4d1){return new Promise(function(_0xee7f4){zipdir(path[_0xc285('0x3a')](_0x5a3ad8,_0x3fc0ad),{'saveTo':path[_0xc285('0x3a')](_0x5a3ad8,util['format']('%s.%s',_0x3fc0ad,_0xc285('0x3f')))},function(){rimraf(path['join'](_0x5a3ad8,_0x3fc0ad),function(){});_0xee7f4('zip\x20finished');});});}})['then'](function(){if(!_0x2ab4d1)return;rimraf(path[_0xc285('0x3a')](_0x5a3ad8,_0x3fc0ad),function(){});})['then'](function(){logger['info'](util[_0xc285('0x1e')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xc285('0x40')));return analyticExtractedReport(_0xc285('0x41'),_0x2ab4d1?util[_0xc285('0x1e')](_0xc285('0x42'),_0x3fc0ad,_0x2ab4d1?_0xc285('0x3f'):_0xc285('0x3d')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xc285('0x43')](util[_0xc285('0x1e')](_0xc285('0x44'),EXTRACTED_REPORT_ID,_0xc285('0x40')));return db['AnalyticExtractedReport'][_0xc285('0x45')]({'where':{'id':EXTRACTED_REPORT_ID}})['then'](function(_0x4845e1){EXTRACTED_REPORT=_0x4845e1;return dbH[_0xc285('0x30')][_0xc285('0x31')](util[_0xc285('0x1e')](_0xc285('0x46'),QUERY),{'type':dbH[_0xc285('0x30')][_0xc285('0x34')]['SELECT']});})[_0xc285('0x2d')](extractReport)[_0xc285('0x47')](function(_0x42d04e){logger[_0xc285('0x43')](util[_0xc285('0x1e')](_0xc285('0x48'),EXTRACTED_REPORT_ID,_0xc285('0x40')),util['inspect'](_0x42d04e,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xc285('0x49'));})['finally'](function(){process[_0xc285('0x4a')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x4d91bb=new PdfPrinter({'Arial':{'normal':__dirname+_0xc285('0x4b'),'bold':__dirname+_0xc285('0x4c'),'italics':__dirname+_0xc285('0x4d'),'bolditalics':__dirname+'/fonts/arial-bold-italic.ttf'}});return _0x4d91bb;}function getPDFDocDefinitionFromHTML(_0x1fc754,_0x42c468){var _0x4d2c75=util[_0xc285('0x1e')](_0xc285('0x4e'),_0x42c468['channel'],_0x42c468['interactionId']);var _0x13eb58=moment()[_0xc285('0x1e')](_0xc285('0x4f'))['toString']();var _0x1cf02b=htmlToPdfmake(_0x1fc754,{'window':window,'tableAutoSize':!![]});return{'content':[_0x1cf02b],'defaultStyle':{'font':_0xc285('0x27')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xc285('0x50'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':'center','margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0xc285('0x50')}},'header':function(){return[{'text':_0xc285('0x51'),'style':_0xc285('0x21')}];},'footer':function(_0x539994,_0x2c7ac8){return[{'text':util[_0xc285('0x1e')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x4d2c75,_0x539994,_0x2c7ac8,_0x13eb58),'style':'footer'}];}};}function writePDFDocument(_0x1e3c90,_0x5a1ad6){return new Promise(function(_0x3464e7,_0x3ec8fb){var _0x5d7616=_0x1e3c90[_0xc285('0x52')](fs[_0xc285('0x53')](_0x5a1ad6));_0x5d7616['on'](_0xc285('0x54'),function(){_0x3464e7('finish');});_0x5d7616['on'](_0xc285('0x55'),function(_0xa99d85){_0x3ec8fb(_0xa99d85);});_0x1e3c90[_0xc285('0x56')]();});}exports['createPdfFromHTML']=function(_0x7a181c,_0x506ef2){var _0x497c3f=getPDFPrinter();var _0x1f3507=getPDFDocDefinitionFromHTML(_0x7a181c,_0x506ef2);var _0x3dd7bc=_0x497c3f[_0xc285('0x57')](_0x1f3507);return writePDFDocument(_0x3dd7bc,_0x506ef2['path'])[_0xc285('0x47')](function(_0x36b343){throw _0x36b343;});};