Built motion from commit eddce310.|2.6.12
[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 _0xb7dc=['html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','JSDOM','window','bluebird','../../mysqldb','dbH','../../config/logger','argv','savename','AnalyticExtractedReport','update','tableHeader','map','pick','fill','length','auto','push','body','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','header','pageBreak','before','margin','landscape','toString','\x20/\x20','Arial','black','right','num','Setting','find','split','splitSizePdf','then','isInteger','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','QueryTypes','dirname','basename','.pdf','existsSync','join','each','flatten','createPdfKitDocument','%s%d.%s','pdf','all','zip','zip\x20finished','info','PDF','Completed','%s.%s','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','catch','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','channel','YYYY-MM-DD','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','footer','pipe','createWriteStream','finish','error','end','createPdfFromHTML','lodash','path','moment'];(function(_0x2409cd,_0x5724e4){var _0x4b2062=function(_0x5900a3){while(--_0x5900a3){_0x2409cd['push'](_0x2409cd['shift']());}};_0x4b2062(++_0x5724e4);}(_0xb7dc,0x171));var _0xcb7d=function(_0xba9e18,_0xaf8681){_0xba9e18=_0xba9e18-0x0;var _0x5c37b3=_0xb7dc[_0xba9e18];return _0x5c37b3;};'use strict';var _=require(_0xcb7d('0x0'));var fs=require('fs');var util=require('util');var path=require(_0xcb7d('0x1'));var moment=require(_0xcb7d('0x2'));var htmlToPdfmake=require(_0xcb7d('0x3'));var PdfPrinter=require(_0xcb7d('0x4'));var zipdir=require(_0xcb7d('0x5'));var rimraf=require(_0xcb7d('0x6'));var JSDOM=require('jsdom')[_0xcb7d('0x7')];var window=new JSDOM('')[_0xcb7d('0x8')];var BPromise=require(_0xcb7d('0x9'));var db=require(_0xcb7d('0xa'))['db'];var dbH=require('../../mysqldb')[_0xcb7d('0xb')];var logger=require(_0xcb7d('0xc'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0xcb7d('0xd')][0x2]);var QUERY=process['argv'][0x3];var PATH=process['argv'][0x4];var NAME=process['argv'][0x5];var FORMAT='MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a';var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x3d172f,_0x59085c){var _0x13d101={'status':_0x3d172f};var _0x411afc={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x59085c){_0x13d101[_0xcb7d('0xe')]=_0x59085c;}return db[_0xcb7d('0xf')][_0xcb7d('0x10')](_0x13d101,_0x411afc);}function getHeaders(_0x4c45c0){return _['map'](_0x4c45c0,function(_0x22ba5f){return{'text':_0x22ba5f,'style':_0xcb7d('0x11')};});}function getRows(_0x187848,_0x3f3e53){return _[_0xcb7d('0x12')](_0x3f3e53,function(_0x3a3f0a){return _(_0x3a3f0a)[_0xcb7d('0x13')](_0x187848)['map'](function(_0x16e64b){return _0x16e64b?_['toString'](_0x16e64b):'';})['value']();});}function createTable(_0x5d1061,_0x801325){var _0x5a1a84={'widths':_[_0xcb7d('0x14')](Array(_0x5d1061[_0xcb7d('0x15')]),0x91),'heights':function(_0x3762b7){return _0x3762b7===0x0?_0xcb7d('0x16'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x3b4819=getHeaders(_0x5d1061);_0x5a1a84['body'][_0xcb7d('0x17')](_0x3b4819);var _0xe62371=getRows(_0x5d1061,_0x801325);_0x5a1a84['body']=_0x5a1a84[_0xcb7d('0x18')][_0xcb7d('0x19')](_0xe62371);return _0x5a1a84;}function createTables(_0x321862){var _0x2ee04c=[];var _0x4cfc7a=_[_0xcb7d('0x1a')](Object[_0xcb7d('0x1b')](_0x321862[0x0]),0x5);_0x4cfc7a[_0xcb7d('0x1c')](function(_0x55c648){_0x2ee04c[_0xcb7d('0x17')](createTable(_0x55c648,_0x321862));});return _0x2ee04c;}function getPDFDocDefinition(_0x456b99){var _0x51d310=util[_0xcb7d('0x1d')](_0xcb7d('0x1e'),NAME,EXTRACTED_REPORT[_0xcb7d('0x1f')],moment(EXTRACTED_REPORT[_0xcb7d('0x20')])[_0xcb7d('0x1d')](FORMAT),moment(EXTRACTED_REPORT['endDate'])[_0xcb7d('0x1d')](FORMAT));var _0x34e110=[];for(var _0x52ae92=0x0;_0x52ae92<_0x456b99['length'];_0x52ae92++){var _0x11dd0a=[];if(_0x52ae92===0x0){_0x11dd0a[_0xcb7d('0x17')]({'text':_0x51d310,'style':_0xcb7d('0x21')});}var _0x4967c9={'table':_0x456b99[_0x52ae92]};if(_0x52ae92>0x0){_0x4967c9[_0xcb7d('0x22')]=_0xcb7d('0x23');_0x4967c9[_0xcb7d('0x24')]=[0x0,0x46,0x0,0x0];}_0x11dd0a[_0xcb7d('0x17')](_0x4967c9);_0x34e110[_0xcb7d('0x17')](_0x11dd0a);}return{'pageSize':'A4','pageOrientation':_0xcb7d('0x25'),'content':_0x34e110,'footer':function(_0x79b6dd,_0x4aa394){return{'text':_0x79b6dd[_0xcb7d('0x26')]()+_0xcb7d('0x27')+_0x4aa394,'style':'footer'};},'defaultStyle':{'font':_0xcb7d('0x28')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0xcb7d('0x29')},'footer':{'alignment':_0xcb7d('0x2a'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x4edad7){var _0x52b47c=0x1388;var _0x28b789;if(!_0x4edad7[0x0][_0xcb7d('0x2b')]){return analyticExtractedReport('Empty');}return db[_0xcb7d('0x2c')][_0xcb7d('0x2d')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xcb7d('0x2e'),_0xcb7d('0x2f')]})[_0xcb7d('0x30')](function(_0x106e6f){if(_0x106e6f){_0x28b789=_0x106e6f;_0x52b47c=_0x28b789[_0xcb7d('0x2f')]||0x3e8;}})['then'](function(){var _0x2d72c7=[];var _0x3f8ed2=0x0;if(_0x28b789[_0xcb7d('0x2e')]){if(_0x4edad7&&_0x4edad7[_0xcb7d('0x15')]){var _0x32672e=_['range'](_0x4edad7[0x0][_0xcb7d('0x2b')]/_0x52b47c);var _0x32f906=Number[_0xcb7d('0x31')](_0x4edad7[0x0]['num']/_0x52b47c)?_0x4edad7[0x0][_0xcb7d('0x2b')]%_0x52b47c:0x0;_0x32672e[_0xcb7d('0x1c')](function(_0x260505){if(_0x260505>0x0){_0x3f8ed2+=_0x52b47c;}_0x2d72c7['push'](dbH[_0xcb7d('0x32')][_0xcb7d('0x33')](util[_0xcb7d('0x1d')](_0xcb7d('0x34'),QUERY,_0x52b47c,_0x3f8ed2),{'type':dbH['sequelize']['QueryTypes'][_0xcb7d('0x35')]}));});if(_0x32f906>0x0){_0x3f8ed2+=_0x52b47c;_0x2d72c7[_0xcb7d('0x17')](dbH[_0xcb7d('0x32')][_0xcb7d('0x33')](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x32f906,_0x3f8ed2),{'type':dbH[_0xcb7d('0x32')][_0xcb7d('0x36')][_0xcb7d('0x35')]}));}}}else{_0x2d72c7[_0xcb7d('0x17')](dbH[_0xcb7d('0x32')][_0xcb7d('0x33')](QUERY,{'type':dbH[_0xcb7d('0x32')][_0xcb7d('0x36')][_0xcb7d('0x35')]}));}var _0x2d37a7=path[_0xcb7d('0x37')](PATH);var _0x4fdc9f=path[_0xcb7d('0x38')](PATH,_0xcb7d('0x39'));var _0x18ba90=_0x28b789['split']&&_0x2d72c7[_0xcb7d('0x15')]>0x1;var _0x30b71a=[];if(!fs[_0xcb7d('0x3a')](path[_0xcb7d('0x3b')](_0x2d37a7,_0x4fdc9f))&&_0x18ba90){fs['mkdirSync'](path['join'](_0x2d37a7,_0x4fdc9f));}return BPromise[_0xcb7d('0x3c')](_0x2d72c7,function(_0x22bb67){_0x30b71a[_0xcb7d('0x17')](_0x22bb67);})[_0xcb7d('0x30')](function(){var _0x333920=[];for(var _0x453dc2=0x0;_0x453dc2<_0x30b71a[_0xcb7d('0x15')];_0x453dc2+=0x1){var _0xf76879=_0x30b71a[_0x453dc2];var _0x44f151=createTables(_[_0xcb7d('0x3d')](_0xf76879));var _0x364866;var _0x266c63=getPDFDocDefinition(_0x44f151);var _0x4837b4=getPDFPrinter();var _0x138cb4=_0x4837b4[_0xcb7d('0x3e')](_0x266c63);if(_0x18ba90){_0x364866=path[_0xcb7d('0x3b')](_0x2d37a7,_0x4fdc9f,util[_0xcb7d('0x1d')](_0xcb7d('0x3f'),_0x4fdc9f,_0x453dc2,_0xcb7d('0x40')));}else{_0x364866=path[_0xcb7d('0x3b')](_0x2d37a7,util['format']('%s.%s',_0x4fdc9f,_0xcb7d('0x40')));}_0x333920[_0xcb7d('0x17')](writePDFDocument(_0x138cb4,_0x364866));}return Promise[_0xcb7d('0x41')](_0x333920);})[_0xcb7d('0x30')](function(){if(_0x18ba90){return new Promise(function(_0x4e8337){zipdir(path[_0xcb7d('0x3b')](_0x2d37a7,_0x4fdc9f),{'saveTo':path[_0xcb7d('0x3b')](_0x2d37a7,util[_0xcb7d('0x1d')]('%s.%s',_0x4fdc9f,_0xcb7d('0x42')))},function(){rimraf(path[_0xcb7d('0x3b')](_0x2d37a7,_0x4fdc9f),function(){});_0x4e8337(_0xcb7d('0x43'));});});}})[_0xcb7d('0x30')](function(){if(!_0x18ba90)return;rimraf(path['join'](_0x2d37a7,_0x4fdc9f),function(){});})[_0xcb7d('0x30')](function(){logger[_0xcb7d('0x44')](util[_0xcb7d('0x1d')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xcb7d('0x45')));return analyticExtractedReport(_0xcb7d('0x46'),_0x18ba90?util[_0xcb7d('0x1d')](_0xcb7d('0x47'),_0x4fdc9f,_0x18ba90?_0xcb7d('0x42'):_0xcb7d('0x40')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xcb7d('0x44')](util['format'](_0xcb7d('0x48'),EXTRACTED_REPORT_ID,_0xcb7d('0x45')));return db[_0xcb7d('0xf')][_0xcb7d('0x49')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xcb7d('0x30')](function(_0x30adae){EXTRACTED_REPORT=_0x30adae;return dbH[_0xcb7d('0x32')][_0xcb7d('0x33')](util[_0xcb7d('0x1d')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0xcb7d('0x32')][_0xcb7d('0x36')][_0xcb7d('0x35')]});})[_0xcb7d('0x30')](extractReport)[_0xcb7d('0x4a')](function(_0x529d28){logger[_0xcb7d('0x44')](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'PDF'),util['inspect'](_0x529d28,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xcb7d('0x4b'));})[_0xcb7d('0x4c')](function(){process[_0xcb7d('0x4d')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x3b397c=new PdfPrinter({'Arial':{'normal':__dirname+_0xcb7d('0x4e'),'bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+_0xcb7d('0x4f'),'bolditalics':__dirname+_0xcb7d('0x50')}});return _0x3b397c;}function getPDFDocDefinitionFromHTML(_0x18dd20,_0x46c5ca){var _0x8f81dc=util[_0xcb7d('0x1d')]('%s\x20#%d',_0x46c5ca[_0xcb7d('0x51')],_0x46c5ca['interactionId']);var _0x300fe5=moment()[_0xcb7d('0x1d')](_0xcb7d('0x52'))['toString']();var _0x1e7f7e=htmlToPdfmake(_0x18dd20,{'window':window,'tableAutoSize':!![]});return{'content':[_0x1e7f7e],'defaultStyle':{'font':_0xcb7d('0x28')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xcb7d('0x53'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':'center','margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0xcb7d('0x54'),'style':_0xcb7d('0x21')}];},'footer':function(_0xedcc7d,_0x307820){return[{'text':util['format'](_0xcb7d('0x55'),_0x8f81dc,_0xedcc7d,_0x307820,_0x300fe5),'style':_0xcb7d('0x56')}];}};}function writePDFDocument(_0x5f43ec,_0x2e72a9){return new Promise(function(_0x5ccc8b,_0x1ae58d){var _0x329204=_0x5f43ec[_0xcb7d('0x57')](fs[_0xcb7d('0x58')](_0x2e72a9));_0x329204['on'](_0xcb7d('0x59'),function(){_0x5ccc8b(_0xcb7d('0x59'));});_0x329204['on'](_0xcb7d('0x5a'),function(_0x41f304){_0x1ae58d(_0x41f304);});_0x5f43ec[_0xcb7d('0x5b')]();});}exports[_0xcb7d('0x5c')]=function(_0x5e0b7f,_0x3c441f){var _0x4e72a7=getPDFPrinter();var _0x50c7a4=getPDFDocDefinitionFromHTML(_0x5e0b7f,_0x3c441f);var _0x33e02d=_0x4e72a7[_0xcb7d('0x3e')](_0x50c7a4);return writePDFDocument(_0x33e02d,_0x3c441f[_0xcb7d('0x1')])[_0xcb7d('0x4a')](function(_0x3ff717){throw _0x3ff717;});};