Built motion from commit a8c4dd89.|2.6.33
[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 _0x5e14=['zip-dir','rimraf','jsdom','JSDOM','window','bluebird','../../mysqldb','dbH','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','update','map','tableHeader','toString','value','fill','auto','body','push','concat','chunk','forEach','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','format','header','pageBreak','margin','landscape','\x20/\x20','footer','black','right','num','Setting','find','split','then','splitSizePdf','length','isInteger','sequelize','query','QueryTypes','SELECT','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','.pdf','existsSync','mkdirSync','join','each','createPdfKitDocument','pdf','%s.%s','all','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','AnalyticExtractedReport','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','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','Arial','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','createWriteStream','finish','error','end','path','catch','lodash','util','pdfmake/src/printer'];(function(_0x344e34,_0x27b9c8){var _0xdde948=function(_0x6b4afc){while(--_0x6b4afc){_0x344e34['push'](_0x344e34['shift']());}};_0xdde948(++_0x27b9c8);}(_0x5e14,0xb5));var _0x45e1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5e14[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x45e1('0x0'));var fs=require('fs');var util=require(_0x45e1('0x1'));var path=require('path');var moment=require('moment');var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x45e1('0x2'));var zipdir=require(_0x45e1('0x3'));var rimraf=require(_0x45e1('0x4'));var JSDOM=require(_0x45e1('0x5'))[_0x45e1('0x6')];var window=new JSDOM('')[_0x45e1('0x7')];var BPromise=require(_0x45e1('0x8'));var db=require(_0x45e1('0x9'))['db'];var dbH=require('../../mysqldb')[_0x45e1('0xa')];var logger=require('../../config/logger')(_0x45e1('0xb'));var EXTRACTED_REPORT_ID=Number(process[_0x45e1('0xc')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x45e1('0xc')][0x4];var NAME=process['argv'][0x5];var FORMAT=_0x45e1('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x3f4e5a,_0x325232){var _0x3c289e={'status':_0x3f4e5a};var _0x53f539={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x325232){_0x3c289e[_0x45e1('0xe')]=_0x325232;}return db['AnalyticExtractedReport'][_0x45e1('0xf')](_0x3c289e,_0x53f539);}function getHeaders(_0x2cffab){return _[_0x45e1('0x10')](_0x2cffab,function(_0x5e35ab){return{'text':_0x5e35ab,'style':_0x45e1('0x11')};});}function getRows(_0x1af27c,_0x4e906f){return _[_0x45e1('0x10')](_0x4e906f,function(_0x2cf231){return _(_0x2cf231)['pick'](_0x1af27c)[_0x45e1('0x10')](function(_0x2ae5b9){return _0x2ae5b9?_[_0x45e1('0x12')](_0x2ae5b9):'';})[_0x45e1('0x13')]();});}function createTable(_0xe831f1,_0x312a09){var _0x1b2f84={'widths':_[_0x45e1('0x14')](Array(_0xe831f1['length']),0x91),'heights':function(_0xc19c24){return _0xc19c24===0x0?_0x45e1('0x15'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x37d55e=getHeaders(_0xe831f1);_0x1b2f84[_0x45e1('0x16')][_0x45e1('0x17')](_0x37d55e);var _0x5d07e6=getRows(_0xe831f1,_0x312a09);_0x1b2f84['body']=_0x1b2f84[_0x45e1('0x16')][_0x45e1('0x18')](_0x5d07e6);return _0x1b2f84;}function createTables(_0x198036){var _0x8eac6d=[];var _0x495b50=_[_0x45e1('0x19')](Object['keys'](_0x198036[0x0]),0x5);_0x495b50[_0x45e1('0x1a')](function(_0x4bfa19){_0x8eac6d[_0x45e1('0x17')](createTable(_0x4bfa19,_0x198036));});return _0x8eac6d;}function getPDFDocDefinition(_0x4d2b03){var _0x5ab24a=util['format'](_0x45e1('0x1b'),NAME,EXTRACTED_REPORT[_0x45e1('0x1c')],moment(EXTRACTED_REPORT['startDate'])[_0x45e1('0x1d')](FORMAT),moment(EXTRACTED_REPORT['endDate'])[_0x45e1('0x1d')](FORMAT));var _0x330702=[];for(var _0x4ab7fc=0x0;_0x4ab7fc<_0x4d2b03['length'];_0x4ab7fc++){var _0x1e3d4c=[];if(_0x4ab7fc===0x0){_0x1e3d4c[_0x45e1('0x17')]({'text':_0x5ab24a,'style':_0x45e1('0x1e')});}var _0xf54f3f={'table':_0x4d2b03[_0x4ab7fc]};if(_0x4ab7fc>0x0){_0xf54f3f[_0x45e1('0x1f')]='before';_0xf54f3f[_0x45e1('0x20')]=[0x0,0x46,0x0,0x0];}_0x1e3d4c[_0x45e1('0x17')](_0xf54f3f);_0x330702[_0x45e1('0x17')](_0x1e3d4c);}return{'pageSize':'A4','pageOrientation':_0x45e1('0x21'),'content':_0x330702,'footer':function(_0x578988,_0x470746){return{'text':_0x578988[_0x45e1('0x12')]()+_0x45e1('0x22')+_0x470746,'style':_0x45e1('0x23')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x45e1('0x24')},'footer':{'alignment':_0x45e1('0x25'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x5b3316){var _0x2a660b=0x1388;var _0x4954bf;if(!_0x5b3316[0x0][_0x45e1('0x26')]){return analyticExtractedReport('Empty');}return db[_0x45e1('0x27')][_0x45e1('0x28')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x45e1('0x29'),'splitSizePdf']})[_0x45e1('0x2a')](function(_0x10bdf2){if(_0x10bdf2){_0x4954bf=_0x10bdf2;_0x2a660b=_0x4954bf[_0x45e1('0x2b')]||0x3e8;}})[_0x45e1('0x2a')](function(){var _0x5698f8=[];var _0x3bc23b=0x0;if(_0x4954bf[_0x45e1('0x29')]){if(_0x5b3316&&_0x5b3316[_0x45e1('0x2c')]){var _0x2eb851=_['range'](_0x5b3316[0x0]['num']/_0x2a660b);var _0x5e37c5=Number[_0x45e1('0x2d')](_0x5b3316[0x0]['num']/_0x2a660b)?_0x5b3316[0x0]['num']%_0x2a660b:0x0;_0x2eb851['forEach'](function(_0xc22bc9){if(_0xc22bc9>0x0){_0x3bc23b+=_0x2a660b;}_0x5698f8[_0x45e1('0x17')](dbH[_0x45e1('0x2e')][_0x45e1('0x2f')](util[_0x45e1('0x1d')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x2a660b,_0x3bc23b),{'type':dbH[_0x45e1('0x2e')][_0x45e1('0x30')][_0x45e1('0x31')]}));});if(_0x5e37c5>0x0){_0x3bc23b+=_0x2a660b;_0x5698f8[_0x45e1('0x17')](dbH[_0x45e1('0x2e')][_0x45e1('0x2f')](util[_0x45e1('0x1d')](_0x45e1('0x32'),QUERY,_0x5e37c5,_0x3bc23b),{'type':dbH[_0x45e1('0x2e')][_0x45e1('0x30')][_0x45e1('0x31')]}));}}}else{_0x5698f8['push'](dbH['sequelize']['query'](QUERY,{'type':dbH[_0x45e1('0x2e')][_0x45e1('0x30')][_0x45e1('0x31')]}));}var _0x1f91ef=path['dirname'](PATH);var _0xfc8afa=path[_0x45e1('0x33')](PATH,_0x45e1('0x34'));var _0x3bb063=_0x4954bf[_0x45e1('0x29')]&&_0x5698f8[_0x45e1('0x2c')]>0x1;var _0x31ce40=[];if(!fs[_0x45e1('0x35')](path['join'](_0x1f91ef,_0xfc8afa))&&_0x3bb063){fs[_0x45e1('0x36')](path[_0x45e1('0x37')](_0x1f91ef,_0xfc8afa));}return BPromise[_0x45e1('0x38')](_0x5698f8,function(_0x41c901){_0x31ce40['push'](_0x41c901);})[_0x45e1('0x2a')](function(){var _0x4242ad=[];for(var _0x3926fa=0x0;_0x3926fa<_0x31ce40[_0x45e1('0x2c')];_0x3926fa+=0x1){var _0xdb9444=_0x31ce40[_0x3926fa];var _0x483d3f=createTables(_['flatten'](_0xdb9444));var _0x792143;var _0xbbcb48=getPDFDocDefinition(_0x483d3f);var _0x9d5be1=getPDFPrinter();var _0x13d630=_0x9d5be1[_0x45e1('0x39')](_0xbbcb48);if(_0x3bb063){_0x792143=path[_0x45e1('0x37')](_0x1f91ef,_0xfc8afa,util[_0x45e1('0x1d')]('%s%d.%s',_0xfc8afa,_0x3926fa,_0x45e1('0x3a')));}else{_0x792143=path['join'](_0x1f91ef,util[_0x45e1('0x1d')](_0x45e1('0x3b'),_0xfc8afa,_0x45e1('0x3a')));}_0x4242ad[_0x45e1('0x17')](writePDFDocument(_0x13d630,_0x792143));}return Promise[_0x45e1('0x3c')](_0x4242ad);})[_0x45e1('0x2a')](function(){if(_0x3bb063){return new Promise(function(_0x26140d){zipdir(path['join'](_0x1f91ef,_0xfc8afa),{'saveTo':path[_0x45e1('0x37')](_0x1f91ef,util['format'](_0x45e1('0x3b'),_0xfc8afa,_0x45e1('0x3d')))},function(){rimraf(path[_0x45e1('0x37')](_0x1f91ef,_0xfc8afa),function(){});_0x26140d(_0x45e1('0x3e'));});});}})[_0x45e1('0x2a')](function(){if(!_0x3bb063)return;rimraf(path[_0x45e1('0x37')](_0x1f91ef,_0xfc8afa),function(){});})[_0x45e1('0x2a')](function(){logger[_0x45e1('0x3f')](util['format'](_0x45e1('0x40'),EXTRACTED_REPORT_ID,'PDF'));return analyticExtractedReport(_0x45e1('0x41'),_0x3bb063?util['format'](_0x45e1('0x3b'),_0xfc8afa,_0x3bb063?_0x45e1('0x3d'):'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x45e1('0x3f')](util[_0x45e1('0x1d')](_0x45e1('0x42'),EXTRACTED_REPORT_ID,_0x45e1('0x43')));return db[_0x45e1('0x44')][_0x45e1('0x45')]({'where':{'id':EXTRACTED_REPORT_ID}})['then'](function(_0x9489e9){EXTRACTED_REPORT=_0x9489e9;return dbH[_0x45e1('0x2e')]['query'](util['format'](_0x45e1('0x46'),QUERY),{'type':dbH[_0x45e1('0x2e')][_0x45e1('0x30')][_0x45e1('0x31')]});})['then'](extractReport)['catch'](function(_0x5ac706){logger[_0x45e1('0x3f')](util[_0x45e1('0x1d')](_0x45e1('0x47'),EXTRACTED_REPORT_ID,_0x45e1('0x43')),util['inspect'](_0x5ac706,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x45e1('0x48'));})[_0x45e1('0x49')](function(){process[_0x45e1('0x4a')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x3999a8=new PdfPrinter({'Arial':{'normal':__dirname+_0x45e1('0x4b'),'bold':__dirname+_0x45e1('0x4c'),'italics':__dirname+_0x45e1('0x4d'),'bolditalics':__dirname+_0x45e1('0x4e')}});return _0x3999a8;}function getPDFDocDefinitionFromHTML(_0x243229,_0x1cd5f8){var _0x2f33c6=util[_0x45e1('0x1d')](_0x45e1('0x4f'),_0x1cd5f8[_0x45e1('0x50')],_0x1cd5f8[_0x45e1('0x51')]);var _0x1d3055=moment()[_0x45e1('0x1d')]('YYYY-MM-DD')[_0x45e1('0x12')]();var _0x406bb5=htmlToPdfmake(_0x243229,{'window':window,'tableAutoSize':!![]});return{'content':[_0x406bb5],'defaultStyle':{'font':_0x45e1('0x52')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x45e1('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':_0x45e1('0x53')}},'header':function(){return[{'text':_0x45e1('0x54'),'style':_0x45e1('0x1e')}];},'footer':function(_0x4c48f7,_0x70201c){return[{'text':util[_0x45e1('0x1d')](_0x45e1('0x55'),_0x2f33c6,_0x4c48f7,_0x70201c,_0x1d3055),'style':_0x45e1('0x23')}];}};}function writePDFDocument(_0x51a00e,_0x28b9f9){return new Promise(function(_0x52bd71,_0x379107){var _0x142ca3=_0x51a00e['pipe'](fs[_0x45e1('0x56')](_0x28b9f9));_0x142ca3['on'](_0x45e1('0x57'),function(){_0x52bd71(_0x45e1('0x57'));});_0x142ca3['on'](_0x45e1('0x58'),function(_0x58a472){_0x379107(_0x58a472);});_0x51a00e[_0x45e1('0x59')]();});}exports['createPdfFromHTML']=function(_0xb5157e,_0x47f278){var _0x473eb6=getPDFPrinter();var _0x37c9bd=getPDFDocDefinitionFromHTML(_0xb5157e,_0x47f278);var _0x52289d=_0x473eb6[_0x45e1('0x39')](_0x37c9bd);return writePDFDocument(_0x52289d,_0x47f278[_0x45e1('0x5a')])[_0x45e1('0x5b')](function(_0x73206){throw _0x73206;});};