Built motion from commit 9d0783e6.|2.6.13
[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 _0x9f62=['interactionId','YYYY-MM-DD','Arial','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','createPdfFromHTML','lodash','path','html-to-pdfmake','pdfmake/src/printer','JSDOM','window','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','toString','value','fill','length','auto','body','push','concat','keys','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','endDate','header','before','margin','landscape','\x20/\x20','footer','right','num','Empty','Setting','split','splitSizePdf','then','range','isInteger','forEach','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','sequelize','QueryTypes','dirname','basename','.pdf','existsSync','join','mkdirSync','each','flatten','pdf','all','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','%s.%s','zip','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','%s\x20#%d'];(function(_0x44038f,_0x28824c){var _0x5531bf=function(_0x319de3){while(--_0x319de3){_0x44038f['push'](_0x44038f['shift']());}};_0x5531bf(++_0x28824c);}(_0x9f62,0xc0));var _0x29f6=function(_0x1f06b5,_0x5e7ea4){_0x1f06b5=_0x1f06b5-0x0;var _0x555196=_0x9f62[_0x1f06b5];return _0x555196;};'use strict';var _=require(_0x29f6('0x0'));var fs=require('fs');var util=require('util');var path=require(_0x29f6('0x1'));var moment=require('moment');var htmlToPdfmake=require(_0x29f6('0x2'));var PdfPrinter=require(_0x29f6('0x3'));var zipdir=require('zip-dir');var rimraf=require('rimraf');var JSDOM=require('jsdom')[_0x29f6('0x4')];var window=new JSDOM('')[_0x29f6('0x5')];var BPromise=require(_0x29f6('0x6'));var db=require(_0x29f6('0x7'))['db'];var dbH=require(_0x29f6('0x7'))[_0x29f6('0x8')];var logger=require(_0x29f6('0x9'))(_0x29f6('0xa'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x29f6('0xb')][0x4];var NAME=process[_0x29f6('0xb')][0x5];var FORMAT=_0x29f6('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x1cbe86,_0x1c4e9b){var _0x2d2dd6={'status':_0x1cbe86};var _0x3e03aa={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1c4e9b){_0x2d2dd6[_0x29f6('0xd')]=_0x1c4e9b;}return db[_0x29f6('0xe')][_0x29f6('0xf')](_0x2d2dd6,_0x3e03aa);}function getHeaders(_0x1c3e52){return _['map'](_0x1c3e52,function(_0x339e77){return{'text':_0x339e77,'style':'tableHeader'};});}function getRows(_0x38ea5d,_0xd709c1){return _[_0x29f6('0x10')](_0xd709c1,function(_0x5a91c2){return _(_0x5a91c2)['pick'](_0x38ea5d)[_0x29f6('0x10')](function(_0x56d940){return _0x56d940?_[_0x29f6('0x11')](_0x56d940):'';})[_0x29f6('0x12')]();});}function createTable(_0x8a5f50,_0x14420a){var _0x4ad058={'widths':_[_0x29f6('0x13')](Array(_0x8a5f50[_0x29f6('0x14')]),0x91),'heights':function(_0x2d609c){return _0x2d609c===0x0?_0x29f6('0x15'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x56063f=getHeaders(_0x8a5f50);_0x4ad058[_0x29f6('0x16')][_0x29f6('0x17')](_0x56063f);var _0x580caa=getRows(_0x8a5f50,_0x14420a);_0x4ad058[_0x29f6('0x16')]=_0x4ad058[_0x29f6('0x16')][_0x29f6('0x18')](_0x580caa);return _0x4ad058;}function createTables(_0x1660e7){var _0x2f8d78=[];var _0x33ff07=_['chunk'](Object[_0x29f6('0x19')](_0x1660e7[0x0]),0x5);_0x33ff07['forEach'](function(_0x38e059){_0x2f8d78['push'](createTable(_0x38e059,_0x1660e7));});return _0x2f8d78;}function getPDFDocDefinition(_0x131199){var _0x4a33b6=util[_0x29f6('0x1a')](_0x29f6('0x1b'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT['startDate'])[_0x29f6('0x1a')](FORMAT),moment(EXTRACTED_REPORT[_0x29f6('0x1c')])[_0x29f6('0x1a')](FORMAT));var _0x264f66=[];for(var _0x50a3b8=0x0;_0x50a3b8<_0x131199[_0x29f6('0x14')];_0x50a3b8++){var _0x49255d=[];if(_0x50a3b8===0x0){_0x49255d[_0x29f6('0x17')]({'text':_0x4a33b6,'style':_0x29f6('0x1d')});}var _0x1184f3={'table':_0x131199[_0x50a3b8]};if(_0x50a3b8>0x0){_0x1184f3['pageBreak']=_0x29f6('0x1e');_0x1184f3[_0x29f6('0x1f')]=[0x0,0x46,0x0,0x0];}_0x49255d[_0x29f6('0x17')](_0x1184f3);_0x264f66[_0x29f6('0x17')](_0x49255d);}return{'pageSize':'A4','pageOrientation':_0x29f6('0x20'),'content':_0x264f66,'footer':function(_0x3ab6d6,_0x37f044){return{'text':_0x3ab6d6[_0x29f6('0x11')]()+_0x29f6('0x21')+_0x37f044,'style':_0x29f6('0x22')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':_0x29f6('0x23'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x4d74ee){var _0x853b7f=0x1388;var _0x3083c5;if(!_0x4d74ee[0x0][_0x29f6('0x24')]){return analyticExtractedReport(_0x29f6('0x25'));}return db[_0x29f6('0x26')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x29f6('0x27'),_0x29f6('0x28')]})[_0x29f6('0x29')](function(_0x2b004b){if(_0x2b004b){_0x3083c5=_0x2b004b;_0x853b7f=_0x3083c5[_0x29f6('0x28')]||0x3e8;}})[_0x29f6('0x29')](function(){var _0x3d1060=[];var _0x21f073=0x0;if(_0x3083c5['split']){if(_0x4d74ee&&_0x4d74ee[_0x29f6('0x14')]){var _0x131344=_[_0x29f6('0x2a')](_0x4d74ee[0x0][_0x29f6('0x24')]/_0x853b7f);var _0x14c986=Number[_0x29f6('0x2b')](_0x4d74ee[0x0]['num']/_0x853b7f)?_0x4d74ee[0x0][_0x29f6('0x24')]%_0x853b7f:0x0;_0x131344[_0x29f6('0x2c')](function(_0x1d7f18){if(_0x1d7f18>0x0){_0x21f073+=_0x853b7f;}_0x3d1060[_0x29f6('0x17')](dbH['sequelize'][_0x29f6('0x2d')](util[_0x29f6('0x1a')](_0x29f6('0x2e'),QUERY,_0x853b7f,_0x21f073),{'type':dbH['sequelize']['QueryTypes'][_0x29f6('0x2f')]}));});if(_0x14c986>0x0){_0x21f073+=_0x853b7f;_0x3d1060['push'](dbH[_0x29f6('0x30')][_0x29f6('0x2d')](util[_0x29f6('0x1a')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x14c986,_0x21f073),{'type':dbH[_0x29f6('0x30')][_0x29f6('0x31')][_0x29f6('0x2f')]}));}}}else{_0x3d1060[_0x29f6('0x17')](dbH[_0x29f6('0x30')]['query'](QUERY,{'type':dbH[_0x29f6('0x30')]['QueryTypes'][_0x29f6('0x2f')]}));}var _0x219336=path[_0x29f6('0x32')](PATH);var _0x4fb5f7=path[_0x29f6('0x33')](PATH,_0x29f6('0x34'));var _0x4a3c8c=_0x3083c5['split']&&_0x3d1060[_0x29f6('0x14')]>0x1;var _0x161859=[];if(!fs[_0x29f6('0x35')](path[_0x29f6('0x36')](_0x219336,_0x4fb5f7))&&_0x4a3c8c){fs[_0x29f6('0x37')](path[_0x29f6('0x36')](_0x219336,_0x4fb5f7));}return BPromise[_0x29f6('0x38')](_0x3d1060,function(_0x4f7c89){_0x161859[_0x29f6('0x17')](_0x4f7c89);})[_0x29f6('0x29')](function(){var _0x49d771=[];for(var _0xb3f908=0x0;_0xb3f908<_0x161859['length'];_0xb3f908+=0x1){var _0x4e5059=_0x161859[_0xb3f908];var _0x3eb4fa=createTables(_[_0x29f6('0x39')](_0x4e5059));var _0x3ab8ac;var _0xefecca=getPDFDocDefinition(_0x3eb4fa);var _0x5a3dd1=getPDFPrinter();var _0x5eba10=_0x5a3dd1['createPdfKitDocument'](_0xefecca);if(_0x4a3c8c){_0x3ab8ac=path[_0x29f6('0x36')](_0x219336,_0x4fb5f7,util[_0x29f6('0x1a')]('%s%d.%s',_0x4fb5f7,_0xb3f908,_0x29f6('0x3a')));}else{_0x3ab8ac=path[_0x29f6('0x36')](_0x219336,util['format']('%s.%s',_0x4fb5f7,_0x29f6('0x3a')));}_0x49d771[_0x29f6('0x17')](writePDFDocument(_0x5eba10,_0x3ab8ac));}return Promise[_0x29f6('0x3b')](_0x49d771);})[_0x29f6('0x29')](function(){if(_0x4a3c8c){return new Promise(function(_0x4616cb){zipdir(path[_0x29f6('0x36')](_0x219336,_0x4fb5f7),{'saveTo':path['join'](_0x219336,util[_0x29f6('0x1a')]('%s.%s',_0x4fb5f7,'zip'))},function(){rimraf(path[_0x29f6('0x36')](_0x219336,_0x4fb5f7),function(){});_0x4616cb(_0x29f6('0x3c'));});});}})[_0x29f6('0x29')](function(){if(!_0x4a3c8c)return;rimraf(path[_0x29f6('0x36')](_0x219336,_0x4fb5f7),function(){});})['then'](function(){logger[_0x29f6('0x3d')](util[_0x29f6('0x1a')](_0x29f6('0x3e'),EXTRACTED_REPORT_ID,_0x29f6('0x3f')));return analyticExtractedReport(_0x29f6('0x40'),_0x4a3c8c?util[_0x29f6('0x1a')](_0x29f6('0x41'),_0x4fb5f7,_0x4a3c8c?_0x29f6('0x42'):_0x29f6('0x3a')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x29f6('0x3d')](util[_0x29f6('0x1a')](_0x29f6('0x43'),EXTRACTED_REPORT_ID,_0x29f6('0x3f')));return db[_0x29f6('0xe')][_0x29f6('0x44')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x29f6('0x29')](function(_0x513dff){EXTRACTED_REPORT=_0x513dff;return dbH[_0x29f6('0x30')][_0x29f6('0x2d')](util[_0x29f6('0x1a')](_0x29f6('0x45'),QUERY),{'type':dbH[_0x29f6('0x30')][_0x29f6('0x31')]['SELECT']});})[_0x29f6('0x29')](extractReport)['catch'](function(_0x4bbc66){logger[_0x29f6('0x3d')](util[_0x29f6('0x1a')](_0x29f6('0x46'),EXTRACTED_REPORT_ID,_0x29f6('0x3f')),util[_0x29f6('0x47')](_0x4bbc66,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x29f6('0x48'));})[_0x29f6('0x49')](function(){process[_0x29f6('0x4a')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x49484f=new PdfPrinter({'Arial':{'normal':__dirname+'/fonts/arial-regular.ttf','bold':__dirname+_0x29f6('0x4b'),'italics':__dirname+_0x29f6('0x4c'),'bolditalics':__dirname+'/fonts/arial-bold-italic.ttf'}});return _0x49484f;}function getPDFDocDefinitionFromHTML(_0x4f9a94,_0x12f409){var _0x5a36c1=util[_0x29f6('0x1a')](_0x29f6('0x4d'),_0x12f409['channel'],_0x12f409[_0x29f6('0x4e')]);var _0x57533a=moment()[_0x29f6('0x1a')](_0x29f6('0x4f'))[_0x29f6('0x11')]();var _0x196e5e=htmlToPdfmake(_0x4f9a94,{'window':window,'tableAutoSize':!![]});return{'content':[_0x196e5e],'defaultStyle':{'font':_0x29f6('0x50')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x29f6('0x51'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x29f6('0x52'),'style':_0x29f6('0x1d')}];},'footer':function(_0x14f153,_0x391cfc){return[{'text':util[_0x29f6('0x1a')](_0x29f6('0x53'),_0x5a36c1,_0x14f153,_0x391cfc,_0x57533a),'style':_0x29f6('0x22')}];}};}function writePDFDocument(_0x516ae9,_0x1b40da){return new Promise(function(_0x311728,_0x471525){var _0x51fad4=_0x516ae9[_0x29f6('0x54')](fs[_0x29f6('0x55')](_0x1b40da));_0x51fad4['on'](_0x29f6('0x56'),function(){_0x311728(_0x29f6('0x56'));});_0x51fad4['on'](_0x29f6('0x57'),function(_0x53078f){_0x471525(_0x53078f);});_0x516ae9[_0x29f6('0x58')]();});}exports[_0x29f6('0x59')]=function(_0x4eb1f8,_0x5b50b8){var _0x24a388=getPDFPrinter();var _0x3bba10=getPDFDocDefinitionFromHTML(_0x4eb1f8,_0x5b50b8);var _0x35a0b6=_0x24a388['createPdfKitDocument'](_0x3bba10);return writePDFDocument(_0x35a0b6,_0x5b50b8['path'])['catch'](function(_0x3289b4){throw _0x3289b4;});};