Built motion from commit 1efd3d96.|2.6.31
[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 _0xee13=['pageBreak','before','margin','landscape','\x20/\x20','footer','Arial','black','right','num','Empty','Setting','find','split','then','range','isInteger','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','basename','.pdf','existsSync','flatten','join','pdf','%s.%s','all','zip\x20finished','info','PDF','zip','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','inspect','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','interactionId','YYYY-MM-DD','center','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','createPdfFromHTML','createPdfKitDocument','util','path','moment','pdfmake/src/printer','rimraf','jsdom','JSDOM','bluebird','../../mysqldb','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','pick','toString','fill','auto','push','body','concat','chunk','forEach','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','format','length','header'];(function(_0x1f3aec,_0x24c18e){var _0x409f0d=function(_0x52b818){while(--_0x52b818){_0x1f3aec['push'](_0x1f3aec['shift']());}};_0x409f0d(++_0x24c18e);}(_0xee13,0x14c));var _0x3ee1=function(_0x30a239,_0x166cdd){_0x30a239=_0x30a239-0x0;var _0x50ed45=_0xee13[_0x30a239];return _0x50ed45;};'use strict';var _=require('lodash');var fs=require('fs');var util=require(_0x3ee1('0x0'));var path=require(_0x3ee1('0x1'));var moment=require(_0x3ee1('0x2'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x3ee1('0x3'));var zipdir=require('zip-dir');var rimraf=require(_0x3ee1('0x4'));var JSDOM=require(_0x3ee1('0x5'))[_0x3ee1('0x6')];var window=new JSDOM('')['window'];var BPromise=require(_0x3ee1('0x7'));var db=require(_0x3ee1('0x8'))['db'];var dbH=require(_0x3ee1('0x8'))['dbH'];var logger=require(_0x3ee1('0x9'))(_0x3ee1('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0x3ee1('0xb')][0x2]);var QUERY=process[_0x3ee1('0xb')][0x3];var PATH=process[_0x3ee1('0xb')][0x4];var NAME=process[_0x3ee1('0xb')][0x5];var FORMAT=_0x3ee1('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x1c55c5,_0xbc1e93){var _0x338ac4={'status':_0x1c55c5};var _0x51486b={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xbc1e93){_0x338ac4[_0x3ee1('0xd')]=_0xbc1e93;}return db[_0x3ee1('0xe')][_0x3ee1('0xf')](_0x338ac4,_0x51486b);}function getHeaders(_0x450f94){return _[_0x3ee1('0x10')](_0x450f94,function(_0xb2f5bf){return{'text':_0xb2f5bf,'style':'tableHeader'};});}function getRows(_0x268a60,_0x2ae1ef){return _[_0x3ee1('0x10')](_0x2ae1ef,function(_0x29bcb5){return _(_0x29bcb5)[_0x3ee1('0x11')](_0x268a60)[_0x3ee1('0x10')](function(_0x53e3fe){return _0x53e3fe?_[_0x3ee1('0x12')](_0x53e3fe):'';})['value']();});}function createTable(_0x3d3c9a,_0x586799){var _0x77e042={'widths':_[_0x3ee1('0x13')](Array(_0x3d3c9a['length']),0x91),'heights':function(_0x275d88){return _0x275d88===0x0?_0x3ee1('0x14'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x5743bc=getHeaders(_0x3d3c9a);_0x77e042['body'][_0x3ee1('0x15')](_0x5743bc);var _0x3e2b9b=getRows(_0x3d3c9a,_0x586799);_0x77e042[_0x3ee1('0x16')]=_0x77e042[_0x3ee1('0x16')][_0x3ee1('0x17')](_0x3e2b9b);return _0x77e042;}function createTables(_0x11a6ea){var _0x3fcf93=[];var _0x11f8f2=_[_0x3ee1('0x18')](Object['keys'](_0x11a6ea[0x0]),0x5);_0x11f8f2[_0x3ee1('0x19')](function(_0x39c377){_0x3fcf93[_0x3ee1('0x15')](createTable(_0x39c377,_0x11a6ea));});return _0x3fcf93;}function getPDFDocDefinition(_0x3b4c0f){var _0x1c77bf=util['format'](_0x3ee1('0x1a'),NAME,EXTRACTED_REPORT[_0x3ee1('0x1b')],moment(EXTRACTED_REPORT[_0x3ee1('0x1c')])[_0x3ee1('0x1d')](FORMAT),moment(EXTRACTED_REPORT['endDate'])[_0x3ee1('0x1d')](FORMAT));var _0xaab674=[];for(var _0x225bc1=0x0;_0x225bc1<_0x3b4c0f[_0x3ee1('0x1e')];_0x225bc1++){var _0x225fd5=[];if(_0x225bc1===0x0){_0x225fd5[_0x3ee1('0x15')]({'text':_0x1c77bf,'style':_0x3ee1('0x1f')});}var _0x2c29b1={'table':_0x3b4c0f[_0x225bc1]};if(_0x225bc1>0x0){_0x2c29b1[_0x3ee1('0x20')]=_0x3ee1('0x21');_0x2c29b1[_0x3ee1('0x22')]=[0x0,0x46,0x0,0x0];}_0x225fd5['push'](_0x2c29b1);_0xaab674[_0x3ee1('0x15')](_0x225fd5);}return{'pageSize':'A4','pageOrientation':_0x3ee1('0x23'),'content':_0xaab674,'footer':function(_0xdda56c,_0x397837){return{'text':_0xdda56c[_0x3ee1('0x12')]()+_0x3ee1('0x24')+_0x397837,'style':_0x3ee1('0x25')};},'defaultStyle':{'font':_0x3ee1('0x26')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x3ee1('0x27')},'footer':{'alignment':_0x3ee1('0x28'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x358240){var _0x1e5cbf=0x1388;var _0x28d9f4;if(!_0x358240[0x0][_0x3ee1('0x29')]){return analyticExtractedReport(_0x3ee1('0x2a'));}return db[_0x3ee1('0x2b')][_0x3ee1('0x2c')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x3ee1('0x2d'),'splitSizePdf']})[_0x3ee1('0x2e')](function(_0x1f69c5){if(_0x1f69c5){_0x28d9f4=_0x1f69c5;_0x1e5cbf=_0x28d9f4['splitSizePdf']||0x3e8;}})['then'](function(){var _0x4bb784=[];var _0x3e58bc=0x0;if(_0x28d9f4[_0x3ee1('0x2d')]){if(_0x358240&&_0x358240['length']){var _0x4562b7=_[_0x3ee1('0x2f')](_0x358240[0x0][_0x3ee1('0x29')]/_0x1e5cbf);var _0x3178ec=Number[_0x3ee1('0x30')](_0x358240[0x0]['num']/_0x1e5cbf)?_0x358240[0x0]['num']%_0x1e5cbf:0x0;_0x4562b7[_0x3ee1('0x19')](function(_0x2c18cc){if(_0x2c18cc>0x0){_0x3e58bc+=_0x1e5cbf;}_0x4bb784[_0x3ee1('0x15')](dbH[_0x3ee1('0x31')][_0x3ee1('0x32')](util[_0x3ee1('0x1d')](_0x3ee1('0x33'),QUERY,_0x1e5cbf,_0x3e58bc),{'type':dbH['sequelize'][_0x3ee1('0x34')][_0x3ee1('0x35')]}));});if(_0x3178ec>0x0){_0x3e58bc+=_0x1e5cbf;_0x4bb784[_0x3ee1('0x15')](dbH[_0x3ee1('0x31')][_0x3ee1('0x32')](util[_0x3ee1('0x1d')](_0x3ee1('0x33'),QUERY,_0x3178ec,_0x3e58bc),{'type':dbH[_0x3ee1('0x31')][_0x3ee1('0x34')][_0x3ee1('0x35')]}));}}}else{_0x4bb784['push'](dbH[_0x3ee1('0x31')][_0x3ee1('0x32')](QUERY,{'type':dbH[_0x3ee1('0x31')][_0x3ee1('0x34')]['SELECT']}));}var _0x208b9b=path['dirname'](PATH);var _0x50fafa=path[_0x3ee1('0x36')](PATH,_0x3ee1('0x37'));var _0xa9a8cf=_0x28d9f4[_0x3ee1('0x2d')]&&_0x4bb784[_0x3ee1('0x1e')]>0x1;var _0x1bf920=[];if(!fs[_0x3ee1('0x38')](path['join'](_0x208b9b,_0x50fafa))&&_0xa9a8cf){fs['mkdirSync'](path['join'](_0x208b9b,_0x50fafa));}return BPromise['each'](_0x4bb784,function(_0x52d3b2){_0x1bf920[_0x3ee1('0x15')](_0x52d3b2);})[_0x3ee1('0x2e')](function(){var _0x50a0ac=[];for(var _0xc6e1ad=0x0;_0xc6e1ad<_0x1bf920[_0x3ee1('0x1e')];_0xc6e1ad+=0x1){var _0x1b7895=_0x1bf920[_0xc6e1ad];var _0x249cff=createTables(_[_0x3ee1('0x39')](_0x1b7895));var _0x11bf84;var _0x598bc8=getPDFDocDefinition(_0x249cff);var _0x246d39=getPDFPrinter();var _0x41ba0e=_0x246d39['createPdfKitDocument'](_0x598bc8);if(_0xa9a8cf){_0x11bf84=path[_0x3ee1('0x3a')](_0x208b9b,_0x50fafa,util[_0x3ee1('0x1d')]('%s%d.%s',_0x50fafa,_0xc6e1ad,_0x3ee1('0x3b')));}else{_0x11bf84=path[_0x3ee1('0x3a')](_0x208b9b,util[_0x3ee1('0x1d')](_0x3ee1('0x3c'),_0x50fafa,_0x3ee1('0x3b')));}_0x50a0ac[_0x3ee1('0x15')](writePDFDocument(_0x41ba0e,_0x11bf84));}return Promise[_0x3ee1('0x3d')](_0x50a0ac);})[_0x3ee1('0x2e')](function(){if(_0xa9a8cf){return new Promise(function(_0x2b0911){zipdir(path[_0x3ee1('0x3a')](_0x208b9b,_0x50fafa),{'saveTo':path[_0x3ee1('0x3a')](_0x208b9b,util['format'](_0x3ee1('0x3c'),_0x50fafa,'zip'))},function(){rimraf(path[_0x3ee1('0x3a')](_0x208b9b,_0x50fafa),function(){});_0x2b0911(_0x3ee1('0x3e'));});});}})[_0x3ee1('0x2e')](function(){if(!_0xa9a8cf)return;rimraf(path['join'](_0x208b9b,_0x50fafa),function(){});})[_0x3ee1('0x2e')](function(){logger[_0x3ee1('0x3f')](util[_0x3ee1('0x1d')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x3ee1('0x40')));return analyticExtractedReport('Completed',_0xa9a8cf?util[_0x3ee1('0x1d')](_0x3ee1('0x3c'),_0x50fafa,_0xa9a8cf?_0x3ee1('0x41'):'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x3ee1('0x3f')](util[_0x3ee1('0x1d')](_0x3ee1('0x42'),EXTRACTED_REPORT_ID,'PDF'));return db['AnalyticExtractedReport'][_0x3ee1('0x43')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x3ee1('0x2e')](function(_0x5aaec1){EXTRACTED_REPORT=_0x5aaec1;return dbH['sequelize'][_0x3ee1('0x32')](util['format'](_0x3ee1('0x44'),QUERY),{'type':dbH[_0x3ee1('0x31')]['QueryTypes'][_0x3ee1('0x35')]});})['then'](extractReport)[_0x3ee1('0x45')](function(_0x13a4ac){logger['info'](util[_0x3ee1('0x1d')](_0x3ee1('0x46'),EXTRACTED_REPORT_ID,_0x3ee1('0x40')),util[_0x3ee1('0x47')](_0x13a4ac,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x3ee1('0x48'));})[_0x3ee1('0x49')](function(){process[_0x3ee1('0x4a')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x23c30f=new PdfPrinter({'Arial':{'normal':__dirname+_0x3ee1('0x4b'),'bold':__dirname+_0x3ee1('0x4c'),'italics':__dirname+_0x3ee1('0x4d'),'bolditalics':__dirname+_0x3ee1('0x4e')}});return _0x23c30f;}function getPDFDocDefinitionFromHTML(_0x1590db,_0x5daa0e){var _0x35cddb=util[_0x3ee1('0x1d')](_0x3ee1('0x4f'),_0x5daa0e['channel'],_0x5daa0e[_0x3ee1('0x50')]);var _0x3d6cd6=moment()[_0x3ee1('0x1d')](_0x3ee1('0x51'))[_0x3ee1('0x12')]();var _0x4976e9=htmlToPdfmake(_0x1590db,{'window':window,'tableAutoSize':!![]});return{'content':[_0x4976e9],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x3ee1('0x52'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x3ee1('0x52'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x3ee1('0x52')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':_0x3ee1('0x1f')}];},'footer':function(_0x3d4ef4,_0x1a1f15){return[{'text':util['format'](_0x3ee1('0x53'),_0x35cddb,_0x3d4ef4,_0x1a1f15,_0x3d6cd6),'style':'footer'}];}};}function writePDFDocument(_0x510ce4,_0x2ba9b2){return new Promise(function(_0x440615,_0x929809){var _0x3d2aa0=_0x510ce4[_0x3ee1('0x54')](fs[_0x3ee1('0x55')](_0x2ba9b2));_0x3d2aa0['on'](_0x3ee1('0x56'),function(){_0x440615(_0x3ee1('0x56'));});_0x3d2aa0['on'](_0x3ee1('0x57'),function(_0x5f2e16){_0x929809(_0x5f2e16);});_0x510ce4[_0x3ee1('0x58')]();});}exports[_0x3ee1('0x59')]=function(_0x556dbc,_0x5b536b){var _0x28046d=getPDFPrinter();var _0x1603ca=getPDFDocDefinitionFromHTML(_0x556dbc,_0x5b536b);var _0x1c15a3=_0x28046d[_0x3ee1('0x5a')](_0x1603ca);return writePDFDocument(_0x1c15a3,_0x5b536b[_0x3ee1('0x1')])[_0x3ee1('0x45')](function(_0x3feac5){throw _0x3feac5;});};