21623df36d865f5066dee2f9da0de6bbe48481b4
[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 _0x0d38=['fill','length','body','push','chunk','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','endDate','header','pageBreak','before','margin','landscape','\x20/\x20','footer','Arial','black','right','num','Empty','Setting','find','splitSizePdf','then','split','range','isInteger','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','dirname','basename','.pdf','existsSync','join','each','flatten','createPdfKitDocument','%s%d.%s','%s.%s','pdf','all','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','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','createPdfFromHTML','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','window','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','map','pick','toString','value'];(function(_0x16394c,_0x131bd2){var _0x15cdf1=function(_0x2c8eb1){while(--_0x2c8eb1){_0x16394c['push'](_0x16394c['shift']());}};_0x15cdf1(++_0x131bd2);}(_0x0d38,0x16c));var _0x80d3=function(_0x3e4f5b,_0x48df0c){_0x3e4f5b=_0x3e4f5b-0x0;var _0x157cc7=_0x0d38[_0x3e4f5b];return _0x157cc7;};'use strict';var _=require('lodash');var fs=require('fs');var util=require('util');var path=require(_0x80d3('0x0'));var moment=require(_0x80d3('0x1'));var htmlToPdfmake=require(_0x80d3('0x2'));var PdfPrinter=require(_0x80d3('0x3'));var zipdir=require(_0x80d3('0x4'));var rimraf=require(_0x80d3('0x5'));var JSDOM=require('jsdom')['JSDOM'];var window=new JSDOM('')[_0x80d3('0x6')];var BPromise=require(_0x80d3('0x7'));var db=require(_0x80d3('0x8'))['db'];var dbH=require(_0x80d3('0x8'))[_0x80d3('0x9')];var logger=require(_0x80d3('0xa'))(_0x80d3('0xb'));var EXTRACTED_REPORT_ID=Number(process[_0x80d3('0xc')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x80d3('0xc')][0x4];var NAME=process[_0x80d3('0xc')][0x5];var FORMAT=_0x80d3('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x445d5c,_0x402cbd){var _0x27dfd8={'status':_0x445d5c};var _0x2905a7={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x402cbd){_0x27dfd8[_0x80d3('0xe')]=_0x402cbd;}return db[_0x80d3('0xf')]['update'](_0x27dfd8,_0x2905a7);}function getHeaders(_0x22f9fa){return _[_0x80d3('0x10')](_0x22f9fa,function(_0x129fe3){return{'text':_0x129fe3,'style':'tableHeader'};});}function getRows(_0xb94320,_0x4d91e8){return _['map'](_0x4d91e8,function(_0x4a41ef){return _(_0x4a41ef)[_0x80d3('0x11')](_0xb94320)[_0x80d3('0x10')](function(_0x2a638b){return _0x2a638b?_[_0x80d3('0x12')](_0x2a638b):'';})[_0x80d3('0x13')]();});}function createTable(_0x3ac250,_0x49340e){var _0x36c21f={'widths':_[_0x80d3('0x14')](Array(_0x3ac250[_0x80d3('0x15')]),0x91),'heights':function(_0x53a570){return _0x53a570===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x34256b=getHeaders(_0x3ac250);_0x36c21f[_0x80d3('0x16')][_0x80d3('0x17')](_0x34256b);var _0x555f6a=getRows(_0x3ac250,_0x49340e);_0x36c21f[_0x80d3('0x16')]=_0x36c21f[_0x80d3('0x16')]['concat'](_0x555f6a);return _0x36c21f;}function createTables(_0x4e0139){var _0x452394=[];var _0x23ed27=_[_0x80d3('0x18')](Object['keys'](_0x4e0139[0x0]),0x5);_0x23ed27[_0x80d3('0x19')](function(_0x5dc8f0){_0x452394[_0x80d3('0x17')](createTable(_0x5dc8f0,_0x4e0139));});return _0x452394;}function getPDFDocDefinition(_0x1c1f6d){var _0x505c52=util[_0x80d3('0x1a')](_0x80d3('0x1b'),NAME,EXTRACTED_REPORT[_0x80d3('0x1c')],moment(EXTRACTED_REPORT['startDate'])[_0x80d3('0x1a')](FORMAT),moment(EXTRACTED_REPORT[_0x80d3('0x1d')])[_0x80d3('0x1a')](FORMAT));var _0x41930e=[];for(var _0x3c27d4=0x0;_0x3c27d4<_0x1c1f6d[_0x80d3('0x15')];_0x3c27d4++){var _0x36258b=[];if(_0x3c27d4===0x0){_0x36258b['push']({'text':_0x505c52,'style':_0x80d3('0x1e')});}var _0x3a603f={'table':_0x1c1f6d[_0x3c27d4]};if(_0x3c27d4>0x0){_0x3a603f[_0x80d3('0x1f')]=_0x80d3('0x20');_0x3a603f[_0x80d3('0x21')]=[0x0,0x46,0x0,0x0];}_0x36258b[_0x80d3('0x17')](_0x3a603f);_0x41930e['push'](_0x36258b);}return{'pageSize':'A4','pageOrientation':_0x80d3('0x22'),'content':_0x41930e,'footer':function(_0x2cf64b,_0x5dd05b){return{'text':_0x2cf64b['toString']()+_0x80d3('0x23')+_0x5dd05b,'style':_0x80d3('0x24')};},'defaultStyle':{'font':_0x80d3('0x25')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x80d3('0x26')},'footer':{'alignment':_0x80d3('0x27'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x10b656){var _0x99f5d9=0x1388;var _0x392679;if(!_0x10b656[0x0][_0x80d3('0x28')]){return analyticExtractedReport(_0x80d3('0x29'));}return db[_0x80d3('0x2a')][_0x80d3('0x2b')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x80d3('0x2c')]})[_0x80d3('0x2d')](function(_0x34cd62){if(_0x34cd62){_0x392679=_0x34cd62;_0x99f5d9=_0x392679[_0x80d3('0x2c')]||0x3e8;}})[_0x80d3('0x2d')](function(){var _0x42d735=[];var _0x4cdcd1=0x0;if(_0x392679[_0x80d3('0x2e')]){if(_0x10b656&&_0x10b656[_0x80d3('0x15')]){var _0x17026f=_[_0x80d3('0x2f')](_0x10b656[0x0]['num']/_0x99f5d9);var _0x2280af=Number[_0x80d3('0x30')](_0x10b656[0x0][_0x80d3('0x28')]/_0x99f5d9)?_0x10b656[0x0][_0x80d3('0x28')]%_0x99f5d9:0x0;_0x17026f[_0x80d3('0x19')](function(_0xf1ff4c){if(_0xf1ff4c>0x0){_0x4cdcd1+=_0x99f5d9;}_0x42d735[_0x80d3('0x17')](dbH[_0x80d3('0x31')][_0x80d3('0x32')](util[_0x80d3('0x1a')](_0x80d3('0x33'),QUERY,_0x99f5d9,_0x4cdcd1),{'type':dbH[_0x80d3('0x31')][_0x80d3('0x34')]['SELECT']}));});if(_0x2280af>0x0){_0x4cdcd1+=_0x99f5d9;_0x42d735[_0x80d3('0x17')](dbH[_0x80d3('0x31')][_0x80d3('0x32')](util[_0x80d3('0x1a')](_0x80d3('0x33'),QUERY,_0x2280af,_0x4cdcd1),{'type':dbH['sequelize'][_0x80d3('0x34')][_0x80d3('0x35')]}));}}}else{_0x42d735[_0x80d3('0x17')](dbH['sequelize']['query'](QUERY,{'type':dbH[_0x80d3('0x31')]['QueryTypes'][_0x80d3('0x35')]}));}var _0x169230=path[_0x80d3('0x36')](PATH);var _0xb1f176=path[_0x80d3('0x37')](PATH,_0x80d3('0x38'));var _0x4d0768=_0x392679[_0x80d3('0x2e')]&&_0x42d735[_0x80d3('0x15')]>0x1;var _0x4b5b27=[];if(!fs[_0x80d3('0x39')](path[_0x80d3('0x3a')](_0x169230,_0xb1f176))&&_0x4d0768){fs['mkdirSync'](path[_0x80d3('0x3a')](_0x169230,_0xb1f176));}return BPromise[_0x80d3('0x3b')](_0x42d735,function(_0x125c5c){_0x4b5b27[_0x80d3('0x17')](_0x125c5c);})[_0x80d3('0x2d')](function(){var _0x5305ad=[];for(var _0x3ec4d6=0x0;_0x3ec4d6<_0x4b5b27[_0x80d3('0x15')];_0x3ec4d6+=0x1){var _0x37fd51=_0x4b5b27[_0x3ec4d6];var _0x9ab0ad=createTables(_[_0x80d3('0x3c')](_0x37fd51));var _0x406a0a;var _0x667cae=getPDFDocDefinition(_0x9ab0ad);var _0x944658=getPDFPrinter();var _0x59ad9c=_0x944658[_0x80d3('0x3d')](_0x667cae);if(_0x4d0768){_0x406a0a=path['join'](_0x169230,_0xb1f176,util[_0x80d3('0x1a')](_0x80d3('0x3e'),_0xb1f176,_0x3ec4d6,'pdf'));}else{_0x406a0a=path['join'](_0x169230,util[_0x80d3('0x1a')](_0x80d3('0x3f'),_0xb1f176,_0x80d3('0x40')));}_0x5305ad[_0x80d3('0x17')](writePDFDocument(_0x59ad9c,_0x406a0a));}return Promise[_0x80d3('0x41')](_0x5305ad);})[_0x80d3('0x2d')](function(){if(_0x4d0768){return new Promise(function(_0x1635d6){zipdir(path['join'](_0x169230,_0xb1f176),{'saveTo':path[_0x80d3('0x3a')](_0x169230,util[_0x80d3('0x1a')](_0x80d3('0x3f'),_0xb1f176,_0x80d3('0x42')))},function(){rimraf(path[_0x80d3('0x3a')](_0x169230,_0xb1f176),function(){});_0x1635d6(_0x80d3('0x43'));});});}})[_0x80d3('0x2d')](function(){if(!_0x4d0768)return;rimraf(path[_0x80d3('0x3a')](_0x169230,_0xb1f176),function(){});})[_0x80d3('0x2d')](function(){logger[_0x80d3('0x44')](util[_0x80d3('0x1a')](_0x80d3('0x45'),EXTRACTED_REPORT_ID,_0x80d3('0x46')));return analyticExtractedReport(_0x80d3('0x47'),_0x4d0768?util[_0x80d3('0x1a')](_0x80d3('0x3f'),_0xb1f176,_0x4d0768?'zip':'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x80d3('0x44')](util[_0x80d3('0x1a')](_0x80d3('0x48'),EXTRACTED_REPORT_ID,_0x80d3('0x46')));return db[_0x80d3('0xf')][_0x80d3('0x49')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x80d3('0x2d')](function(_0x36f942){EXTRACTED_REPORT=_0x36f942;return dbH[_0x80d3('0x31')][_0x80d3('0x32')](util[_0x80d3('0x1a')](_0x80d3('0x4a'),QUERY),{'type':dbH[_0x80d3('0x31')]['QueryTypes'][_0x80d3('0x35')]});})[_0x80d3('0x2d')](extractReport)[_0x80d3('0x4b')](function(_0x5419e9){logger[_0x80d3('0x44')](util[_0x80d3('0x1a')](_0x80d3('0x4c'),EXTRACTED_REPORT_ID,_0x80d3('0x46')),util['inspect'](_0x5419e9,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x80d3('0x4d'));})[_0x80d3('0x4e')](function(){process[_0x80d3('0x4f')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x1aa468=new PdfPrinter({'Arial':{'normal':__dirname+_0x80d3('0x50'),'bold':__dirname+_0x80d3('0x51'),'italics':__dirname+_0x80d3('0x52'),'bolditalics':__dirname+_0x80d3('0x53')}});return _0x1aa468;}function getPDFDocDefinitionFromHTML(_0x17b3fb,_0x199a64){var _0x8dac2b=util[_0x80d3('0x1a')](_0x80d3('0x54'),_0x199a64[_0x80d3('0x55')],_0x199a64[_0x80d3('0x56')]);var _0x5e18f9=moment()[_0x80d3('0x1a')](_0x80d3('0x57'))[_0x80d3('0x12')]();var _0x19549e=htmlToPdfmake(_0x17b3fb,{'window':window,'tableAutoSize':!![]});return{'content':[_0x19549e],'defaultStyle':{'font':_0x80d3('0x25')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x80d3('0x58'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x80d3('0x58'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x80d3('0x59'),'style':'header'}];},'footer':function(_0x23877f,_0x19097f){return[{'text':util['format'](_0x80d3('0x5a'),_0x8dac2b,_0x23877f,_0x19097f,_0x5e18f9),'style':_0x80d3('0x24')}];}};}function writePDFDocument(_0xee2bc0,_0x1f39fe){return new Promise(function(_0x59f18b,_0x31852e){var _0x220aea=_0xee2bc0[_0x80d3('0x5b')](fs[_0x80d3('0x5c')](_0x1f39fe));_0x220aea['on'](_0x80d3('0x5d'),function(){_0x59f18b(_0x80d3('0x5d'));});_0x220aea['on'](_0x80d3('0x5e'),function(_0x5ee6c4){_0x31852e(_0x5ee6c4);});_0xee2bc0['end']();});}exports[_0x80d3('0x5f')]=function(_0x4d2272,_0x1b7108){var _0x6bd270=getPDFPrinter();var _0x2cfab7=getPDFDocDefinitionFromHTML(_0x4d2272,_0x1b7108);var _0x5b8f0b=_0x6bd270[_0x80d3('0x3d')](_0x2cfab7);return writePDFDocument(_0x5b8f0b,_0x1b7108[_0x80d3('0x0')])[_0x80d3('0x4b')](function(_0x338579){throw _0x338579;});};