010b7c940b44c5899db4c0724039ebe620befee8
[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 _0x9754=['createPdfKitDocument','path','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','window','bluebird','../../mysqldb','dbH','../../config/logger','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','pick','toString','value','fill','length','auto','body','push','concat','keys','forEach','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','format','endDate','header','pageBreak','before','margin','landscape','\x20/\x20','footer','Arial','black','num','Empty','Setting','find','split','splitSizePdf','then','range','isInteger','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','QueryTypes','query','SELECT','basename','.pdf','existsSync','mkdirSync','flatten','%s%d.%s','pdf','%s.%s','join','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','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','exit','/fonts/arial-regular.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','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','createWriteStream','finish'];(function(_0x4d8a1a,_0x53c0c8){var _0x521851=function(_0x5f4fd0){while(--_0x5f4fd0){_0x4d8a1a['push'](_0x4d8a1a['shift']());}};_0x521851(++_0x53c0c8);}(_0x9754,0x10d));var _0x4975=function(_0x14c2d8,_0x479f85){_0x14c2d8=_0x14c2d8-0x0;var _0x1325df=_0x9754[_0x14c2d8];return _0x1325df;};'use strict';var _=require('lodash');var fs=require('fs');var util=require('util');var path=require('path');var moment=require('moment');var htmlToPdfmake=require(_0x4975('0x0'));var PdfPrinter=require(_0x4975('0x1'));var zipdir=require(_0x4975('0x2'));var rimraf=require(_0x4975('0x3'));var JSDOM=require(_0x4975('0x4'))['JSDOM'];var window=new JSDOM('')[_0x4975('0x5')];var BPromise=require(_0x4975('0x6'));var db=require('../../mysqldb')['db'];var dbH=require(_0x4975('0x7'))[_0x4975('0x8')];var logger=require(_0x4975('0x9'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x4975('0xa')][0x3];var PATH=process[_0x4975('0xa')][0x4];var NAME=process[_0x4975('0xa')][0x5];var FORMAT=_0x4975('0xb');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0xc107f5,_0x79a64){var _0x13e4b8={'status':_0xc107f5};var _0x2f25b7={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x79a64){_0x13e4b8[_0x4975('0xc')]=_0x79a64;}return db[_0x4975('0xd')][_0x4975('0xe')](_0x13e4b8,_0x2f25b7);}function getHeaders(_0x8c93b0){return _['map'](_0x8c93b0,function(_0x1c36ca){return{'text':_0x1c36ca,'style':'tableHeader'};});}function getRows(_0x46c2c0,_0x1bbd4f){return _[_0x4975('0xf')](_0x1bbd4f,function(_0x23e80c){return _(_0x23e80c)[_0x4975('0x10')](_0x46c2c0)[_0x4975('0xf')](function(_0x92aa1){return _0x92aa1?_[_0x4975('0x11')](_0x92aa1):'';})[_0x4975('0x12')]();});}function createTable(_0x222d0c,_0x3c9466){var _0x5bc126={'widths':_[_0x4975('0x13')](Array(_0x222d0c[_0x4975('0x14')]),0x91),'heights':function(_0x15c827){return _0x15c827===0x0?_0x4975('0x15'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x224868=getHeaders(_0x222d0c);_0x5bc126[_0x4975('0x16')][_0x4975('0x17')](_0x224868);var _0x46e11c=getRows(_0x222d0c,_0x3c9466);_0x5bc126[_0x4975('0x16')]=_0x5bc126['body'][_0x4975('0x18')](_0x46e11c);return _0x5bc126;}function createTables(_0x2592dd){var _0x56c172=[];var _0x4e7c5c=_['chunk'](Object[_0x4975('0x19')](_0x2592dd[0x0]),0x5);_0x4e7c5c[_0x4975('0x1a')](function(_0x1a0641){_0x56c172[_0x4975('0x17')](createTable(_0x1a0641,_0x2592dd));});return _0x56c172;}function getPDFDocDefinition(_0x375af4){var _0x3c5f2b=util['format'](_0x4975('0x1b'),NAME,EXTRACTED_REPORT[_0x4975('0x1c')],moment(EXTRACTED_REPORT[_0x4975('0x1d')])[_0x4975('0x1e')](FORMAT),moment(EXTRACTED_REPORT[_0x4975('0x1f')])[_0x4975('0x1e')](FORMAT));var _0x528003=[];for(var _0x13c5a3=0x0;_0x13c5a3<_0x375af4['length'];_0x13c5a3++){var _0x13858d=[];if(_0x13c5a3===0x0){_0x13858d[_0x4975('0x17')]({'text':_0x3c5f2b,'style':_0x4975('0x20')});}var _0x4df18f={'table':_0x375af4[_0x13c5a3]};if(_0x13c5a3>0x0){_0x4df18f[_0x4975('0x21')]=_0x4975('0x22');_0x4df18f[_0x4975('0x23')]=[0x0,0x46,0x0,0x0];}_0x13858d['push'](_0x4df18f);_0x528003[_0x4975('0x17')](_0x13858d);}return{'pageSize':'A4','pageOrientation':_0x4975('0x24'),'content':_0x528003,'footer':function(_0x48f512,_0x459736){return{'text':_0x48f512[_0x4975('0x11')]()+_0x4975('0x25')+_0x459736,'style':_0x4975('0x26')};},'defaultStyle':{'font':_0x4975('0x27')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x4975('0x28')},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x403b8a){var _0x2858ee=0x1388;var _0x340bdd;if(!_0x403b8a[0x0][_0x4975('0x29')]){return analyticExtractedReport(_0x4975('0x2a'));}return db[_0x4975('0x2b')][_0x4975('0x2c')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x4975('0x2d'),_0x4975('0x2e')]})[_0x4975('0x2f')](function(_0x1170fa){if(_0x1170fa){_0x340bdd=_0x1170fa;_0x2858ee=_0x340bdd[_0x4975('0x2e')]||0x3e8;}})['then'](function(){var _0x5c4edb=[];var _0x530862=0x0;if(_0x340bdd[_0x4975('0x2d')]){if(_0x403b8a&&_0x403b8a[_0x4975('0x14')]){var _0x706706=_[_0x4975('0x30')](_0x403b8a[0x0][_0x4975('0x29')]/_0x2858ee);var _0x443a64=Number[_0x4975('0x31')](_0x403b8a[0x0][_0x4975('0x29')]/_0x2858ee)?_0x403b8a[0x0][_0x4975('0x29')]%_0x2858ee:0x0;_0x706706[_0x4975('0x1a')](function(_0x41ade8){if(_0x41ade8>0x0){_0x530862+=_0x2858ee;}_0x5c4edb['push'](dbH['sequelize']['query'](util['format'](_0x4975('0x32'),QUERY,_0x2858ee,_0x530862),{'type':dbH[_0x4975('0x33')]['QueryTypes']['SELECT']}));});if(_0x443a64>0x0){_0x530862+=_0x2858ee;_0x5c4edb[_0x4975('0x17')](dbH[_0x4975('0x33')]['query'](util[_0x4975('0x1e')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x443a64,_0x530862),{'type':dbH['sequelize'][_0x4975('0x34')]['SELECT']}));}}}else{_0x5c4edb[_0x4975('0x17')](dbH['sequelize'][_0x4975('0x35')](QUERY,{'type':dbH[_0x4975('0x33')][_0x4975('0x34')][_0x4975('0x36')]}));}var _0x3aed6c=path['dirname'](PATH);var _0x2db35b=path[_0x4975('0x37')](PATH,_0x4975('0x38'));var _0x2ba474=_0x340bdd[_0x4975('0x2d')]&&_0x5c4edb[_0x4975('0x14')]>0x1;var _0x53d1a1=[];if(!fs[_0x4975('0x39')](path['join'](_0x3aed6c,_0x2db35b))&&_0x2ba474){fs[_0x4975('0x3a')](path['join'](_0x3aed6c,_0x2db35b));}return BPromise['each'](_0x5c4edb,function(_0x1d11c7){_0x53d1a1[_0x4975('0x17')](_0x1d11c7);})[_0x4975('0x2f')](function(){var _0x4de4d9=[];for(var _0x328c4a=0x0;_0x328c4a<_0x53d1a1[_0x4975('0x14')];_0x328c4a+=0x1){var _0x4fa406=_0x53d1a1[_0x328c4a];var _0x1f48f0=createTables(_[_0x4975('0x3b')](_0x4fa406));var _0x33755a;var _0xc7c97c=getPDFDocDefinition(_0x1f48f0);var _0x1fd722=getPDFPrinter();var _0x973107=_0x1fd722['createPdfKitDocument'](_0xc7c97c);if(_0x2ba474){_0x33755a=path['join'](_0x3aed6c,_0x2db35b,util[_0x4975('0x1e')](_0x4975('0x3c'),_0x2db35b,_0x328c4a,_0x4975('0x3d')));}else{_0x33755a=path['join'](_0x3aed6c,util[_0x4975('0x1e')](_0x4975('0x3e'),_0x2db35b,'pdf'));}_0x4de4d9[_0x4975('0x17')](writePDFDocument(_0x973107,_0x33755a));}return Promise['all'](_0x4de4d9);})['then'](function(){if(_0x2ba474){return new Promise(function(_0x1190ea){zipdir(path['join'](_0x3aed6c,_0x2db35b),{'saveTo':path[_0x4975('0x3f')](_0x3aed6c,util[_0x4975('0x1e')](_0x4975('0x3e'),_0x2db35b,_0x4975('0x40')))},function(){rimraf(path[_0x4975('0x3f')](_0x3aed6c,_0x2db35b),function(){});_0x1190ea(_0x4975('0x41'));});});}})[_0x4975('0x2f')](function(){if(!_0x2ba474)return;rimraf(path['join'](_0x3aed6c,_0x2db35b),function(){});})['then'](function(){logger[_0x4975('0x42')](util[_0x4975('0x1e')](_0x4975('0x43'),EXTRACTED_REPORT_ID,'PDF'));return analyticExtractedReport(_0x4975('0x44'),_0x2ba474?util[_0x4975('0x1e')]('%s.%s',_0x2db35b,_0x2ba474?_0x4975('0x40'):_0x4975('0x3d')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x4975('0x1e')](_0x4975('0x45'),EXTRACTED_REPORT_ID,_0x4975('0x46')));return db[_0x4975('0xd')]['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})[_0x4975('0x2f')](function(_0x3dd990){EXTRACTED_REPORT=_0x3dd990;return dbH[_0x4975('0x33')][_0x4975('0x35')](util[_0x4975('0x1e')](_0x4975('0x47'),QUERY),{'type':dbH[_0x4975('0x33')][_0x4975('0x34')][_0x4975('0x36')]});})[_0x4975('0x2f')](extractReport)[_0x4975('0x48')](function(_0x3afedc){logger[_0x4975('0x42')](util['format'](_0x4975('0x49'),EXTRACTED_REPORT_ID,'PDF'),util[_0x4975('0x4a')](_0x3afedc,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0x4975('0x4b')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x381e2e=new PdfPrinter({'Arial':{'normal':__dirname+_0x4975('0x4c'),'bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+_0x4975('0x4d'),'bolditalics':__dirname+_0x4975('0x4e')}});return _0x381e2e;}function getPDFDocDefinitionFromHTML(_0x3d7353,_0xb9e58){var _0xd460db=util['format']('%s\x20#%d',_0xb9e58[_0x4975('0x4f')],_0xb9e58[_0x4975('0x50')]);var _0x2de755=moment()[_0x4975('0x1e')](_0x4975('0x51'))['toString']();var _0x1632e5=htmlToPdfmake(_0x3d7353,{'window':window,'tableAutoSize':!![]});return{'content':[_0x1632e5],'defaultStyle':{'font':_0x4975('0x27')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','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':_0x4975('0x52')}},'header':function(){return[{'text':_0x4975('0x53'),'style':_0x4975('0x20')}];},'footer':function(_0x4bd466,_0x264a1b){return[{'text':util[_0x4975('0x1e')](_0x4975('0x54'),_0xd460db,_0x4bd466,_0x264a1b,_0x2de755),'style':_0x4975('0x26')}];}};}function writePDFDocument(_0x27863d,_0x18cc2d){return new Promise(function(_0x48e347,_0x33b048){var _0x261442=_0x27863d['pipe'](fs[_0x4975('0x55')](_0x18cc2d));_0x261442['on']('finish',function(){_0x48e347(_0x4975('0x56'));});_0x261442['on']('error',function(_0x296e7a){_0x33b048(_0x296e7a);});_0x27863d['end']();});}exports['createPdfFromHTML']=function(_0x28a421,_0x2813dc){var _0xec326b=getPDFPrinter();var _0x12e741=getPDFDocDefinitionFromHTML(_0x28a421,_0x2813dc);var _0x28242b=_0xec326b[_0x4975('0x57')](_0x12e741);return writePDFDocument(_0x28242b,_0x2813dc[_0x4975('0x58')])[_0x4975('0x48')](function(_0x38166e){throw _0x38166e;});};