Built motion from commit 85328c08.|2.5.50
[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 _0xae08=['chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','startDate','endDate','margin','landscape','toString','\x20/\x20','footer','Arial','black','right','num','Empty','Setting','find','split','splitSizePdf','then','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','query','.pdf','join','mkdirSync','flatten','createPdfKitDocument','pdf','%s.%s','all','zip','info','findOne','PDF','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','center','Interaction\x20Transcript','header','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','end','path','catch','lodash','util','html-to-pdfmake','zip-dir','rimraf','jsdom','JSDOM','window','bluebird','../../mysqldb','dbH','../../config/logger','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','map','tableHeader','value','fill','length','auto','push','body'];(function(_0x48b5bc,_0xeaa079){var _0x1beb4d=function(_0x3999e6){while(--_0x3999e6){_0x48b5bc['push'](_0x48b5bc['shift']());}};_0x1beb4d(++_0xeaa079);}(_0xae08,0xdb));var _0x8ae0=function(_0x299b62,_0x1bea7c){_0x299b62=_0x299b62-0x0;var _0x198be9=_0xae08[_0x299b62];return _0x198be9;};'use strict';var _=require(_0x8ae0('0x0'));var fs=require('fs');var util=require(_0x8ae0('0x1'));var path=require('path');var moment=require('moment');var htmlToPdfmake=require(_0x8ae0('0x2'));var PdfPrinter=require('pdfmake/src/printer');var zipdir=require(_0x8ae0('0x3'));var rimraf=require(_0x8ae0('0x4'));var JSDOM=require(_0x8ae0('0x5'))[_0x8ae0('0x6')];var window=new JSDOM('')[_0x8ae0('0x7')];var BPromise=require(_0x8ae0('0x8'));var db=require(_0x8ae0('0x9'))['db'];var dbH=require(_0x8ae0('0x9'))[_0x8ae0('0xa')];var logger=require(_0x8ae0('0xb'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x8ae0('0xc')][0x2]);var QUERY=process[_0x8ae0('0xc')][0x3];var PATH=process[_0x8ae0('0xc')][0x4];var NAME=process[_0x8ae0('0xc')][0x5];var FORMAT=_0x8ae0('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x5d4ad6,_0x3c5b0d){var _0xb5f548={'status':_0x5d4ad6};var _0x3b51f6={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x3c5b0d){_0xb5f548[_0x8ae0('0xe')]=_0x3c5b0d;}return db[_0x8ae0('0xf')]['update'](_0xb5f548,_0x3b51f6);}function getHeaders(_0x23738e){return _[_0x8ae0('0x10')](_0x23738e,function(_0x3f750a){return{'text':_0x3f750a,'style':_0x8ae0('0x11')};});}function getRows(_0x408179,_0x4893d4){return _[_0x8ae0('0x10')](_0x4893d4,function(_0x29cd69){return _(_0x29cd69)['pick'](_0x408179)['map'](function(_0x3391e9){return _0x3391e9?_['toString'](_0x3391e9):'';})[_0x8ae0('0x12')]();});}function createTable(_0x3bc5c6,_0x4baf31){var _0x16bcf9={'widths':_[_0x8ae0('0x13')](Array(_0x3bc5c6[_0x8ae0('0x14')]),0x91),'heights':function(_0xd6b5cc){return _0xd6b5cc===0x0?_0x8ae0('0x15'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x47fd93=getHeaders(_0x3bc5c6);_0x16bcf9['body'][_0x8ae0('0x16')](_0x47fd93);var _0x5c5e17=getRows(_0x3bc5c6,_0x4baf31);_0x16bcf9[_0x8ae0('0x17')]=_0x16bcf9[_0x8ae0('0x17')]['concat'](_0x5c5e17);return _0x16bcf9;}function createTables(_0x1c44fd){var _0x104085=[];var _0x2bf64a=_[_0x8ae0('0x18')](Object[_0x8ae0('0x19')](_0x1c44fd[0x0]),0x5);_0x2bf64a[_0x8ae0('0x1a')](function(_0xe1eb7){_0x104085[_0x8ae0('0x16')](createTable(_0xe1eb7,_0x1c44fd));});return _0x104085;}function getPDFDocDefinition(_0x3e5668){var _0x198322=util[_0x8ae0('0x1b')](_0x8ae0('0x1c'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0x8ae0('0x1d')])[_0x8ae0('0x1b')](FORMAT),moment(EXTRACTED_REPORT[_0x8ae0('0x1e')])[_0x8ae0('0x1b')](FORMAT));var _0x51f591=[];for(var _0x52213d=0x0;_0x52213d<_0x3e5668[_0x8ae0('0x14')];_0x52213d++){var _0x53659e=[];if(_0x52213d===0x0){_0x53659e[_0x8ae0('0x16')]({'text':_0x198322,'style':'header'});}var _0x2e1200={'table':_0x3e5668[_0x52213d]};if(_0x52213d>0x0){_0x2e1200['pageBreak']='before';_0x2e1200[_0x8ae0('0x1f')]=[0x0,0x46,0x0,0x0];}_0x53659e['push'](_0x2e1200);_0x51f591[_0x8ae0('0x16')](_0x53659e);}return{'pageSize':'A4','pageOrientation':_0x8ae0('0x20'),'content':_0x51f591,'footer':function(_0x1057ef,_0x509006){return{'text':_0x1057ef[_0x8ae0('0x21')]()+_0x8ae0('0x22')+_0x509006,'style':_0x8ae0('0x23')};},'defaultStyle':{'font':_0x8ae0('0x24')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x8ae0('0x25')},'footer':{'alignment':_0x8ae0('0x26'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x5d189e){var _0x2f3def=0x1388;var _0x61dcae;if(!_0x5d189e[0x0][_0x8ae0('0x27')]){return analyticExtractedReport(_0x8ae0('0x28'));}return db[_0x8ae0('0x29')][_0x8ae0('0x2a')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x8ae0('0x2b'),_0x8ae0('0x2c')]})[_0x8ae0('0x2d')](function(_0x2d0b62){if(_0x2d0b62){_0x61dcae=_0x2d0b62;_0x2f3def=_0x61dcae[_0x8ae0('0x2c')]||0x3e8;}})[_0x8ae0('0x2d')](function(){var _0x2f827e=[];var _0xd8262a=0x0;if(_0x61dcae[_0x8ae0('0x2b')]){if(_0x5d189e&&_0x5d189e['length']){var _0x4346b3=_['range'](_0x5d189e[0x0][_0x8ae0('0x27')]/_0x2f3def);var _0x29cc5f=Number['isInteger'](_0x5d189e[0x0][_0x8ae0('0x27')]/_0x2f3def)?_0x5d189e[0x0][_0x8ae0('0x27')]%_0x2f3def:0x0;_0x4346b3[_0x8ae0('0x1a')](function(_0x2bb3e1){if(_0x2bb3e1>0x0){_0xd8262a+=_0x2f3def;}_0x2f827e['push'](dbH[_0x8ae0('0x2e')]['query'](util['format'](_0x8ae0('0x2f'),QUERY,_0x2f3def,_0xd8262a),{'type':dbH[_0x8ae0('0x2e')][_0x8ae0('0x30')][_0x8ae0('0x31')]}));});if(_0x29cc5f>0x0){_0xd8262a+=_0x2f3def;_0x2f827e[_0x8ae0('0x16')](dbH[_0x8ae0('0x2e')][_0x8ae0('0x32')](util[_0x8ae0('0x1b')](_0x8ae0('0x2f'),QUERY,_0x29cc5f,_0xd8262a),{'type':dbH[_0x8ae0('0x2e')][_0x8ae0('0x30')]['SELECT']}));}}}else{_0x2f827e['push'](dbH[_0x8ae0('0x2e')]['query'](QUERY,{'type':dbH['sequelize'][_0x8ae0('0x30')]['SELECT']}));}var _0xad2107=path['dirname'](PATH);var _0x4adc6b=path['basename'](PATH,_0x8ae0('0x33'));var _0x2e2b17=_0x61dcae[_0x8ae0('0x2b')]&&_0x2f827e['length']>0x1;var _0x5e19e4=[];if(!fs['existsSync'](path[_0x8ae0('0x34')](_0xad2107,_0x4adc6b))&&_0x2e2b17){fs[_0x8ae0('0x35')](path[_0x8ae0('0x34')](_0xad2107,_0x4adc6b));}return BPromise['each'](_0x2f827e,function(_0x109157){_0x5e19e4['push'](_0x109157);})['then'](function(){var _0x45c5a8=[];for(var _0x229b4d=0x0;_0x229b4d<_0x5e19e4[_0x8ae0('0x14')];_0x229b4d+=0x1){var _0x117780=_0x5e19e4[_0x229b4d];var _0x444d88=createTables(_[_0x8ae0('0x36')](_0x117780));var _0x403518;var _0x1ea91f=getPDFDocDefinition(_0x444d88);var _0x3d901d=getPDFPrinter();var _0x5c7f60=_0x3d901d[_0x8ae0('0x37')](_0x1ea91f);if(_0x2e2b17){_0x403518=path[_0x8ae0('0x34')](_0xad2107,_0x4adc6b,util[_0x8ae0('0x1b')]('%s%d.%s',_0x4adc6b,_0x229b4d,_0x8ae0('0x38')));}else{_0x403518=path[_0x8ae0('0x34')](_0xad2107,util['format'](_0x8ae0('0x39'),_0x4adc6b,_0x8ae0('0x38')));}_0x45c5a8[_0x8ae0('0x16')](writePDFDocument(_0x5c7f60,_0x403518));}return Promise[_0x8ae0('0x3a')](_0x45c5a8);})[_0x8ae0('0x2d')](function(){if(_0x2e2b17){return new Promise(function(_0x7db760){zipdir(path[_0x8ae0('0x34')](_0xad2107,_0x4adc6b),{'saveTo':path[_0x8ae0('0x34')](_0xad2107,util[_0x8ae0('0x1b')]('%s.%s',_0x4adc6b,_0x8ae0('0x3b')))},function(){rimraf(path[_0x8ae0('0x34')](_0xad2107,_0x4adc6b),function(){});_0x7db760('zip\x20finished');});});}})[_0x8ae0('0x2d')](function(){if(!_0x2e2b17)return;rimraf(path[_0x8ae0('0x34')](_0xad2107,_0x4adc6b),function(){});})[_0x8ae0('0x2d')](function(){logger[_0x8ae0('0x3c')](util[_0x8ae0('0x1b')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,'PDF'));return analyticExtractedReport('Completed',_0x2e2b17?util[_0x8ae0('0x1b')](_0x8ae0('0x39'),_0x4adc6b,_0x2e2b17?_0x8ae0('0x3b'):_0x8ae0('0x38')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x8ae0('0x1b')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'PDF'));return db[_0x8ae0('0xf')][_0x8ae0('0x3d')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x8ae0('0x2d')](function(_0x54f749){EXTRACTED_REPORT=_0x54f749;return dbH[_0x8ae0('0x2e')][_0x8ae0('0x32')](util[_0x8ae0('0x1b')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x8ae0('0x2e')]['QueryTypes'][_0x8ae0('0x31')]});})[_0x8ae0('0x2d')](extractReport)['catch'](function(_0x422262){logger['info'](util[_0x8ae0('0x1b')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x8ae0('0x3e')),util['inspect'](_0x422262,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x8ae0('0x3f'));})[_0x8ae0('0x40')](function(){process[_0x8ae0('0x41')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x18b466=new PdfPrinter({'Arial':{'normal':__dirname+_0x8ae0('0x42'),'bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+_0x8ae0('0x43'),'bolditalics':__dirname+_0x8ae0('0x44')}});return _0x18b466;}function getPDFDocDefinitionFromHTML(_0x1f2cc0,_0x4b4cc5){var _0x4d05c6=util['format'](_0x8ae0('0x45'),_0x4b4cc5[_0x8ae0('0x46')],_0x4b4cc5['interactionId']);var _0x2d4dcd=moment()[_0x8ae0('0x1b')]('YYYY-MM-DD')[_0x8ae0('0x21')]();var _0x383f08=htmlToPdfmake(_0x1f2cc0,{'window':window,'tableAutoSize':!![]});return{'content':[_0x383f08],'defaultStyle':{'font':_0x8ae0('0x24')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x8ae0('0x47'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x8ae0('0x48'),'style':_0x8ae0('0x49')}];},'footer':function(_0x48c54f,_0x15adb4){return[{'text':util[_0x8ae0('0x1b')](_0x8ae0('0x4a'),_0x4d05c6,_0x48c54f,_0x15adb4,_0x2d4dcd),'style':_0x8ae0('0x23')}];}};}function writePDFDocument(_0x4e1b62,_0x1c7b5c){return new Promise(function(_0x3eade3,_0x3fa24f){var _0x517ebc=_0x4e1b62[_0x8ae0('0x4b')](fs[_0x8ae0('0x4c')](_0x1c7b5c));_0x517ebc['on'](_0x8ae0('0x4d'),function(){_0x3eade3(_0x8ae0('0x4d'));});_0x517ebc['on']('error',function(_0x338d02){_0x3fa24f(_0x338d02);});_0x4e1b62[_0x8ae0('0x4e')]();});}exports['createPdfFromHTML']=function(_0x2daabc,_0xe513ad){var _0x1bda3d=getPDFPrinter();var _0x1387c9=getPDFDocDefinitionFromHTML(_0x2daabc,_0xe513ad);var _0x54950d=_0x1bda3d['createPdfKitDocument'](_0x1387c9);return writePDFDocument(_0x54950d,_0xe513ad[_0x8ae0('0x4f')])[_0x8ae0('0x50')](function(_0x5c6961){throw _0x5c6961;});};