87c4f79d4181af5df5e5e1c74e7b2541a4041c6d
[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 _0x0c89=['header','pageBreak','margin','\x20/\x20','footer','Arial','black','right','Empty','find','split','then','splitSizePdf','isInteger','num','query','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','QueryTypes','SELECT','dirname','basename','.pdf','existsSync','join','mkdirSync','each','createPdfKitDocument','pdf','%s.%s','all','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','catch','inspect','Failed','exit','/fonts/arial-regular.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','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','error','end','createPdfFromHTML','util','path','moment','html-to-pdfmake','pdfmake/src/printer','rimraf','JSDOM','bluebird','../../mysqldb','dbH','../../config/logger','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','map','tableHeader','pick','toString','value','length','auto','body','push','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','startDate','endDate'];(function(_0x187e04,_0xbfe0d5){var _0x4114a0=function(_0xef708a){while(--_0xef708a){_0x187e04['push'](_0x187e04['shift']());}};_0x4114a0(++_0xbfe0d5);}(_0x0c89,0xe2));var _0x90c8=function(_0x381a62,_0x19a224){_0x381a62=_0x381a62-0x0;var _0x5b0440=_0x0c89[_0x381a62];return _0x5b0440;};'use strict';var _=require('lodash');var fs=require('fs');var util=require(_0x90c8('0x0'));var path=require(_0x90c8('0x1'));var moment=require(_0x90c8('0x2'));var htmlToPdfmake=require(_0x90c8('0x3'));var PdfPrinter=require(_0x90c8('0x4'));var zipdir=require('zip-dir');var rimraf=require(_0x90c8('0x5'));var JSDOM=require('jsdom')[_0x90c8('0x6')];var window=new JSDOM('')['window'];var BPromise=require(_0x90c8('0x7'));var db=require(_0x90c8('0x8'))['db'];var dbH=require('../../mysqldb')[_0x90c8('0x9')];var logger=require(_0x90c8('0xa'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x90c8('0xb')][0x2]);var QUERY=process[_0x90c8('0xb')][0x3];var PATH=process['argv'][0x4];var NAME=process[_0x90c8('0xb')][0x5];var FORMAT=_0x90c8('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x170fa5,_0x14cf33){var _0x20462b={'status':_0x170fa5};var _0x5f5903={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x14cf33){_0x20462b[_0x90c8('0xd')]=_0x14cf33;}return db[_0x90c8('0xe')]['update'](_0x20462b,_0x5f5903);}function getHeaders(_0x56ead6){return _[_0x90c8('0xf')](_0x56ead6,function(_0x26a837){return{'text':_0x26a837,'style':_0x90c8('0x10')};});}function getRows(_0x32225d,_0x15a287){return _[_0x90c8('0xf')](_0x15a287,function(_0x28fd71){return _(_0x28fd71)[_0x90c8('0x11')](_0x32225d)[_0x90c8('0xf')](function(_0x2a138b){return _0x2a138b?_[_0x90c8('0x12')](_0x2a138b):'';})[_0x90c8('0x13')]();});}function createTable(_0x87dfaf,_0x14c618){var _0x15638d={'widths':_['fill'](Array(_0x87dfaf[_0x90c8('0x14')]),0x91),'heights':function(_0x309ea9){return _0x309ea9===0x0?_0x90c8('0x15'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x2ccf1a=getHeaders(_0x87dfaf);_0x15638d[_0x90c8('0x16')][_0x90c8('0x17')](_0x2ccf1a);var _0x3c1dd1=getRows(_0x87dfaf,_0x14c618);_0x15638d[_0x90c8('0x16')]=_0x15638d[_0x90c8('0x16')][_0x90c8('0x18')](_0x3c1dd1);return _0x15638d;}function createTables(_0x4c35f3){var _0x29d3d6=[];var _0x5471ee=_[_0x90c8('0x19')](Object[_0x90c8('0x1a')](_0x4c35f3[0x0]),0x5);_0x5471ee[_0x90c8('0x1b')](function(_0x20e978){_0x29d3d6[_0x90c8('0x17')](createTable(_0x20e978,_0x4c35f3));});return _0x29d3d6;}function getPDFDocDefinition(_0x2d5133){var _0x8ae1a3=util[_0x90c8('0x1c')](_0x90c8('0x1d'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0x90c8('0x1e')])['format'](FORMAT),moment(EXTRACTED_REPORT[_0x90c8('0x1f')])[_0x90c8('0x1c')](FORMAT));var _0x55d390=[];for(var _0x2a277b=0x0;_0x2a277b<_0x2d5133[_0x90c8('0x14')];_0x2a277b++){var _0x245e75=[];if(_0x2a277b===0x0){_0x245e75['push']({'text':_0x8ae1a3,'style':_0x90c8('0x20')});}var _0x3cedfb={'table':_0x2d5133[_0x2a277b]};if(_0x2a277b>0x0){_0x3cedfb[_0x90c8('0x21')]='before';_0x3cedfb[_0x90c8('0x22')]=[0x0,0x46,0x0,0x0];}_0x245e75[_0x90c8('0x17')](_0x3cedfb);_0x55d390[_0x90c8('0x17')](_0x245e75);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x55d390,'footer':function(_0x404f1a,_0x38bc6f){return{'text':_0x404f1a[_0x90c8('0x12')]()+_0x90c8('0x23')+_0x38bc6f,'style':_0x90c8('0x24')};},'defaultStyle':{'font':_0x90c8('0x25')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x90c8('0x26')},'footer':{'alignment':_0x90c8('0x27'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x2f25a3){var _0x4c2640=0x1388;var _0x4e56e5;if(!_0x2f25a3[0x0]['num']){return analyticExtractedReport(_0x90c8('0x28'));}return db['Setting'][_0x90c8('0x29')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x90c8('0x2a'),'splitSizePdf']})[_0x90c8('0x2b')](function(_0x55479e){if(_0x55479e){_0x4e56e5=_0x55479e;_0x4c2640=_0x4e56e5[_0x90c8('0x2c')]||0x3e8;}})[_0x90c8('0x2b')](function(){var _0x1af2c4=[];var _0x4c4079=0x0;if(_0x4e56e5[_0x90c8('0x2a')]){if(_0x2f25a3&&_0x2f25a3[_0x90c8('0x14')]){var _0x9bc781=_['range'](_0x2f25a3[0x0]['num']/_0x4c2640);var _0x2cdbb9=Number[_0x90c8('0x2d')](_0x2f25a3[0x0]['num']/_0x4c2640)?_0x2f25a3[0x0][_0x90c8('0x2e')]%_0x4c2640:0x0;_0x9bc781['forEach'](function(_0x53e4ca){if(_0x53e4ca>0x0){_0x4c4079+=_0x4c2640;}_0x1af2c4[_0x90c8('0x17')](dbH['sequelize'][_0x90c8('0x2f')](util[_0x90c8('0x1c')](_0x90c8('0x30'),QUERY,_0x4c2640,_0x4c4079),{'type':dbH[_0x90c8('0x31')][_0x90c8('0x32')]['SELECT']}));});if(_0x2cdbb9>0x0){_0x4c4079+=_0x4c2640;_0x1af2c4['push'](dbH[_0x90c8('0x31')][_0x90c8('0x2f')](util['format'](_0x90c8('0x30'),QUERY,_0x2cdbb9,_0x4c4079),{'type':dbH[_0x90c8('0x31')][_0x90c8('0x32')][_0x90c8('0x33')]}));}}}else{_0x1af2c4['push'](dbH[_0x90c8('0x31')][_0x90c8('0x2f')](QUERY,{'type':dbH[_0x90c8('0x31')]['QueryTypes'][_0x90c8('0x33')]}));}var _0xdec452=path[_0x90c8('0x34')](PATH);var _0x4a7fa7=path[_0x90c8('0x35')](PATH,_0x90c8('0x36'));var _0x18f309=_0x4e56e5[_0x90c8('0x2a')]&&_0x1af2c4['length']>0x1;var _0x232d61=[];if(!fs[_0x90c8('0x37')](path[_0x90c8('0x38')](_0xdec452,_0x4a7fa7))&&_0x18f309){fs[_0x90c8('0x39')](path['join'](_0xdec452,_0x4a7fa7));}return BPromise[_0x90c8('0x3a')](_0x1af2c4,function(_0x230b96){_0x232d61[_0x90c8('0x17')](_0x230b96);})[_0x90c8('0x2b')](function(){var _0x2c068e=[];for(var _0x4552c4=0x0;_0x4552c4<_0x232d61[_0x90c8('0x14')];_0x4552c4+=0x1){var _0x27817b=_0x232d61[_0x4552c4];var _0x541822=createTables(_['flatten'](_0x27817b));var _0x4ee7f8;var _0x261f64=getPDFDocDefinition(_0x541822);var _0x4470bd=getPDFPrinter();var _0x209076=_0x4470bd[_0x90c8('0x3b')](_0x261f64);if(_0x18f309){_0x4ee7f8=path[_0x90c8('0x38')](_0xdec452,_0x4a7fa7,util[_0x90c8('0x1c')]('%s%d.%s',_0x4a7fa7,_0x4552c4,_0x90c8('0x3c')));}else{_0x4ee7f8=path['join'](_0xdec452,util[_0x90c8('0x1c')](_0x90c8('0x3d'),_0x4a7fa7,_0x90c8('0x3c')));}_0x2c068e[_0x90c8('0x17')](writePDFDocument(_0x209076,_0x4ee7f8));}return Promise[_0x90c8('0x3e')](_0x2c068e);})[_0x90c8('0x2b')](function(){if(_0x18f309){return new Promise(function(_0x38639a){zipdir(path['join'](_0xdec452,_0x4a7fa7),{'saveTo':path[_0x90c8('0x38')](_0xdec452,util[_0x90c8('0x1c')](_0x90c8('0x3d'),_0x4a7fa7,_0x90c8('0x3f')))},function(){rimraf(path['join'](_0xdec452,_0x4a7fa7),function(){});_0x38639a(_0x90c8('0x40'));});});}})[_0x90c8('0x2b')](function(){if(!_0x18f309)return;rimraf(path['join'](_0xdec452,_0x4a7fa7),function(){});})[_0x90c8('0x2b')](function(){logger[_0x90c8('0x41')](util[_0x90c8('0x1c')](_0x90c8('0x42'),EXTRACTED_REPORT_ID,_0x90c8('0x43')));return analyticExtractedReport('Completed',_0x18f309?util['format'](_0x90c8('0x3d'),_0x4a7fa7,_0x18f309?'zip':_0x90c8('0x3c')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x90c8('0x41')](util['format'](_0x90c8('0x44'),EXTRACTED_REPORT_ID,'PDF'));return db['AnalyticExtractedReport']['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})[_0x90c8('0x2b')](function(_0x223ab8){EXTRACTED_REPORT=_0x223ab8;return dbH[_0x90c8('0x31')][_0x90c8('0x2f')](util[_0x90c8('0x1c')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x90c8('0x31')][_0x90c8('0x32')][_0x90c8('0x33')]});})['then'](extractReport)[_0x90c8('0x45')](function(_0x1a3239){logger[_0x90c8('0x41')](util[_0x90c8('0x1c')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x90c8('0x43')),util[_0x90c8('0x46')](_0x1a3239,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x90c8('0x47'));})['finally'](function(){process[_0x90c8('0x48')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x520c2a=new PdfPrinter({'Arial':{'normal':__dirname+_0x90c8('0x49'),'bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0x90c8('0x4a')}});return _0x520c2a;}function getPDFDocDefinitionFromHTML(_0x4c5922,_0x1804c3){var _0x2f571e=util[_0x90c8('0x1c')](_0x90c8('0x4b'),_0x1804c3[_0x90c8('0x4c')],_0x1804c3['interactionId']);var _0x4e81cb=moment()[_0x90c8('0x1c')](_0x90c8('0x4d'))['toString']();var _0x168d46=htmlToPdfmake(_0x4c5922,{'window':window,'tableAutoSize':!![]});return{'content':[_0x168d46],'defaultStyle':{'font':_0x90c8('0x25')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x90c8('0x4e'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x90c8('0x4e'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x90c8('0x4f'),'style':_0x90c8('0x20')}];},'footer':function(_0xb12ccb,_0x3dfb3b){return[{'text':util['format'](_0x90c8('0x50'),_0x2f571e,_0xb12ccb,_0x3dfb3b,_0x4e81cb),'style':_0x90c8('0x24')}];}};}function writePDFDocument(_0x1733bf,_0x3ed018){return new Promise(function(_0x5e7897,_0x4eaf91){var _0x553a60=_0x1733bf['pipe'](fs[_0x90c8('0x51')](_0x3ed018));_0x553a60['on'](_0x90c8('0x52'),function(){_0x5e7897(_0x90c8('0x52'));});_0x553a60['on'](_0x90c8('0x53'),function(_0xb0535d){_0x4eaf91(_0xb0535d);});_0x1733bf[_0x90c8('0x54')]();});}exports[_0x90c8('0x55')]=function(_0x5e9a6a,_0x5a09a4){var _0xa9feea=getPDFPrinter();var _0x162490=getPDFDocDefinitionFromHTML(_0x5e9a6a,_0x5a09a4);var _0x24f4b9=_0xa9feea[_0x90c8('0x3b')](_0x162490);return writePDFDocument(_0x24f4b9,_0x5a09a4[_0x90c8('0x1')])['catch'](function(_0x3c98b7){throw _0x3c98b7;});};