ff05e45cb74b350c59a17176a225513fddb4ceb4
[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 _0x94ff=['join','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','all','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','findOne','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-bold.ttf','%s\x20#%d','channel','YYYY-MM-DD','toString','Arial','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','createPdfFromHTML','lodash','util','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','window','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','tableHeader','value','fill','length','auto','body','push','concat','chunk','keys','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','header','pageBreak','before','margin','footer','black','right','num','Empty','find','splitSizePdf','then','split','range','forEach','sequelize','QueryTypes','SELECT','query','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.pdf','existsSync'];(function(_0x328b1c,_0xec0b4f){var _0x4dbeaa=function(_0x432519){while(--_0x432519){_0x328b1c['push'](_0x328b1c['shift']());}};_0x4dbeaa(++_0xec0b4f);}(_0x94ff,0x19a));var _0xf94f=function(_0x330faf,_0x4834ad){_0x330faf=_0x330faf-0x0;var _0x239bee=_0x94ff[_0x330faf];return _0x239bee;};'use strict';var _=require(_0xf94f('0x0'));var fs=require('fs');var util=require(_0xf94f('0x1'));var path=require(_0xf94f('0x2'));var moment=require(_0xf94f('0x3'));var htmlToPdfmake=require(_0xf94f('0x4'));var PdfPrinter=require(_0xf94f('0x5'));var zipdir=require(_0xf94f('0x6'));var rimraf=require(_0xf94f('0x7'));var JSDOM=require(_0xf94f('0x8'))[_0xf94f('0x9')];var window=new JSDOM('')[_0xf94f('0xa')];var BPromise=require('bluebird');var db=require(_0xf94f('0xb'))['db'];var dbH=require(_0xf94f('0xb'))[_0xf94f('0xc')];var logger=require(_0xf94f('0xd'))(_0xf94f('0xe'));var EXTRACTED_REPORT_ID=Number(process[_0xf94f('0xf')][0x2]);var QUERY=process[_0xf94f('0xf')][0x3];var PATH=process['argv'][0x4];var NAME=process[_0xf94f('0xf')][0x5];var FORMAT=_0xf94f('0x10');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x21cad9,_0x35c920){var _0x53e313={'status':_0x21cad9};var _0x3bbd16={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x35c920){_0x53e313[_0xf94f('0x11')]=_0x35c920;}return db[_0xf94f('0x12')][_0xf94f('0x13')](_0x53e313,_0x3bbd16);}function getHeaders(_0x20e5cd){return _[_0xf94f('0x14')](_0x20e5cd,function(_0xdb8543){return{'text':_0xdb8543,'style':_0xf94f('0x15')};});}function getRows(_0x3e0c9c,_0x47395a){return _[_0xf94f('0x14')](_0x47395a,function(_0x57cb31){return _(_0x57cb31)['pick'](_0x3e0c9c)[_0xf94f('0x14')](function(_0x2ef51e){return _0x2ef51e?_['toString'](_0x2ef51e):'';})[_0xf94f('0x16')]();});}function createTable(_0x1110f8,_0x10b504){var _0x4c4743={'widths':_[_0xf94f('0x17')](Array(_0x1110f8[_0xf94f('0x18')]),0x91),'heights':function(_0x212075){return _0x212075===0x0?_0xf94f('0x19'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x331633=getHeaders(_0x1110f8);_0x4c4743[_0xf94f('0x1a')][_0xf94f('0x1b')](_0x331633);var _0x3e6e83=getRows(_0x1110f8,_0x10b504);_0x4c4743[_0xf94f('0x1a')]=_0x4c4743[_0xf94f('0x1a')][_0xf94f('0x1c')](_0x3e6e83);return _0x4c4743;}function createTables(_0x491c2e){var _0x534b2d=[];var _0x174ed3=_[_0xf94f('0x1d')](Object[_0xf94f('0x1e')](_0x491c2e[0x0]),0x5);_0x174ed3['forEach'](function(_0xf34352){_0x534b2d['push'](createTable(_0xf34352,_0x491c2e));});return _0x534b2d;}function getPDFDocDefinition(_0x59f589){var _0x5b1775=util[_0xf94f('0x1f')](_0xf94f('0x20'),NAME,EXTRACTED_REPORT[_0xf94f('0x21')],moment(EXTRACTED_REPORT[_0xf94f('0x22')])[_0xf94f('0x1f')](FORMAT),moment(EXTRACTED_REPORT[_0xf94f('0x23')])[_0xf94f('0x1f')](FORMAT));var _0x47cdd0=[];for(var _0x763821=0x0;_0x763821<_0x59f589['length'];_0x763821++){var _0x1f2dd0=[];if(_0x763821===0x0){_0x1f2dd0['push']({'text':_0x5b1775,'style':_0xf94f('0x24')});}var _0x5f2388={'table':_0x59f589[_0x763821]};if(_0x763821>0x0){_0x5f2388[_0xf94f('0x25')]=_0xf94f('0x26');_0x5f2388[_0xf94f('0x27')]=[0x0,0x46,0x0,0x0];}_0x1f2dd0[_0xf94f('0x1b')](_0x5f2388);_0x47cdd0['push'](_0x1f2dd0);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x47cdd0,'footer':function(_0x2edcac,_0x47260c){return{'text':_0x2edcac['toString']()+'\x20/\x20'+_0x47260c,'style':_0xf94f('0x28')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0xf94f('0x29')},'footer':{'alignment':_0xf94f('0x2a'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x4ac520){var _0x4149b6=0x1388;var _0x6bccd5;if(!_0x4ac520[0x0][_0xf94f('0x2b')]){return analyticExtractedReport(_0xf94f('0x2c'));}return db['Setting'][_0xf94f('0x2d')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0xf94f('0x2e')]})[_0xf94f('0x2f')](function(_0x1f2276){if(_0x1f2276){_0x6bccd5=_0x1f2276;_0x4149b6=_0x6bccd5[_0xf94f('0x2e')]||0x3e8;}})[_0xf94f('0x2f')](function(){var _0x379358=[];var _0x22c9e5=0x0;if(_0x6bccd5[_0xf94f('0x30')]){if(_0x4ac520&&_0x4ac520[_0xf94f('0x18')]){var _0x38ba3f=_[_0xf94f('0x31')](_0x4ac520[0x0]['num']/_0x4149b6);var _0x5842be=Number['isInteger'](_0x4ac520[0x0][_0xf94f('0x2b')]/_0x4149b6)?_0x4ac520[0x0][_0xf94f('0x2b')]%_0x4149b6:0x0;_0x38ba3f[_0xf94f('0x32')](function(_0x8e742b){if(_0x8e742b>0x0){_0x22c9e5+=_0x4149b6;}_0x379358[_0xf94f('0x1b')](dbH[_0xf94f('0x33')]['query'](util[_0xf94f('0x1f')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x4149b6,_0x22c9e5),{'type':dbH['sequelize'][_0xf94f('0x34')][_0xf94f('0x35')]}));});if(_0x5842be>0x0){_0x22c9e5+=_0x4149b6;_0x379358[_0xf94f('0x1b')](dbH[_0xf94f('0x33')][_0xf94f('0x36')](util[_0xf94f('0x1f')](_0xf94f('0x37'),QUERY,_0x5842be,_0x22c9e5),{'type':dbH[_0xf94f('0x33')]['QueryTypes']['SELECT']}));}}}else{_0x379358['push'](dbH[_0xf94f('0x33')][_0xf94f('0x36')](QUERY,{'type':dbH[_0xf94f('0x33')][_0xf94f('0x34')][_0xf94f('0x35')]}));}var _0xa4d214=path[_0xf94f('0x38')](PATH);var _0x49a89f=path[_0xf94f('0x39')](PATH,_0xf94f('0x3a'));var _0x3ccbad=_0x6bccd5[_0xf94f('0x30')]&&_0x379358['length']>0x1;var _0x27c525=[];if(!fs[_0xf94f('0x3b')](path['join'](_0xa4d214,_0x49a89f))&&_0x3ccbad){fs['mkdirSync'](path[_0xf94f('0x3c')](_0xa4d214,_0x49a89f));}return BPromise['each'](_0x379358,function(_0x1dee8e){_0x27c525[_0xf94f('0x1b')](_0x1dee8e);})[_0xf94f('0x2f')](function(){var _0x2c6bd8=[];for(var _0x45d6ea=0x0;_0x45d6ea<_0x27c525[_0xf94f('0x18')];_0x45d6ea+=0x1){var _0x223843=_0x27c525[_0x45d6ea];var _0x49dd4a=createTables(_[_0xf94f('0x3d')](_0x223843));var _0xdf5e42;var _0x16a101=getPDFDocDefinition(_0x49dd4a);var _0x15070f=getPDFPrinter();var _0x4ac9d7=_0x15070f[_0xf94f('0x3e')](_0x16a101);if(_0x3ccbad){_0xdf5e42=path[_0xf94f('0x3c')](_0xa4d214,_0x49a89f,util['format'](_0xf94f('0x3f'),_0x49a89f,_0x45d6ea,_0xf94f('0x40')));}else{_0xdf5e42=path[_0xf94f('0x3c')](_0xa4d214,util[_0xf94f('0x1f')](_0xf94f('0x41'),_0x49a89f,'pdf'));}_0x2c6bd8[_0xf94f('0x1b')](writePDFDocument(_0x4ac9d7,_0xdf5e42));}return Promise[_0xf94f('0x42')](_0x2c6bd8);})[_0xf94f('0x2f')](function(){if(_0x3ccbad){return new Promise(function(_0x5e8f3c){zipdir(path['join'](_0xa4d214,_0x49a89f),{'saveTo':path[_0xf94f('0x3c')](_0xa4d214,util['format']('%s.%s',_0x49a89f,_0xf94f('0x43')))},function(){rimraf(path[_0xf94f('0x3c')](_0xa4d214,_0x49a89f),function(){});_0x5e8f3c(_0xf94f('0x44'));});});}})[_0xf94f('0x2f')](function(){if(!_0x3ccbad)return;rimraf(path['join'](_0xa4d214,_0x49a89f),function(){});})[_0xf94f('0x2f')](function(){logger[_0xf94f('0x45')](util[_0xf94f('0x1f')](_0xf94f('0x46'),EXTRACTED_REPORT_ID,_0xf94f('0x47')));return analyticExtractedReport('Completed',_0x3ccbad?util[_0xf94f('0x1f')]('%s.%s',_0x49a89f,_0x3ccbad?'zip':_0xf94f('0x40')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xf94f('0x45')](util[_0xf94f('0x1f')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xf94f('0x47')));return db[_0xf94f('0x12')][_0xf94f('0x48')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xf94f('0x2f')](function(_0x221620){EXTRACTED_REPORT=_0x221620;return dbH[_0xf94f('0x33')][_0xf94f('0x36')](util[_0xf94f('0x1f')](_0xf94f('0x49'),QUERY),{'type':dbH[_0xf94f('0x33')][_0xf94f('0x34')][_0xf94f('0x35')]});})[_0xf94f('0x2f')](extractReport)[_0xf94f('0x4a')](function(_0x5db024){logger[_0xf94f('0x45')](util['format'](_0xf94f('0x4b'),EXTRACTED_REPORT_ID,_0xf94f('0x47')),util[_0xf94f('0x4c')](_0x5db024,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0xf94f('0x4d')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x21504b=new PdfPrinter({'Arial':{'normal':__dirname+_0xf94f('0x4e'),'bold':__dirname+_0xf94f('0x4f'),'italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+'/fonts/arial-bold-italic.ttf'}});return _0x21504b;}function getPDFDocDefinitionFromHTML(_0xf08096,_0x330950){var _0x46cc86=util['format'](_0xf94f('0x50'),_0x330950[_0xf94f('0x51')],_0x330950['interactionId']);var _0x50de3a=moment()[_0xf94f('0x1f')](_0xf94f('0x52'))[_0xf94f('0x53')]();var _0x4a3d5d=htmlToPdfmake(_0xf08096,{'window':window,'tableAutoSize':!![]});return{'content':[_0x4a3d5d],'defaultStyle':{'font':_0xf94f('0x54')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xf94f('0x55'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0xf94f('0x55'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0xf94f('0x56'),'style':_0xf94f('0x24')}];},'footer':function(_0x2ec461,_0xcebf86){return[{'text':util['format'](_0xf94f('0x57'),_0x46cc86,_0x2ec461,_0xcebf86,_0x50de3a),'style':_0xf94f('0x28')}];}};}function writePDFDocument(_0x1cf2ae,_0x439a45){return new Promise(function(_0x11e2bc,_0x3b7bf8){var _0x45532b=_0x1cf2ae[_0xf94f('0x58')](fs[_0xf94f('0x59')](_0x439a45));_0x45532b['on']('finish',function(){_0x11e2bc(_0xf94f('0x5a'));});_0x45532b['on'](_0xf94f('0x5b'),function(_0x58bf2f){_0x3b7bf8(_0x58bf2f);});_0x1cf2ae[_0xf94f('0x5c')]();});}exports[_0xf94f('0x5d')]=function(_0x173869,_0x2f3fd0){var _0x30eb82=getPDFPrinter();var _0x4c1f57=getPDFDocDefinitionFromHTML(_0x173869,_0x2f3fd0);var _0x4fd144=_0x30eb82[_0xf94f('0x3e')](_0x4c1f57);return writePDFDocument(_0x4fd144,_0x2f3fd0['path'])[_0xf94f('0x4a')](function(_0x4f5073){throw _0x4f5073;});};