257cc7c64d6c002646b7af1d797ef51d21c6a205
[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 _0xa9fd=['catch','lodash','path','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','map','tableHeader','pick','toString','fill','length','auto','body','push','concat','chunk','forEach','format','name','startDate','endDate','header','pageBreak','before','margin','\x20/\x20','footer','Arial','right','num','Setting','find','split','splitSizePdf','then','range','isInteger','query','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','QueryTypes','SELECT','dirname','existsSync','join','each','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','all','zip\x20finished','info','PDF','Completed','zip','findOne','inspect','Failed','finally','exit','/fonts/arial-regular.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','center','pipe','finish','error'];(function(_0xa429aa,_0x7999e9){var _0x5d0ed6=function(_0x32e4b1){while(--_0x32e4b1){_0xa429aa['push'](_0xa429aa['shift']());}};_0x5d0ed6(++_0x7999e9);}(_0xa9fd,0xfd));var _0xda9f=function(_0x1d5ab0,_0x178711){_0x1d5ab0=_0x1d5ab0-0x0;var _0x19edf9=_0xa9fd[_0x1d5ab0];return _0x19edf9;};'use strict';var _=require(_0xda9f('0x0'));var fs=require('fs');var util=require('util');var path=require(_0xda9f('0x1'));var moment=require('moment');var htmlToPdfmake=require(_0xda9f('0x2'));var PdfPrinter=require(_0xda9f('0x3'));var zipdir=require(_0xda9f('0x4'));var rimraf=require(_0xda9f('0x5'));var JSDOM=require(_0xda9f('0x6'))[_0xda9f('0x7')];var window=new JSDOM('')['window'];var BPromise=require(_0xda9f('0x8'));var db=require(_0xda9f('0x9'))['db'];var dbH=require(_0xda9f('0x9'))[_0xda9f('0xa')];var logger=require(_0xda9f('0xb'))(_0xda9f('0xc'));var EXTRACTED_REPORT_ID=Number(process[_0xda9f('0xd')][0x2]);var QUERY=process[_0xda9f('0xd')][0x3];var PATH=process[_0xda9f('0xd')][0x4];var NAME=process[_0xda9f('0xd')][0x5];var FORMAT='MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a';var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x2c2c5f,_0x4b228f){var _0x57e0f7={'status':_0x2c2c5f};var _0x367bec={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4b228f){_0x57e0f7[_0xda9f('0xe')]=_0x4b228f;}return db[_0xda9f('0xf')][_0xda9f('0x10')](_0x57e0f7,_0x367bec);}function getHeaders(_0x180b16){return _[_0xda9f('0x11')](_0x180b16,function(_0x1baa3f){return{'text':_0x1baa3f,'style':_0xda9f('0x12')};});}function getRows(_0x52e635,_0x284956){return _['map'](_0x284956,function(_0x3c4fb6){return _(_0x3c4fb6)[_0xda9f('0x13')](_0x52e635)['map'](function(_0x4b7024){return _0x4b7024?_[_0xda9f('0x14')](_0x4b7024):'';})['value']();});}function createTable(_0x4d5448,_0x19652f){var _0x422a1d={'widths':_[_0xda9f('0x15')](Array(_0x4d5448[_0xda9f('0x16')]),0x91),'heights':function(_0x2072cf){return _0x2072cf===0x0?_0xda9f('0x17'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x4a6058=getHeaders(_0x4d5448);_0x422a1d[_0xda9f('0x18')][_0xda9f('0x19')](_0x4a6058);var _0xb530fc=getRows(_0x4d5448,_0x19652f);_0x422a1d[_0xda9f('0x18')]=_0x422a1d['body'][_0xda9f('0x1a')](_0xb530fc);return _0x422a1d;}function createTables(_0x1348f8){var _0x2ba3fe=[];var _0x37bc85=_[_0xda9f('0x1b')](Object['keys'](_0x1348f8[0x0]),0x5);_0x37bc85[_0xda9f('0x1c')](function(_0x3dbec4){_0x2ba3fe['push'](createTable(_0x3dbec4,_0x1348f8));});return _0x2ba3fe;}function getPDFDocDefinition(_0x2209cb){var _0x587b5c=util[_0xda9f('0x1d')]('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT[_0xda9f('0x1e')],moment(EXTRACTED_REPORT[_0xda9f('0x1f')])['format'](FORMAT),moment(EXTRACTED_REPORT[_0xda9f('0x20')])['format'](FORMAT));var _0x25054e=[];for(var _0x24b8d=0x0;_0x24b8d<_0x2209cb[_0xda9f('0x16')];_0x24b8d++){var _0xdb0cd4=[];if(_0x24b8d===0x0){_0xdb0cd4[_0xda9f('0x19')]({'text':_0x587b5c,'style':_0xda9f('0x21')});}var _0x461b3c={'table':_0x2209cb[_0x24b8d]};if(_0x24b8d>0x0){_0x461b3c[_0xda9f('0x22')]=_0xda9f('0x23');_0x461b3c[_0xda9f('0x24')]=[0x0,0x46,0x0,0x0];}_0xdb0cd4[_0xda9f('0x19')](_0x461b3c);_0x25054e[_0xda9f('0x19')](_0xdb0cd4);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x25054e,'footer':function(_0x1d4fa8,_0x218d3b){return{'text':_0x1d4fa8[_0xda9f('0x14')]()+_0xda9f('0x25')+_0x218d3b,'style':_0xda9f('0x26')};},'defaultStyle':{'font':_0xda9f('0x27')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':_0xda9f('0x28'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0xd504bf){var _0x48f7d0=0x1388;var _0x560f18;if(!_0xd504bf[0x0][_0xda9f('0x29')]){return analyticExtractedReport('Empty');}return db[_0xda9f('0x2a')][_0xda9f('0x2b')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xda9f('0x2c'),_0xda9f('0x2d')]})[_0xda9f('0x2e')](function(_0x4f9ba2){if(_0x4f9ba2){_0x560f18=_0x4f9ba2;_0x48f7d0=_0x560f18[_0xda9f('0x2d')]||0x3e8;}})[_0xda9f('0x2e')](function(){var _0x383351=[];var _0x43dfb9=0x0;if(_0x560f18[_0xda9f('0x2c')]){if(_0xd504bf&&_0xd504bf['length']){var _0x30bfb7=_[_0xda9f('0x2f')](_0xd504bf[0x0][_0xda9f('0x29')]/_0x48f7d0);var _0x507fd4=Number[_0xda9f('0x30')](_0xd504bf[0x0][_0xda9f('0x29')]/_0x48f7d0)?_0xd504bf[0x0][_0xda9f('0x29')]%_0x48f7d0:0x0;_0x30bfb7[_0xda9f('0x1c')](function(_0x358e5a){if(_0x358e5a>0x0){_0x43dfb9+=_0x48f7d0;}_0x383351['push'](dbH['sequelize'][_0xda9f('0x31')](util[_0xda9f('0x1d')](_0xda9f('0x32'),QUERY,_0x48f7d0,_0x43dfb9),{'type':dbH[_0xda9f('0x33')][_0xda9f('0x34')][_0xda9f('0x35')]}));});if(_0x507fd4>0x0){_0x43dfb9+=_0x48f7d0;_0x383351[_0xda9f('0x19')](dbH[_0xda9f('0x33')][_0xda9f('0x31')](util[_0xda9f('0x1d')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x507fd4,_0x43dfb9),{'type':dbH[_0xda9f('0x33')][_0xda9f('0x34')][_0xda9f('0x35')]}));}}}else{_0x383351[_0xda9f('0x19')](dbH[_0xda9f('0x33')][_0xda9f('0x31')](QUERY,{'type':dbH['sequelize'][_0xda9f('0x34')]['SELECT']}));}var _0x2a5ebb=path[_0xda9f('0x36')](PATH);var _0x31f4d1=path['basename'](PATH,'.pdf');var _0x4b4c95=_0x560f18[_0xda9f('0x2c')]&&_0x383351[_0xda9f('0x16')]>0x1;var _0x3b873e=[];if(!fs[_0xda9f('0x37')](path['join'](_0x2a5ebb,_0x31f4d1))&&_0x4b4c95){fs['mkdirSync'](path[_0xda9f('0x38')](_0x2a5ebb,_0x31f4d1));}return BPromise[_0xda9f('0x39')](_0x383351,function(_0x3460d2){_0x3b873e['push'](_0x3460d2);})['then'](function(){var _0xfb5b71=[];for(var _0x25396e=0x0;_0x25396e<_0x3b873e[_0xda9f('0x16')];_0x25396e+=0x1){var _0x716a0e=_0x3b873e[_0x25396e];var _0xbceda6=createTables(_[_0xda9f('0x3a')](_0x716a0e));var _0x3830a8;var _0x3c5292=getPDFDocDefinition(_0xbceda6);var _0x3c7d1a=getPDFPrinter();var _0x4174b9=_0x3c7d1a[_0xda9f('0x3b')](_0x3c5292);if(_0x4b4c95){_0x3830a8=path['join'](_0x2a5ebb,_0x31f4d1,util[_0xda9f('0x1d')](_0xda9f('0x3c'),_0x31f4d1,_0x25396e,_0xda9f('0x3d')));}else{_0x3830a8=path[_0xda9f('0x38')](_0x2a5ebb,util['format'](_0xda9f('0x3e'),_0x31f4d1,_0xda9f('0x3d')));}_0xfb5b71[_0xda9f('0x19')](writePDFDocument(_0x4174b9,_0x3830a8));}return Promise[_0xda9f('0x3f')](_0xfb5b71);})[_0xda9f('0x2e')](function(){if(_0x4b4c95){return new Promise(function(_0xd04edc){zipdir(path[_0xda9f('0x38')](_0x2a5ebb,_0x31f4d1),{'saveTo':path[_0xda9f('0x38')](_0x2a5ebb,util['format'](_0xda9f('0x3e'),_0x31f4d1,'zip'))},function(){rimraf(path['join'](_0x2a5ebb,_0x31f4d1),function(){});_0xd04edc(_0xda9f('0x40'));});});}})[_0xda9f('0x2e')](function(){if(!_0x4b4c95)return;rimraf(path[_0xda9f('0x38')](_0x2a5ebb,_0x31f4d1),function(){});})[_0xda9f('0x2e')](function(){logger[_0xda9f('0x41')](util[_0xda9f('0x1d')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xda9f('0x42')));return analyticExtractedReport(_0xda9f('0x43'),_0x4b4c95?util['format'](_0xda9f('0x3e'),_0x31f4d1,_0x4b4c95?_0xda9f('0x44'):_0xda9f('0x3d')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xda9f('0x41')](util[_0xda9f('0x1d')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xda9f('0x42')));return db['AnalyticExtractedReport'][_0xda9f('0x45')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xda9f('0x2e')](function(_0x17cf8c){EXTRACTED_REPORT=_0x17cf8c;return dbH[_0xda9f('0x33')][_0xda9f('0x31')](util[_0xda9f('0x1d')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0xda9f('0x33')]['QueryTypes'][_0xda9f('0x35')]});})[_0xda9f('0x2e')](extractReport)['catch'](function(_0xe26166){logger[_0xda9f('0x41')](util[_0xda9f('0x1d')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'PDF'),util[_0xda9f('0x46')](_0xe26166,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xda9f('0x47'));})[_0xda9f('0x48')](function(){process[_0xda9f('0x49')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x1eff17=new PdfPrinter({'Arial':{'normal':__dirname+_0xda9f('0x4a'),'bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+'/fonts/arial-bold-italic.ttf'}});return _0x1eff17;}function getPDFDocDefinitionFromHTML(_0x124b07,_0xd28349){var _0x390bc4=util['format'](_0xda9f('0x4b'),_0xd28349[_0xda9f('0x4c')],_0xd28349[_0xda9f('0x4d')]);var _0x2b17e2=moment()[_0xda9f('0x1d')](_0xda9f('0x4e'))['toString']();var _0x50009c=htmlToPdfmake(_0x124b07,{'window':window,'tableAutoSize':!![]});return{'content':[_0x50009c],'defaultStyle':{'font':_0xda9f('0x27')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xda9f('0x4f'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0xda9f('0x4f'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0xda9f('0x4f')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':_0xda9f('0x21')}];},'footer':function(_0x5ddd21,_0x13d386){return[{'text':util[_0xda9f('0x1d')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x390bc4,_0x5ddd21,_0x13d386,_0x2b17e2),'style':_0xda9f('0x26')}];}};}function writePDFDocument(_0xa17b97,_0x1559a4){return new Promise(function(_0x2c56fd,_0x181937){var _0x4a1e25=_0xa17b97[_0xda9f('0x50')](fs['createWriteStream'](_0x1559a4));_0x4a1e25['on'](_0xda9f('0x51'),function(){_0x2c56fd('finish');});_0x4a1e25['on'](_0xda9f('0x52'),function(_0x2f59c6){_0x181937(_0x2f59c6);});_0xa17b97['end']();});}exports['createPdfFromHTML']=function(_0x1b834c,_0xabf82d){var _0x579aca=getPDFPrinter();var _0x303514=getPDFDocDefinitionFromHTML(_0x1b834c,_0xabf82d);var _0x1bd186=_0x579aca[_0xda9f('0x3b')](_0x303514);return writePDFDocument(_0x1bd186,_0xabf82d[_0xda9f('0x1')])[_0xda9f('0x53')](function(_0x49b5ae){throw _0x49b5ae;});};