0b522f751f32dac45d95268d93c24cd6cb9db972
[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 _0x4ca9=['../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','tableHeader','pick','toString','value','fill','length','auto','push','body','chunk','keys','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','header','pageBreak','before','landscape','\x20/\x20','footer','black','right','num','Empty','Setting','find','split','splitSizePdf','then','isInteger','forEach','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','dirname','basename','.pdf','existsSync','join','mkdirSync','each','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','all','zip','zip\x20finished','info','PDF','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','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','Arial','center','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','error','createPdfFromHTML','catch','lodash','util','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','window','bluebird','../../mysqldb','dbH'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4ca9,0xb8));var _0x94ca=function(_0x3ee0bf,_0x2da42f){_0x3ee0bf=_0x3ee0bf-0x0;var _0x49cdbd=_0x4ca9[_0x3ee0bf];return _0x49cdbd;};'use strict';var _=require(_0x94ca('0x0'));var fs=require('fs');var util=require(_0x94ca('0x1'));var path=require(_0x94ca('0x2'));var moment=require(_0x94ca('0x3'));var htmlToPdfmake=require(_0x94ca('0x4'));var PdfPrinter=require(_0x94ca('0x5'));var zipdir=require(_0x94ca('0x6'));var rimraf=require(_0x94ca('0x7'));var JSDOM=require(_0x94ca('0x8'))[_0x94ca('0x9')];var window=new JSDOM('')[_0x94ca('0xa')];var BPromise=require(_0x94ca('0xb'));var db=require(_0x94ca('0xc'))['db'];var dbH=require(_0x94ca('0xc'))[_0x94ca('0xd')];var logger=require(_0x94ca('0xe'))(_0x94ca('0xf'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x94ca('0x10')][0x3];var PATH=process['argv'][0x4];var NAME=process['argv'][0x5];var FORMAT=_0x94ca('0x11');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0xf77f61,_0x58058e){var _0x26e1f6={'status':_0xf77f61};var _0x58905f={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x58058e){_0x26e1f6[_0x94ca('0x12')]=_0x58058e;}return db[_0x94ca('0x13')][_0x94ca('0x14')](_0x26e1f6,_0x58905f);}function getHeaders(_0x236a25){return _[_0x94ca('0x15')](_0x236a25,function(_0x50dbd7){return{'text':_0x50dbd7,'style':_0x94ca('0x16')};});}function getRows(_0x231f7f,_0x229398){return _[_0x94ca('0x15')](_0x229398,function(_0x4c2424){return _(_0x4c2424)[_0x94ca('0x17')](_0x231f7f)[_0x94ca('0x15')](function(_0x32295e){return _0x32295e?_[_0x94ca('0x18')](_0x32295e):'';})[_0x94ca('0x19')]();});}function createTable(_0x5f40f9,_0x2b0dc4){var _0x1f3369={'widths':_[_0x94ca('0x1a')](Array(_0x5f40f9[_0x94ca('0x1b')]),0x91),'heights':function(_0x444dcb){return _0x444dcb===0x0?_0x94ca('0x1c'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x524f35=getHeaders(_0x5f40f9);_0x1f3369['body'][_0x94ca('0x1d')](_0x524f35);var _0x272b4c=getRows(_0x5f40f9,_0x2b0dc4);_0x1f3369['body']=_0x1f3369[_0x94ca('0x1e')]['concat'](_0x272b4c);return _0x1f3369;}function createTables(_0xeb9d0c){var _0x31b9ea=[];var _0x5d0e4c=_[_0x94ca('0x1f')](Object[_0x94ca('0x20')](_0xeb9d0c[0x0]),0x5);_0x5d0e4c['forEach'](function(_0x3c3b17){_0x31b9ea['push'](createTable(_0x3c3b17,_0xeb9d0c));});return _0x31b9ea;}function getPDFDocDefinition(_0x11b548){var _0x2a3310=util[_0x94ca('0x21')](_0x94ca('0x22'),NAME,EXTRACTED_REPORT[_0x94ca('0x23')],moment(EXTRACTED_REPORT[_0x94ca('0x24')])[_0x94ca('0x21')](FORMAT),moment(EXTRACTED_REPORT['endDate'])['format'](FORMAT));var _0x30a779=[];for(var _0x1703ad=0x0;_0x1703ad<_0x11b548[_0x94ca('0x1b')];_0x1703ad++){var _0x5ddebd=[];if(_0x1703ad===0x0){_0x5ddebd[_0x94ca('0x1d')]({'text':_0x2a3310,'style':_0x94ca('0x25')});}var _0x4c2805={'table':_0x11b548[_0x1703ad]};if(_0x1703ad>0x0){_0x4c2805[_0x94ca('0x26')]=_0x94ca('0x27');_0x4c2805['margin']=[0x0,0x46,0x0,0x0];}_0x5ddebd[_0x94ca('0x1d')](_0x4c2805);_0x30a779[_0x94ca('0x1d')](_0x5ddebd);}return{'pageSize':'A4','pageOrientation':_0x94ca('0x28'),'content':_0x30a779,'footer':function(_0x3bb927,_0x5868f5){return{'text':_0x3bb927['toString']()+_0x94ca('0x29')+_0x5868f5,'style':_0x94ca('0x2a')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x94ca('0x2b')},'footer':{'alignment':_0x94ca('0x2c'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x23ad59){var _0x1fb3e6=0x1388;var _0x448a81;if(!_0x23ad59[0x0][_0x94ca('0x2d')]){return analyticExtractedReport(_0x94ca('0x2e'));}return db[_0x94ca('0x2f')][_0x94ca('0x30')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x94ca('0x31'),_0x94ca('0x32')]})[_0x94ca('0x33')](function(_0x3259e0){if(_0x3259e0){_0x448a81=_0x3259e0;_0x1fb3e6=_0x448a81['splitSizePdf']||0x3e8;}})[_0x94ca('0x33')](function(){var _0x5a89ca=[];var _0x254496=0x0;if(_0x448a81[_0x94ca('0x31')]){if(_0x23ad59&&_0x23ad59['length']){var _0x1e0505=_['range'](_0x23ad59[0x0][_0x94ca('0x2d')]/_0x1fb3e6);var _0x107c1c=Number[_0x94ca('0x34')](_0x23ad59[0x0][_0x94ca('0x2d')]/_0x1fb3e6)?_0x23ad59[0x0][_0x94ca('0x2d')]%_0x1fb3e6:0x0;_0x1e0505[_0x94ca('0x35')](function(_0x5f1bd4){if(_0x5f1bd4>0x0){_0x254496+=_0x1fb3e6;}_0x5a89ca[_0x94ca('0x1d')](dbH[_0x94ca('0x36')][_0x94ca('0x37')](util['format'](_0x94ca('0x38'),QUERY,_0x1fb3e6,_0x254496),{'type':dbH['sequelize'][_0x94ca('0x39')][_0x94ca('0x3a')]}));});if(_0x107c1c>0x0){_0x254496+=_0x1fb3e6;_0x5a89ca['push'](dbH['sequelize']['query'](util[_0x94ca('0x21')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x107c1c,_0x254496),{'type':dbH['sequelize'][_0x94ca('0x39')][_0x94ca('0x3a')]}));}}}else{_0x5a89ca[_0x94ca('0x1d')](dbH[_0x94ca('0x36')][_0x94ca('0x37')](QUERY,{'type':dbH[_0x94ca('0x36')][_0x94ca('0x39')]['SELECT']}));}var _0x3b6fd4=path[_0x94ca('0x3b')](PATH);var _0x3a8218=path[_0x94ca('0x3c')](PATH,_0x94ca('0x3d'));var _0xbcb289=_0x448a81['split']&&_0x5a89ca['length']>0x1;var _0x3f4bbc=[];if(!fs[_0x94ca('0x3e')](path[_0x94ca('0x3f')](_0x3b6fd4,_0x3a8218))&&_0xbcb289){fs[_0x94ca('0x40')](path[_0x94ca('0x3f')](_0x3b6fd4,_0x3a8218));}return BPromise[_0x94ca('0x41')](_0x5a89ca,function(_0x534f8a){_0x3f4bbc[_0x94ca('0x1d')](_0x534f8a);})[_0x94ca('0x33')](function(){var _0x393a62=[];for(var _0x311b39=0x0;_0x311b39<_0x3f4bbc[_0x94ca('0x1b')];_0x311b39+=0x1){var _0x5ce0e2=_0x3f4bbc[_0x311b39];var _0x5a0600=createTables(_[_0x94ca('0x42')](_0x5ce0e2));var _0x3d4075;var _0x2693aa=getPDFDocDefinition(_0x5a0600);var _0x559d7a=getPDFPrinter();var _0x12a0fb=_0x559d7a[_0x94ca('0x43')](_0x2693aa);if(_0xbcb289){_0x3d4075=path[_0x94ca('0x3f')](_0x3b6fd4,_0x3a8218,util[_0x94ca('0x21')](_0x94ca('0x44'),_0x3a8218,_0x311b39,_0x94ca('0x45')));}else{_0x3d4075=path[_0x94ca('0x3f')](_0x3b6fd4,util[_0x94ca('0x21')](_0x94ca('0x46'),_0x3a8218,'pdf'));}_0x393a62[_0x94ca('0x1d')](writePDFDocument(_0x12a0fb,_0x3d4075));}return Promise[_0x94ca('0x47')](_0x393a62);})['then'](function(){if(_0xbcb289){return new Promise(function(_0x5555a1){zipdir(path[_0x94ca('0x3f')](_0x3b6fd4,_0x3a8218),{'saveTo':path[_0x94ca('0x3f')](_0x3b6fd4,util[_0x94ca('0x21')](_0x94ca('0x46'),_0x3a8218,_0x94ca('0x48')))},function(){rimraf(path['join'](_0x3b6fd4,_0x3a8218),function(){});_0x5555a1(_0x94ca('0x49'));});});}})[_0x94ca('0x33')](function(){if(!_0xbcb289)return;rimraf(path[_0x94ca('0x3f')](_0x3b6fd4,_0x3a8218),function(){});})[_0x94ca('0x33')](function(){logger[_0x94ca('0x4a')](util[_0x94ca('0x21')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x94ca('0x4b')));return analyticExtractedReport(_0x94ca('0x4c'),_0xbcb289?util['format'](_0x94ca('0x46'),_0x3a8218,_0xbcb289?_0x94ca('0x48'):'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x94ca('0x4a')](util[_0x94ca('0x21')](_0x94ca('0x4d'),EXTRACTED_REPORT_ID,_0x94ca('0x4b')));return db[_0x94ca('0x13')][_0x94ca('0x4e')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x94ca('0x33')](function(_0x3e5a8a){EXTRACTED_REPORT=_0x3e5a8a;return dbH[_0x94ca('0x36')][_0x94ca('0x37')](util[_0x94ca('0x21')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x94ca('0x36')][_0x94ca('0x39')][_0x94ca('0x3a')]});})[_0x94ca('0x33')](extractReport)['catch'](function(_0xa785a7){logger[_0x94ca('0x4a')](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'PDF'),util[_0x94ca('0x4f')](_0xa785a7,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x94ca('0x50'));})[_0x94ca('0x51')](function(){process[_0x94ca('0x52')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x2e75b5=new PdfPrinter({'Arial':{'normal':__dirname+_0x94ca('0x53'),'bold':__dirname+_0x94ca('0x54'),'italics':__dirname+_0x94ca('0x55'),'bolditalics':__dirname+_0x94ca('0x56')}});return _0x2e75b5;}function getPDFDocDefinitionFromHTML(_0x85d2d,_0x4c66f4){var _0x3bfbf0=util[_0x94ca('0x21')](_0x94ca('0x57'),_0x4c66f4[_0x94ca('0x58')],_0x4c66f4[_0x94ca('0x59')]);var _0x388879=moment()[_0x94ca('0x21')](_0x94ca('0x5a'))[_0x94ca('0x18')]();var _0x1e5413=htmlToPdfmake(_0x85d2d,{'window':window,'tableAutoSize':!![]});return{'content':[_0x1e5413],'defaultStyle':{'font':_0x94ca('0x5b')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x94ca('0x5c'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x94ca('0x5c'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x94ca('0x5c')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':'header'}];},'footer':function(_0x5955c5,_0x3cc6bf){return[{'text':util[_0x94ca('0x21')](_0x94ca('0x5d'),_0x3bfbf0,_0x5955c5,_0x3cc6bf,_0x388879),'style':_0x94ca('0x2a')}];}};}function writePDFDocument(_0x188423,_0x32dfe7){return new Promise(function(_0x24013b,_0x19bb09){var _0x1d07e2=_0x188423[_0x94ca('0x5e')](fs[_0x94ca('0x5f')](_0x32dfe7));_0x1d07e2['on']('finish',function(){_0x24013b('finish');});_0x1d07e2['on'](_0x94ca('0x60'),function(_0x18b7e1){_0x19bb09(_0x18b7e1);});_0x188423['end']();});}exports[_0x94ca('0x61')]=function(_0x5f16a4,_0x186df0){var _0x36fdd0=getPDFPrinter();var _0x1be1bc=getPDFDocDefinitionFromHTML(_0x5f16a4,_0x186df0);var _0x4f03b5=_0x36fdd0[_0x94ca('0x43')](_0x1be1bc);return writePDFDocument(_0x4f03b5,_0x186df0[_0x94ca('0x2')])[_0x94ca('0x62')](function(_0x3861f2){throw _0x3861f2;});};