Built motion from commit e781dc3c.|2.5.42
[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 _0x3af6=['interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','finish','end','util','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','JSDOM','window','bluebird','../../mysqldb','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','tableHeader','pick','toString','fill','auto','push','body','concat','chunk','keys','forEach','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','startDate','format','endDate','length','header','pageBreak','before','margin','\x20/\x20','footer','Arial','black','Empty','Setting','find','split','splitSizePdf','then','num','isInteger','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','dirname','basename','existsSync','join','mkdirSync','each','flatten','createPdfKitDocument','%s%d.%s','pdf','zip','zip\x20finished','info','PDF','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','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-bold-italic.ttf','%s\x20#%d','channel'];(function(_0x2a4c0d,_0x326aaa){var _0x232a8b=function(_0x1128d3){while(--_0x1128d3){_0x2a4c0d['push'](_0x2a4c0d['shift']());}};_0x232a8b(++_0x326aaa);}(_0x3af6,0x17c));var _0x63af=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x3af6[_0x465028];return _0xb783d4;};'use strict';var _=require('lodash');var fs=require('fs');var util=require(_0x63af('0x0'));var path=require(_0x63af('0x1'));var moment=require(_0x63af('0x2'));var htmlToPdfmake=require(_0x63af('0x3'));var PdfPrinter=require(_0x63af('0x4'));var zipdir=require(_0x63af('0x5'));var rimraf=require(_0x63af('0x6'));var JSDOM=require('jsdom')[_0x63af('0x7')];var window=new JSDOM('')[_0x63af('0x8')];var BPromise=require(_0x63af('0x9'));var db=require(_0x63af('0xa'))['db'];var dbH=require('../../mysqldb')['dbH'];var logger=require(_0x63af('0xb'))(_0x63af('0xc'));var EXTRACTED_REPORT_ID=Number(process[_0x63af('0xd')][0x2]);var QUERY=process[_0x63af('0xd')][0x3];var PATH=process[_0x63af('0xd')][0x4];var NAME=process[_0x63af('0xd')][0x5];var FORMAT=_0x63af('0xe');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x3a50c0,_0x1d095e){var _0x42e342={'status':_0x3a50c0};var _0x24062f={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1d095e){_0x42e342[_0x63af('0xf')]=_0x1d095e;}return db[_0x63af('0x10')][_0x63af('0x11')](_0x42e342,_0x24062f);}function getHeaders(_0x219a70){return _[_0x63af('0x12')](_0x219a70,function(_0x120bbc){return{'text':_0x120bbc,'style':_0x63af('0x13')};});}function getRows(_0x5bbb77,_0x105c69){return _[_0x63af('0x12')](_0x105c69,function(_0x441f23){return _(_0x441f23)[_0x63af('0x14')](_0x5bbb77)[_0x63af('0x12')](function(_0x202299){return _0x202299?_[_0x63af('0x15')](_0x202299):'';})['value']();});}function createTable(_0x5d5613,_0x43cd0b){var _0x37d974={'widths':_[_0x63af('0x16')](Array(_0x5d5613['length']),0x91),'heights':function(_0x9bf279){return _0x9bf279===0x0?_0x63af('0x17'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x4be355=getHeaders(_0x5d5613);_0x37d974['body'][_0x63af('0x18')](_0x4be355);var _0x3be32d=getRows(_0x5d5613,_0x43cd0b);_0x37d974[_0x63af('0x19')]=_0x37d974[_0x63af('0x19')][_0x63af('0x1a')](_0x3be32d);return _0x37d974;}function createTables(_0x6783c4){var _0xb641c9=[];var _0x59c44d=_[_0x63af('0x1b')](Object[_0x63af('0x1c')](_0x6783c4[0x0]),0x5);_0x59c44d[_0x63af('0x1d')](function(_0x1f9131){_0xb641c9[_0x63af('0x18')](createTable(_0x1f9131,_0x6783c4));});return _0xb641c9;}function getPDFDocDefinition(_0x59ac7a){var _0x4c038b=util['format'](_0x63af('0x1e'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0x63af('0x1f')])[_0x63af('0x20')](FORMAT),moment(EXTRACTED_REPORT[_0x63af('0x21')])[_0x63af('0x20')](FORMAT));var _0x48737d=[];for(var _0x1c9583=0x0;_0x1c9583<_0x59ac7a[_0x63af('0x22')];_0x1c9583++){var _0x8b9f96=[];if(_0x1c9583===0x0){_0x8b9f96['push']({'text':_0x4c038b,'style':_0x63af('0x23')});}var _0x35e955={'table':_0x59ac7a[_0x1c9583]};if(_0x1c9583>0x0){_0x35e955[_0x63af('0x24')]=_0x63af('0x25');_0x35e955[_0x63af('0x26')]=[0x0,0x46,0x0,0x0];}_0x8b9f96['push'](_0x35e955);_0x48737d[_0x63af('0x18')](_0x8b9f96);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x48737d,'footer':function(_0x47910a,_0x55aeb6){return{'text':_0x47910a[_0x63af('0x15')]()+_0x63af('0x27')+_0x55aeb6,'style':_0x63af('0x28')};},'defaultStyle':{'font':_0x63af('0x29')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x63af('0x2a')},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x2ed41d){var _0x2197b0=0x1388;var _0x4c0a9e;if(!_0x2ed41d[0x0]['num']){return analyticExtractedReport(_0x63af('0x2b'));}return db[_0x63af('0x2c')][_0x63af('0x2d')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x63af('0x2e'),_0x63af('0x2f')]})[_0x63af('0x30')](function(_0x51a8fe){if(_0x51a8fe){_0x4c0a9e=_0x51a8fe;_0x2197b0=_0x4c0a9e[_0x63af('0x2f')]||0x3e8;}})[_0x63af('0x30')](function(){var _0x17862d=[];var _0x469b98=0x0;if(_0x4c0a9e[_0x63af('0x2e')]){if(_0x2ed41d&&_0x2ed41d[_0x63af('0x22')]){var _0x59c1fa=_['range'](_0x2ed41d[0x0][_0x63af('0x31')]/_0x2197b0);var _0x335c38=Number[_0x63af('0x32')](_0x2ed41d[0x0][_0x63af('0x31')]/_0x2197b0)?_0x2ed41d[0x0][_0x63af('0x31')]%_0x2197b0:0x0;_0x59c1fa[_0x63af('0x1d')](function(_0x5280ed){if(_0x5280ed>0x0){_0x469b98+=_0x2197b0;}_0x17862d[_0x63af('0x18')](dbH[_0x63af('0x33')][_0x63af('0x34')](util['format'](_0x63af('0x35'),QUERY,_0x2197b0,_0x469b98),{'type':dbH['sequelize'][_0x63af('0x36')][_0x63af('0x37')]}));});if(_0x335c38>0x0){_0x469b98+=_0x2197b0;_0x17862d['push'](dbH[_0x63af('0x33')][_0x63af('0x34')](util[_0x63af('0x20')](_0x63af('0x35'),QUERY,_0x335c38,_0x469b98),{'type':dbH[_0x63af('0x33')]['QueryTypes'][_0x63af('0x37')]}));}}}else{_0x17862d[_0x63af('0x18')](dbH[_0x63af('0x33')]['query'](QUERY,{'type':dbH[_0x63af('0x33')]['QueryTypes']['SELECT']}));}var _0x17f9e9=path[_0x63af('0x38')](PATH);var _0x164df3=path[_0x63af('0x39')](PATH,'.pdf');var _0x31f093=_0x4c0a9e[_0x63af('0x2e')]&&_0x17862d[_0x63af('0x22')]>0x1;var _0x1712bd=[];if(!fs[_0x63af('0x3a')](path[_0x63af('0x3b')](_0x17f9e9,_0x164df3))&&_0x31f093){fs[_0x63af('0x3c')](path['join'](_0x17f9e9,_0x164df3));}return BPromise[_0x63af('0x3d')](_0x17862d,function(_0x96ec7f){_0x1712bd['push'](_0x96ec7f);})[_0x63af('0x30')](function(){var _0x5232da=[];for(var _0x426757=0x0;_0x426757<_0x1712bd[_0x63af('0x22')];_0x426757+=0x1){var _0x402c33=_0x1712bd[_0x426757];var _0x30b9fd=createTables(_[_0x63af('0x3e')](_0x402c33));var _0x5e49cc;var _0x1eb03e=getPDFDocDefinition(_0x30b9fd);var _0xb7e590=getPDFPrinter();var _0x2ad903=_0xb7e590[_0x63af('0x3f')](_0x1eb03e);if(_0x31f093){_0x5e49cc=path[_0x63af('0x3b')](_0x17f9e9,_0x164df3,util['format'](_0x63af('0x40'),_0x164df3,_0x426757,_0x63af('0x41')));}else{_0x5e49cc=path['join'](_0x17f9e9,util[_0x63af('0x20')]('%s.%s',_0x164df3,_0x63af('0x41')));}_0x5232da[_0x63af('0x18')](writePDFDocument(_0x2ad903,_0x5e49cc));}return Promise['all'](_0x5232da);})['then'](function(){if(_0x31f093){return new Promise(function(_0x2d7162){zipdir(path['join'](_0x17f9e9,_0x164df3),{'saveTo':path[_0x63af('0x3b')](_0x17f9e9,util[_0x63af('0x20')]('%s.%s',_0x164df3,_0x63af('0x42')))},function(){rimraf(path[_0x63af('0x3b')](_0x17f9e9,_0x164df3),function(){});_0x2d7162(_0x63af('0x43'));});});}})[_0x63af('0x30')](function(){if(!_0x31f093)return;rimraf(path[_0x63af('0x3b')](_0x17f9e9,_0x164df3),function(){});})['then'](function(){logger[_0x63af('0x44')](util[_0x63af('0x20')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x63af('0x45')));return analyticExtractedReport(_0x63af('0x46'),_0x31f093?util[_0x63af('0x20')]('%s.%s',_0x164df3,_0x31f093?_0x63af('0x42'):'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x63af('0x20')](_0x63af('0x47'),EXTRACTED_REPORT_ID,_0x63af('0x45')));return db[_0x63af('0x10')][_0x63af('0x48')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x63af('0x30')](function(_0x560c60){EXTRACTED_REPORT=_0x560c60;return dbH[_0x63af('0x33')]['query'](util[_0x63af('0x20')](_0x63af('0x49'),QUERY),{'type':dbH[_0x63af('0x33')][_0x63af('0x36')][_0x63af('0x37')]});})[_0x63af('0x30')](extractReport)[_0x63af('0x4a')](function(_0x52115c){logger[_0x63af('0x44')](util['format'](_0x63af('0x4b'),EXTRACTED_REPORT_ID,'PDF'),util[_0x63af('0x4c')](_0x52115c,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x63af('0x4d'));})[_0x63af('0x4e')](function(){process[_0x63af('0x4f')](EXIT_CODE);});}main();function getPDFPrinter(){var _0xc17b42=new PdfPrinter({'Arial':{'normal':__dirname+_0x63af('0x50'),'bold':__dirname+_0x63af('0x51'),'italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0x63af('0x52')}});return _0xc17b42;}function getPDFDocDefinitionFromHTML(_0xbff290,_0x516ace){var _0x210914=util[_0x63af('0x20')](_0x63af('0x53'),_0x516ace[_0x63af('0x54')],_0x516ace[_0x63af('0x55')]);var _0x24ca33=moment()[_0x63af('0x20')](_0x63af('0x56'))[_0x63af('0x15')]();var _0x3567f1=htmlToPdfmake(_0xbff290,{'window':window,'tableAutoSize':!![]});return{'content':[_0x3567f1],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x63af('0x57'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x63af('0x57'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x63af('0x58'),'style':_0x63af('0x23')}];},'footer':function(_0x4f8542,_0x1e56b8){return[{'text':util['format'](_0x63af('0x59'),_0x210914,_0x4f8542,_0x1e56b8,_0x24ca33),'style':_0x63af('0x28')}];}};}function writePDFDocument(_0x5b0eb9,_0x339df6){return new Promise(function(_0x2b5961,_0x38185f){var _0x27aff1=_0x5b0eb9[_0x63af('0x5a')](fs['createWriteStream'](_0x339df6));_0x27aff1['on'](_0x63af('0x5b'),function(){_0x2b5961(_0x63af('0x5b'));});_0x27aff1['on']('error',function(_0x1b90f5){_0x38185f(_0x1b90f5);});_0x5b0eb9[_0x63af('0x5c')]();});}exports['createPdfFromHTML']=function(_0x44eb29,_0x4d6999){var _0xa0e923=getPDFPrinter();var _0x3aeb49=getPDFDocDefinitionFromHTML(_0x44eb29,_0x4d6999);var _0x21e522=_0xa0e923[_0x63af('0x3f')](_0x3aeb49);return writePDFDocument(_0x21e522,_0x4d6999[_0x63af('0x1')])[_0x63af('0x4a')](function(_0x9b7d74){throw _0x9b7d74;});};