Built motion from commit 14588770.|2.5.38
[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 _0x7cb1=['lodash','util','path','moment','html-to-pdfmake','pdfmake/src/printer','jsdom','window','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','tableHeader','pick','toString','value','fill','length','push','body','concat','chunk','keys','forEach','format','name','header','pageBreak','margin','landscape','footer','Arial','black','right','find','splitSizePdf','then','range','num','isInteger','sequelize','query','QueryTypes','SELECT','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.pdf','split','existsSync','each','flatten','join','%s%d.%s','pdf','all','%s.%s','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','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','%s\x20#%d','channel','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','end','createPdfFromHTML','createPdfKitDocument'];(function(_0x3816c2,_0xb221e1){var _0x144669=function(_0x149c29){while(--_0x149c29){_0x3816c2['push'](_0x3816c2['shift']());}};_0x144669(++_0xb221e1);}(_0x7cb1,0xb6));var _0x17cb=function(_0x330873,_0x1198b5){_0x330873=_0x330873-0x0;var _0x2ffd4d=_0x7cb1[_0x330873];return _0x2ffd4d;};'use strict';var _=require(_0x17cb('0x0'));var fs=require('fs');var util=require(_0x17cb('0x1'));var path=require(_0x17cb('0x2'));var moment=require(_0x17cb('0x3'));var htmlToPdfmake=require(_0x17cb('0x4'));var PdfPrinter=require(_0x17cb('0x5'));var zipdir=require('zip-dir');var rimraf=require('rimraf');var JSDOM=require(_0x17cb('0x6'))['JSDOM'];var window=new JSDOM('')[_0x17cb('0x7')];var BPromise=require('bluebird');var db=require(_0x17cb('0x8'))['db'];var dbH=require(_0x17cb('0x8'))[_0x17cb('0x9')];var logger=require(_0x17cb('0xa'))(_0x17cb('0xb'));var EXTRACTED_REPORT_ID=Number(process[_0x17cb('0xc')][0x2]);var QUERY=process[_0x17cb('0xc')][0x3];var PATH=process[_0x17cb('0xc')][0x4];var NAME=process[_0x17cb('0xc')][0x5];var FORMAT=_0x17cb('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x1193de,_0x3a4b11){var _0x11797c={'status':_0x1193de};var _0x595155={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x3a4b11){_0x11797c[_0x17cb('0xe')]=_0x3a4b11;}return db[_0x17cb('0xf')][_0x17cb('0x10')](_0x11797c,_0x595155);}function getHeaders(_0x401a4a){return _[_0x17cb('0x11')](_0x401a4a,function(_0x4de889){return{'text':_0x4de889,'style':_0x17cb('0x12')};});}function getRows(_0x18783d,_0x15c7c7){return _[_0x17cb('0x11')](_0x15c7c7,function(_0xfe5fee){return _(_0xfe5fee)[_0x17cb('0x13')](_0x18783d)[_0x17cb('0x11')](function(_0x4d5ccc){return _0x4d5ccc?_[_0x17cb('0x14')](_0x4d5ccc):'';})[_0x17cb('0x15')]();});}function createTable(_0x1276b2,_0x4eb1bf){var _0x26b0b0={'widths':_[_0x17cb('0x16')](Array(_0x1276b2[_0x17cb('0x17')]),0x91),'heights':function(_0x29d635){return _0x29d635===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x5a227d=getHeaders(_0x1276b2);_0x26b0b0['body'][_0x17cb('0x18')](_0x5a227d);var _0x28df6f=getRows(_0x1276b2,_0x4eb1bf);_0x26b0b0[_0x17cb('0x19')]=_0x26b0b0[_0x17cb('0x19')][_0x17cb('0x1a')](_0x28df6f);return _0x26b0b0;}function createTables(_0x5cd507){var _0x30297f=[];var _0x3f582a=_[_0x17cb('0x1b')](Object[_0x17cb('0x1c')](_0x5cd507[0x0]),0x5);_0x3f582a[_0x17cb('0x1d')](function(_0x4580cf){_0x30297f[_0x17cb('0x18')](createTable(_0x4580cf,_0x5cd507));});return _0x30297f;}function getPDFDocDefinition(_0x505148){var _0x41dbe8=util[_0x17cb('0x1e')]('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT[_0x17cb('0x1f')],moment(EXTRACTED_REPORT['startDate'])[_0x17cb('0x1e')](FORMAT),moment(EXTRACTED_REPORT['endDate'])[_0x17cb('0x1e')](FORMAT));var _0x6ad508=[];for(var _0x2b390c=0x0;_0x2b390c<_0x505148['length'];_0x2b390c++){var _0x159bd9=[];if(_0x2b390c===0x0){_0x159bd9[_0x17cb('0x18')]({'text':_0x41dbe8,'style':_0x17cb('0x20')});}var _0xa923ab={'table':_0x505148[_0x2b390c]};if(_0x2b390c>0x0){_0xa923ab[_0x17cb('0x21')]='before';_0xa923ab[_0x17cb('0x22')]=[0x0,0x46,0x0,0x0];}_0x159bd9[_0x17cb('0x18')](_0xa923ab);_0x6ad508[_0x17cb('0x18')](_0x159bd9);}return{'pageSize':'A4','pageOrientation':_0x17cb('0x23'),'content':_0x6ad508,'footer':function(_0x54e8fe,_0x1cc596){return{'text':_0x54e8fe['toString']()+'\x20/\x20'+_0x1cc596,'style':_0x17cb('0x24')};},'defaultStyle':{'font':_0x17cb('0x25')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x17cb('0x26')},'footer':{'alignment':_0x17cb('0x27'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x5f4c8b){var _0x2fc526=0x1388;var _0x4fcebc;if(!_0x5f4c8b[0x0]['num']){return analyticExtractedReport('Empty');}return db['Setting'][_0x17cb('0x28')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x17cb('0x29')]})[_0x17cb('0x2a')](function(_0x15eb8d){if(_0x15eb8d){_0x4fcebc=_0x15eb8d;_0x2fc526=_0x4fcebc['splitSizePdf']||0x3e8;}})['then'](function(){var _0x43ad52=[];var _0x44ce64=0x0;if(_0x4fcebc['split']){if(_0x5f4c8b&&_0x5f4c8b[_0x17cb('0x17')]){var _0x3ef3e5=_[_0x17cb('0x2b')](_0x5f4c8b[0x0][_0x17cb('0x2c')]/_0x2fc526);var _0x3b2a17=Number[_0x17cb('0x2d')](_0x5f4c8b[0x0]['num']/_0x2fc526)?_0x5f4c8b[0x0][_0x17cb('0x2c')]%_0x2fc526:0x0;_0x3ef3e5[_0x17cb('0x1d')](function(_0x5ce1ba){if(_0x5ce1ba>0x0){_0x44ce64+=_0x2fc526;}_0x43ad52[_0x17cb('0x18')](dbH[_0x17cb('0x2e')][_0x17cb('0x2f')](util[_0x17cb('0x1e')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x2fc526,_0x44ce64),{'type':dbH['sequelize'][_0x17cb('0x30')][_0x17cb('0x31')]}));});if(_0x3b2a17>0x0){_0x44ce64+=_0x2fc526;_0x43ad52[_0x17cb('0x18')](dbH[_0x17cb('0x2e')]['query'](util[_0x17cb('0x1e')](_0x17cb('0x32'),QUERY,_0x3b2a17,_0x44ce64),{'type':dbH['sequelize'][_0x17cb('0x30')][_0x17cb('0x31')]}));}}}else{_0x43ad52['push'](dbH[_0x17cb('0x2e')][_0x17cb('0x2f')](QUERY,{'type':dbH[_0x17cb('0x2e')][_0x17cb('0x30')]['SELECT']}));}var _0x445335=path[_0x17cb('0x33')](PATH);var _0x4c466b=path[_0x17cb('0x34')](PATH,_0x17cb('0x35'));var _0x40dcdf=_0x4fcebc[_0x17cb('0x36')]&&_0x43ad52[_0x17cb('0x17')]>0x1;var _0x51dc44=[];if(!fs[_0x17cb('0x37')](path['join'](_0x445335,_0x4c466b))&&_0x40dcdf){fs['mkdirSync'](path['join'](_0x445335,_0x4c466b));}return BPromise[_0x17cb('0x38')](_0x43ad52,function(_0x27d38c){_0x51dc44[_0x17cb('0x18')](_0x27d38c);})[_0x17cb('0x2a')](function(){var _0x3d92bb=[];for(var _0x242baf=0x0;_0x242baf<_0x51dc44[_0x17cb('0x17')];_0x242baf+=0x1){var _0x557329=_0x51dc44[_0x242baf];var _0x41e3fd=createTables(_[_0x17cb('0x39')](_0x557329));var _0x4dab17;var _0x517503=getPDFDocDefinition(_0x41e3fd);var _0x46f005=getPDFPrinter();var _0x4d646c=_0x46f005['createPdfKitDocument'](_0x517503);if(_0x40dcdf){_0x4dab17=path[_0x17cb('0x3a')](_0x445335,_0x4c466b,util[_0x17cb('0x1e')](_0x17cb('0x3b'),_0x4c466b,_0x242baf,'pdf'));}else{_0x4dab17=path[_0x17cb('0x3a')](_0x445335,util['format']('%s.%s',_0x4c466b,_0x17cb('0x3c')));}_0x3d92bb[_0x17cb('0x18')](writePDFDocument(_0x4d646c,_0x4dab17));}return Promise[_0x17cb('0x3d')](_0x3d92bb);})[_0x17cb('0x2a')](function(){if(_0x40dcdf){return new Promise(function(_0x1e93f0){zipdir(path[_0x17cb('0x3a')](_0x445335,_0x4c466b),{'saveTo':path[_0x17cb('0x3a')](_0x445335,util[_0x17cb('0x1e')](_0x17cb('0x3e'),_0x4c466b,_0x17cb('0x3f')))},function(){rimraf(path[_0x17cb('0x3a')](_0x445335,_0x4c466b),function(){});_0x1e93f0(_0x17cb('0x40'));});});}})['then'](function(){if(!_0x40dcdf)return;rimraf(path[_0x17cb('0x3a')](_0x445335,_0x4c466b),function(){});})[_0x17cb('0x2a')](function(){logger[_0x17cb('0x41')](util[_0x17cb('0x1e')](_0x17cb('0x42'),EXTRACTED_REPORT_ID,_0x17cb('0x43')));return analyticExtractedReport(_0x17cb('0x44'),_0x40dcdf?util[_0x17cb('0x1e')](_0x17cb('0x3e'),_0x4c466b,_0x40dcdf?'zip':_0x17cb('0x3c')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x17cb('0x41')](util[_0x17cb('0x1e')](_0x17cb('0x45'),EXTRACTED_REPORT_ID,'PDF'));return db[_0x17cb('0xf')][_0x17cb('0x46')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x17cb('0x2a')](function(_0x33269b){EXTRACTED_REPORT=_0x33269b;return dbH[_0x17cb('0x2e')][_0x17cb('0x2f')](util[_0x17cb('0x1e')](_0x17cb('0x47'),QUERY),{'type':dbH[_0x17cb('0x2e')][_0x17cb('0x30')][_0x17cb('0x31')]});})[_0x17cb('0x2a')](extractReport)[_0x17cb('0x48')](function(_0x502f11){logger[_0x17cb('0x41')](util['format'](_0x17cb('0x49'),EXTRACTED_REPORT_ID,'PDF'),util[_0x17cb('0x4a')](_0x502f11,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x17cb('0x4b'));})[_0x17cb('0x4c')](function(){process[_0x17cb('0x4d')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x1e6680=new PdfPrinter({'Arial':{'normal':__dirname+_0x17cb('0x4e'),'bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+'/fonts/arial-bold-italic.ttf'}});return _0x1e6680;}function getPDFDocDefinitionFromHTML(_0x200093,_0x4c5663){var _0x3a0725=util[_0x17cb('0x1e')](_0x17cb('0x4f'),_0x4c5663[_0x17cb('0x50')],_0x4c5663[_0x17cb('0x51')]);var _0x16c80c=moment()[_0x17cb('0x1e')](_0x17cb('0x52'))[_0x17cb('0x14')]();var _0x4eb5aa=htmlToPdfmake(_0x200093,{'window':window,'tableAutoSize':!![]});return{'content':[_0x4eb5aa],'defaultStyle':{'font':_0x17cb('0x25')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x17cb('0x53'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x17cb('0x53'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x17cb('0x53')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':_0x17cb('0x20')}];},'footer':function(_0x1ce748,_0x1b3c40){return[{'text':util['format'](_0x17cb('0x54'),_0x3a0725,_0x1ce748,_0x1b3c40,_0x16c80c),'style':'footer'}];}};}function writePDFDocument(_0x58cf11,_0x3427e7){return new Promise(function(_0x28cf5d,_0x41c63b){var _0x4850c2=_0x58cf11[_0x17cb('0x55')](fs[_0x17cb('0x56')](_0x3427e7));_0x4850c2['on'](_0x17cb('0x57'),function(){_0x28cf5d('finish');});_0x4850c2['on']('error',function(_0x5df71e){_0x41c63b(_0x5df71e);});_0x58cf11[_0x17cb('0x58')]();});}exports[_0x17cb('0x59')]=function(_0x17c019,_0x2c0297){var _0x17a03e=getPDFPrinter();var _0x52c8d5=getPDFDocDefinitionFromHTML(_0x17c019,_0x2c0297);var _0x2e9964=_0x17a03e[_0x17cb('0x5a')](_0x52c8d5);return writePDFDocument(_0x2e9964,_0x2c0297[_0x17cb('0x2')])['catch'](function(_0x3afc48){throw _0x3afc48;});};