6e2006d8a470d3cffe89f9b7c03d04bec67f0aeb
[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 _0x4ba5=['chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','endDate','push','pageBreak','before','landscape','\x20/\x20','black','right','num','Empty','find','split','splitSizePdf','then','range','isInteger','query','sequelize','QueryTypes','SELECT','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','.pdf','existsSync','mkdirSync','join','each','flatten','createPdfKitDocument','%s%d.%s','%s.%s','pdf','all','zip\x20finished','info','PDF','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','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','Arial','center','Interaction\x20Transcript','header','pipe','createWriteStream','finish','error','end','createPdfFromHTML','lodash','util','path','moment','html-to-pdfmake','zip-dir','jsdom','JSDOM','window','bluebird','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','tableHeader','map','toString','value','fill','length','auto','body','concat'];(function(_0x417dd9,_0x34c874){var _0x7e7052=function(_0x31fb53){while(--_0x31fb53){_0x417dd9['push'](_0x417dd9['shift']());}};_0x7e7052(++_0x34c874);}(_0x4ba5,0x102));var _0x54ba=function(_0x404957,_0x5192a4){_0x404957=_0x404957-0x0;var _0x4e0365=_0x4ba5[_0x404957];return _0x4e0365;};'use strict';var _=require(_0x54ba('0x0'));var fs=require('fs');var util=require(_0x54ba('0x1'));var path=require(_0x54ba('0x2'));var moment=require(_0x54ba('0x3'));var htmlToPdfmake=require(_0x54ba('0x4'));var PdfPrinter=require('pdfmake/src/printer');var zipdir=require(_0x54ba('0x5'));var rimraf=require('rimraf');var JSDOM=require(_0x54ba('0x6'))[_0x54ba('0x7')];var window=new JSDOM('')[_0x54ba('0x8')];var BPromise=require(_0x54ba('0x9'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0x54ba('0xa')];var logger=require(_0x54ba('0xb'))(_0x54ba('0xc'));var EXTRACTED_REPORT_ID=Number(process[_0x54ba('0xd')][0x2]);var QUERY=process[_0x54ba('0xd')][0x3];var PATH=process[_0x54ba('0xd')][0x4];var NAME=process['argv'][0x5];var FORMAT=_0x54ba('0xe');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x773d62,_0x505ccb){var _0x53f364={'status':_0x773d62};var _0x5bbebc={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x505ccb){_0x53f364[_0x54ba('0xf')]=_0x505ccb;}return db[_0x54ba('0x10')][_0x54ba('0x11')](_0x53f364,_0x5bbebc);}function getHeaders(_0x126e9d){return _['map'](_0x126e9d,function(_0x277fe2){return{'text':_0x277fe2,'style':_0x54ba('0x12')};});}function getRows(_0x1e3c1d,_0x1b7871){return _[_0x54ba('0x13')](_0x1b7871,function(_0x1a24cc){return _(_0x1a24cc)['pick'](_0x1e3c1d)[_0x54ba('0x13')](function(_0x37a555){return _0x37a555?_[_0x54ba('0x14')](_0x37a555):'';})[_0x54ba('0x15')]();});}function createTable(_0x16425e,_0x388860){var _0x38b810={'widths':_[_0x54ba('0x16')](Array(_0x16425e[_0x54ba('0x17')]),0x91),'heights':function(_0x5f593a){return _0x5f593a===0x0?_0x54ba('0x18'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x4519e1=getHeaders(_0x16425e);_0x38b810[_0x54ba('0x19')]['push'](_0x4519e1);var _0x309d15=getRows(_0x16425e,_0x388860);_0x38b810[_0x54ba('0x19')]=_0x38b810[_0x54ba('0x19')][_0x54ba('0x1a')](_0x309d15);return _0x38b810;}function createTables(_0x1a61d6){var _0x1b84fe=[];var _0x539112=_[_0x54ba('0x1b')](Object[_0x54ba('0x1c')](_0x1a61d6[0x0]),0x5);_0x539112[_0x54ba('0x1d')](function(_0x57d9de){_0x1b84fe['push'](createTable(_0x57d9de,_0x1a61d6));});return _0x1b84fe;}function getPDFDocDefinition(_0x5d1740){var _0x35c40b=util[_0x54ba('0x1e')](_0x54ba('0x1f'),NAME,EXTRACTED_REPORT[_0x54ba('0x20')],moment(EXTRACTED_REPORT['startDate'])[_0x54ba('0x1e')](FORMAT),moment(EXTRACTED_REPORT[_0x54ba('0x21')])[_0x54ba('0x1e')](FORMAT));var _0x1abaca=[];for(var _0x487205=0x0;_0x487205<_0x5d1740[_0x54ba('0x17')];_0x487205++){var _0x4af202=[];if(_0x487205===0x0){_0x4af202[_0x54ba('0x22')]({'text':_0x35c40b,'style':'header'});}var _0x20a3c0={'table':_0x5d1740[_0x487205]};if(_0x487205>0x0){_0x20a3c0[_0x54ba('0x23')]=_0x54ba('0x24');_0x20a3c0['margin']=[0x0,0x46,0x0,0x0];}_0x4af202[_0x54ba('0x22')](_0x20a3c0);_0x1abaca[_0x54ba('0x22')](_0x4af202);}return{'pageSize':'A4','pageOrientation':_0x54ba('0x25'),'content':_0x1abaca,'footer':function(_0x2808a7,_0x17bc2a){return{'text':_0x2808a7['toString']()+_0x54ba('0x26')+_0x17bc2a,'style':'footer'};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x54ba('0x27')},'footer':{'alignment':_0x54ba('0x28'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x544e1f){var _0x17c72b=0x1388;var _0x30028b;if(!_0x544e1f[0x0][_0x54ba('0x29')]){return analyticExtractedReport(_0x54ba('0x2a'));}return db['Setting'][_0x54ba('0x2b')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x54ba('0x2c'),_0x54ba('0x2d')]})[_0x54ba('0x2e')](function(_0xa162ad){if(_0xa162ad){_0x30028b=_0xa162ad;_0x17c72b=_0x30028b[_0x54ba('0x2d')]||0x3e8;}})[_0x54ba('0x2e')](function(){var _0x467263=[];var _0x5151ad=0x0;if(_0x30028b[_0x54ba('0x2c')]){if(_0x544e1f&&_0x544e1f['length']){var _0x2e9ee4=_[_0x54ba('0x2f')](_0x544e1f[0x0][_0x54ba('0x29')]/_0x17c72b);var _0x5d7ad5=Number[_0x54ba('0x30')](_0x544e1f[0x0]['num']/_0x17c72b)?_0x544e1f[0x0]['num']%_0x17c72b:0x0;_0x2e9ee4[_0x54ba('0x1d')](function(_0x1dc215){if(_0x1dc215>0x0){_0x5151ad+=_0x17c72b;}_0x467263[_0x54ba('0x22')](dbH['sequelize'][_0x54ba('0x31')](util[_0x54ba('0x1e')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x17c72b,_0x5151ad),{'type':dbH[_0x54ba('0x32')][_0x54ba('0x33')][_0x54ba('0x34')]}));});if(_0x5d7ad5>0x0){_0x5151ad+=_0x17c72b;_0x467263[_0x54ba('0x22')](dbH[_0x54ba('0x32')][_0x54ba('0x31')](util[_0x54ba('0x1e')](_0x54ba('0x35'),QUERY,_0x5d7ad5,_0x5151ad),{'type':dbH[_0x54ba('0x32')]['QueryTypes']['SELECT']}));}}}else{_0x467263[_0x54ba('0x22')](dbH[_0x54ba('0x32')][_0x54ba('0x31')](QUERY,{'type':dbH[_0x54ba('0x32')][_0x54ba('0x33')][_0x54ba('0x34')]}));}var _0x1c37f6=path['dirname'](PATH);var _0x3657d4=path[_0x54ba('0x36')](PATH,_0x54ba('0x37'));var _0x9a2daa=_0x30028b[_0x54ba('0x2c')]&&_0x467263['length']>0x1;var _0x10d4f3=[];if(!fs[_0x54ba('0x38')](path['join'](_0x1c37f6,_0x3657d4))&&_0x9a2daa){fs[_0x54ba('0x39')](path[_0x54ba('0x3a')](_0x1c37f6,_0x3657d4));}return BPromise[_0x54ba('0x3b')](_0x467263,function(_0x4c6d25){_0x10d4f3['push'](_0x4c6d25);})[_0x54ba('0x2e')](function(){var _0x157d52=[];for(var _0x21ef42=0x0;_0x21ef42<_0x10d4f3['length'];_0x21ef42+=0x1){var _0x1bafc1=_0x10d4f3[_0x21ef42];var _0x2678d2=createTables(_[_0x54ba('0x3c')](_0x1bafc1));var _0xf1352a;var _0x4d2606=getPDFDocDefinition(_0x2678d2);var _0x492a72=getPDFPrinter();var _0x48efac=_0x492a72[_0x54ba('0x3d')](_0x4d2606);if(_0x9a2daa){_0xf1352a=path['join'](_0x1c37f6,_0x3657d4,util['format'](_0x54ba('0x3e'),_0x3657d4,_0x21ef42,'pdf'));}else{_0xf1352a=path['join'](_0x1c37f6,util['format'](_0x54ba('0x3f'),_0x3657d4,_0x54ba('0x40')));}_0x157d52[_0x54ba('0x22')](writePDFDocument(_0x48efac,_0xf1352a));}return Promise[_0x54ba('0x41')](_0x157d52);})[_0x54ba('0x2e')](function(){if(_0x9a2daa){return new Promise(function(_0x2780cd){zipdir(path['join'](_0x1c37f6,_0x3657d4),{'saveTo':path[_0x54ba('0x3a')](_0x1c37f6,util[_0x54ba('0x1e')](_0x54ba('0x3f'),_0x3657d4,'zip'))},function(){rimraf(path[_0x54ba('0x3a')](_0x1c37f6,_0x3657d4),function(){});_0x2780cd(_0x54ba('0x42'));});});}})['then'](function(){if(!_0x9a2daa)return;rimraf(path[_0x54ba('0x3a')](_0x1c37f6,_0x3657d4),function(){});})[_0x54ba('0x2e')](function(){logger[_0x54ba('0x43')](util[_0x54ba('0x1e')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x54ba('0x44')));return analyticExtractedReport('Completed',_0x9a2daa?util[_0x54ba('0x1e')](_0x54ba('0x3f'),_0x3657d4,_0x9a2daa?'zip':_0x54ba('0x40')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x54ba('0x43')](util[_0x54ba('0x1e')](_0x54ba('0x45'),EXTRACTED_REPORT_ID,_0x54ba('0x44')));return db['AnalyticExtractedReport'][_0x54ba('0x46')]({'where':{'id':EXTRACTED_REPORT_ID}})['then'](function(_0x213117){EXTRACTED_REPORT=_0x213117;return dbH['sequelize'][_0x54ba('0x31')](util[_0x54ba('0x1e')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x54ba('0x32')][_0x54ba('0x33')][_0x54ba('0x34')]});})[_0x54ba('0x2e')](extractReport)[_0x54ba('0x47')](function(_0x23f3a0){logger['info'](util['format'](_0x54ba('0x48'),EXTRACTED_REPORT_ID,_0x54ba('0x44')),util[_0x54ba('0x49')](_0x23f3a0,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x54ba('0x4a'));})[_0x54ba('0x4b')](function(){process[_0x54ba('0x4c')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x331dd8=new PdfPrinter({'Arial':{'normal':__dirname+_0x54ba('0x4d'),'bold':__dirname+_0x54ba('0x4e'),'italics':__dirname+_0x54ba('0x4f'),'bolditalics':__dirname+_0x54ba('0x50')}});return _0x331dd8;}function getPDFDocDefinitionFromHTML(_0x18bca8,_0x906aef){var _0xf6d434=util[_0x54ba('0x1e')](_0x54ba('0x51'),_0x906aef[_0x54ba('0x52')],_0x906aef[_0x54ba('0x53')]);var _0x112dfe=moment()[_0x54ba('0x1e')](_0x54ba('0x54'))[_0x54ba('0x14')]();var _0x27c47d=htmlToPdfmake(_0x18bca8,{'window':window,'tableAutoSize':!![]});return{'content':[_0x27c47d],'defaultStyle':{'font':_0x54ba('0x55')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x54ba('0x56'),'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':_0x54ba('0x56')}},'header':function(){return[{'text':_0x54ba('0x57'),'style':_0x54ba('0x58')}];},'footer':function(_0x269d21,_0x13513a){return[{'text':util['format']('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0xf6d434,_0x269d21,_0x13513a,_0x112dfe),'style':'footer'}];}};}function writePDFDocument(_0x699f38,_0x1931f5){return new Promise(function(_0x36a589,_0x22a4e0){var _0x1786a4=_0x699f38[_0x54ba('0x59')](fs[_0x54ba('0x5a')](_0x1931f5));_0x1786a4['on'](_0x54ba('0x5b'),function(){_0x36a589('finish');});_0x1786a4['on'](_0x54ba('0x5c'),function(_0x4cb5f0){_0x22a4e0(_0x4cb5f0);});_0x699f38[_0x54ba('0x5d')]();});}exports[_0x54ba('0x5e')]=function(_0x5bb768,_0x2fca05){var _0x1d236c=getPDFPrinter();var _0x44ef3c=getPDFDocDefinitionFromHTML(_0x5bb768,_0x2fca05);var _0x1184dd=_0x1d236c[_0x54ba('0x3d')](_0x44ef3c);return writePDFDocument(_0x1184dd,_0x2fca05['path'])['catch'](function(_0x15006e){throw _0x15006e;});};