Built motion from commit 20b39a97.|2.6.29
[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 _0x80e6=['map','tableHeader','pick','toString','value','fill','length','auto','body','push','concat','chunk','keys','forEach','format','name','startDate','endDate','header','before','margin','landscape','footer','Arial','black','right','num','Empty','find','splitSizePdf','then','split','range','isInteger','sequelize','query','QueryTypes','SELECT','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','existsSync','join','mkdirSync','each','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','zip','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','findOne','info','inspect','Failed','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','error','end','createPdfFromHTML','catch','lodash','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','window','../../mysqldb','dbH','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','AnalyticExtractedReport','update'];(function(_0x5c504b,_0x79d69f){var _0x4fd9f5=function(_0xb46452){while(--_0xb46452){_0x5c504b['push'](_0x5c504b['shift']());}};_0x4fd9f5(++_0x79d69f);}(_0x80e6,0x1bb));var _0x680e=function(_0x1386e4,_0x40c521){_0x1386e4=_0x1386e4-0x0;var _0x5f2585=_0x80e6[_0x1386e4];return _0x5f2585;};'use strict';var _=require(_0x680e('0x0'));var fs=require('fs');var util=require('util');var path=require(_0x680e('0x1'));var moment=require(_0x680e('0x2'));var htmlToPdfmake=require(_0x680e('0x3'));var PdfPrinter=require(_0x680e('0x4'));var zipdir=require(_0x680e('0x5'));var rimraf=require(_0x680e('0x6'));var JSDOM=require(_0x680e('0x7'))[_0x680e('0x8')];var window=new JSDOM('')[_0x680e('0x9')];var BPromise=require('bluebird');var db=require(_0x680e('0xa'))['db'];var dbH=require(_0x680e('0xa'))[_0x680e('0xb')];var logger=require('../../config/logger')(_0x680e('0xc'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x680e('0xd')][0x3];var PATH=process[_0x680e('0xd')][0x4];var NAME=process[_0x680e('0xd')][0x5];var FORMAT=_0x680e('0xe');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x8b784,_0x2582f9){var _0x13a13b={'status':_0x8b784};var _0x50e044={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x2582f9){_0x13a13b['savename']=_0x2582f9;}return db[_0x680e('0xf')][_0x680e('0x10')](_0x13a13b,_0x50e044);}function getHeaders(_0x3e8b9e){return _[_0x680e('0x11')](_0x3e8b9e,function(_0x153498){return{'text':_0x153498,'style':_0x680e('0x12')};});}function getRows(_0x3550ab,_0xb97ad6){return _[_0x680e('0x11')](_0xb97ad6,function(_0x475cc8){return _(_0x475cc8)[_0x680e('0x13')](_0x3550ab)[_0x680e('0x11')](function(_0x3cda2c){return _0x3cda2c?_[_0x680e('0x14')](_0x3cda2c):'';})[_0x680e('0x15')]();});}function createTable(_0x142208,_0x2e6e29){var _0x27c29a={'widths':_[_0x680e('0x16')](Array(_0x142208[_0x680e('0x17')]),0x91),'heights':function(_0x24997f){return _0x24997f===0x0?_0x680e('0x18'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x17b334=getHeaders(_0x142208);_0x27c29a[_0x680e('0x19')][_0x680e('0x1a')](_0x17b334);var _0x4eb184=getRows(_0x142208,_0x2e6e29);_0x27c29a[_0x680e('0x19')]=_0x27c29a[_0x680e('0x19')][_0x680e('0x1b')](_0x4eb184);return _0x27c29a;}function createTables(_0x44eefa){var _0x131ab0=[];var _0x3bb28c=_[_0x680e('0x1c')](Object[_0x680e('0x1d')](_0x44eefa[0x0]),0x5);_0x3bb28c[_0x680e('0x1e')](function(_0x4ba565){_0x131ab0[_0x680e('0x1a')](createTable(_0x4ba565,_0x44eefa));});return _0x131ab0;}function getPDFDocDefinition(_0x47d1ec){var _0x1147b2=util[_0x680e('0x1f')]('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT[_0x680e('0x20')],moment(EXTRACTED_REPORT[_0x680e('0x21')])[_0x680e('0x1f')](FORMAT),moment(EXTRACTED_REPORT[_0x680e('0x22')])['format'](FORMAT));var _0x4b7f92=[];for(var _0x77cb5=0x0;_0x77cb5<_0x47d1ec[_0x680e('0x17')];_0x77cb5++){var _0x15be47=[];if(_0x77cb5===0x0){_0x15be47[_0x680e('0x1a')]({'text':_0x1147b2,'style':_0x680e('0x23')});}var _0xad0da8={'table':_0x47d1ec[_0x77cb5]};if(_0x77cb5>0x0){_0xad0da8['pageBreak']=_0x680e('0x24');_0xad0da8[_0x680e('0x25')]=[0x0,0x46,0x0,0x0];}_0x15be47[_0x680e('0x1a')](_0xad0da8);_0x4b7f92[_0x680e('0x1a')](_0x15be47);}return{'pageSize':'A4','pageOrientation':_0x680e('0x26'),'content':_0x4b7f92,'footer':function(_0x4b69ba,_0x56607a){return{'text':_0x4b69ba[_0x680e('0x14')]()+'\x20/\x20'+_0x56607a,'style':_0x680e('0x27')};},'defaultStyle':{'font':_0x680e('0x28')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x680e('0x29')},'footer':{'alignment':_0x680e('0x2a'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x3f134a){var _0xb1509d=0x1388;var _0x4d3f49;if(!_0x3f134a[0x0][_0x680e('0x2b')]){return analyticExtractedReport(_0x680e('0x2c'));}return db['Setting'][_0x680e('0x2d')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x680e('0x2e')]})[_0x680e('0x2f')](function(_0x21b9e9){if(_0x21b9e9){_0x4d3f49=_0x21b9e9;_0xb1509d=_0x4d3f49[_0x680e('0x2e')]||0x3e8;}})[_0x680e('0x2f')](function(){var _0x3eec78=[];var _0x18e4ad=0x0;if(_0x4d3f49[_0x680e('0x30')]){if(_0x3f134a&&_0x3f134a[_0x680e('0x17')]){var _0x2567b5=_[_0x680e('0x31')](_0x3f134a[0x0][_0x680e('0x2b')]/_0xb1509d);var _0x5a5a53=Number[_0x680e('0x32')](_0x3f134a[0x0][_0x680e('0x2b')]/_0xb1509d)?_0x3f134a[0x0][_0x680e('0x2b')]%_0xb1509d:0x0;_0x2567b5[_0x680e('0x1e')](function(_0x389479){if(_0x389479>0x0){_0x18e4ad+=_0xb1509d;}_0x3eec78[_0x680e('0x1a')](dbH[_0x680e('0x33')][_0x680e('0x34')](util[_0x680e('0x1f')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0xb1509d,_0x18e4ad),{'type':dbH[_0x680e('0x33')][_0x680e('0x35')][_0x680e('0x36')]}));});if(_0x5a5a53>0x0){_0x18e4ad+=_0xb1509d;_0x3eec78['push'](dbH[_0x680e('0x33')][_0x680e('0x34')](util[_0x680e('0x1f')](_0x680e('0x37'),QUERY,_0x5a5a53,_0x18e4ad),{'type':dbH['sequelize'][_0x680e('0x35')]['SELECT']}));}}}else{_0x3eec78[_0x680e('0x1a')](dbH[_0x680e('0x33')][_0x680e('0x34')](QUERY,{'type':dbH[_0x680e('0x33')][_0x680e('0x35')][_0x680e('0x36')]}));}var _0x3dde73=path[_0x680e('0x38')](PATH);var _0x2e22df=path[_0x680e('0x39')](PATH,'.pdf');var _0x269d35=_0x4d3f49[_0x680e('0x30')]&&_0x3eec78[_0x680e('0x17')]>0x1;var _0x9f7a54=[];if(!fs[_0x680e('0x3a')](path[_0x680e('0x3b')](_0x3dde73,_0x2e22df))&&_0x269d35){fs[_0x680e('0x3c')](path[_0x680e('0x3b')](_0x3dde73,_0x2e22df));}return BPromise[_0x680e('0x3d')](_0x3eec78,function(_0x28bf38){_0x9f7a54['push'](_0x28bf38);})['then'](function(){var _0x4de1da=[];for(var _0x4dfb6f=0x0;_0x4dfb6f<_0x9f7a54[_0x680e('0x17')];_0x4dfb6f+=0x1){var _0x45afdc=_0x9f7a54[_0x4dfb6f];var _0x5d3b37=createTables(_[_0x680e('0x3e')](_0x45afdc));var _0x3862c2;var _0x276687=getPDFDocDefinition(_0x5d3b37);var _0x5cb8dd=getPDFPrinter();var _0x38e63e=_0x5cb8dd[_0x680e('0x3f')](_0x276687);if(_0x269d35){_0x3862c2=path[_0x680e('0x3b')](_0x3dde73,_0x2e22df,util[_0x680e('0x1f')](_0x680e('0x40'),_0x2e22df,_0x4dfb6f,_0x680e('0x41')));}else{_0x3862c2=path['join'](_0x3dde73,util[_0x680e('0x1f')](_0x680e('0x42'),_0x2e22df,_0x680e('0x41')));}_0x4de1da[_0x680e('0x1a')](writePDFDocument(_0x38e63e,_0x3862c2));}return Promise['all'](_0x4de1da);})['then'](function(){if(_0x269d35){return new Promise(function(_0x59e175){zipdir(path[_0x680e('0x3b')](_0x3dde73,_0x2e22df),{'saveTo':path['join'](_0x3dde73,util[_0x680e('0x1f')](_0x680e('0x42'),_0x2e22df,'zip'))},function(){rimraf(path[_0x680e('0x3b')](_0x3dde73,_0x2e22df),function(){});_0x59e175('zip\x20finished');});});}})[_0x680e('0x2f')](function(){if(!_0x269d35)return;rimraf(path[_0x680e('0x3b')](_0x3dde73,_0x2e22df),function(){});})[_0x680e('0x2f')](function(){logger['info'](util[_0x680e('0x1f')](_0x680e('0x43'),EXTRACTED_REPORT_ID,'PDF'));return analyticExtractedReport(_0x680e('0x44'),_0x269d35?util[_0x680e('0x1f')](_0x680e('0x42'),_0x2e22df,_0x269d35?_0x680e('0x45'):_0x680e('0x41')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x680e('0x1f')](_0x680e('0x46'),EXTRACTED_REPORT_ID,_0x680e('0x47')));return db['AnalyticExtractedReport'][_0x680e('0x48')]({'where':{'id':EXTRACTED_REPORT_ID}})['then'](function(_0x1362db){EXTRACTED_REPORT=_0x1362db;return dbH[_0x680e('0x33')][_0x680e('0x34')](util['format']('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x680e('0x33')]['QueryTypes'][_0x680e('0x36')]});})[_0x680e('0x2f')](extractReport)['catch'](function(_0x267273){logger[_0x680e('0x49')](util[_0x680e('0x1f')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'PDF'),util[_0x680e('0x4a')](_0x267273,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x680e('0x4b'));})['finally'](function(){process[_0x680e('0x4c')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x5e97db=new PdfPrinter({'Arial':{'normal':__dirname+_0x680e('0x4d'),'bold':__dirname+_0x680e('0x4e'),'italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0x680e('0x4f')}});return _0x5e97db;}function getPDFDocDefinitionFromHTML(_0x8d25f,_0x53bc0b){var _0x4b1906=util[_0x680e('0x1f')](_0x680e('0x50'),_0x53bc0b[_0x680e('0x51')],_0x53bc0b[_0x680e('0x52')]);var _0x59d9b8=moment()['format']('YYYY-MM-DD')[_0x680e('0x14')]();var _0x11c750=htmlToPdfmake(_0x8d25f,{'window':window,'tableAutoSize':!![]});return{'content':[_0x11c750],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x680e('0x53'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x680e('0x53'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x680e('0x53')}},'header':function(){return[{'text':_0x680e('0x54'),'style':_0x680e('0x23')}];},'footer':function(_0x19a1fd,_0x4fdfa3){return[{'text':util['format'](_0x680e('0x55'),_0x4b1906,_0x19a1fd,_0x4fdfa3,_0x59d9b8),'style':'footer'}];}};}function writePDFDocument(_0x4b407c,_0x2bffd6){return new Promise(function(_0x38a0d3,_0x59a3a3){var _0x3aa7c5=_0x4b407c[_0x680e('0x56')](fs[_0x680e('0x57')](_0x2bffd6));_0x3aa7c5['on']('finish',function(){_0x38a0d3('finish');});_0x3aa7c5['on'](_0x680e('0x58'),function(_0xab7201){_0x59a3a3(_0xab7201);});_0x4b407c[_0x680e('0x59')]();});}exports[_0x680e('0x5a')]=function(_0x57d489,_0x293000){var _0xc6f853=getPDFPrinter();var _0xefcc47=getPDFDocDefinitionFromHTML(_0x57d489,_0x293000);var _0x1780fd=_0xc6f853[_0x680e('0x3f')](_0xefcc47);return writePDFDocument(_0x1780fd,_0x293000[_0x680e('0x1')])[_0x680e('0x5b')](function(_0x2cfc59){throw _0x2cfc59;});};