Built motion from commit c116dc8b.|2.6.30
[motion2.git] / server / api / smsInteraction / smsInteraction.controller.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 _0xaee9=['includeAll','include','merge','find','catch','create','body','update','params','describe','addMessage','ids','omit','getMessages','hasOwnProperty','nolimit','order','sort','where','pick','SmsInteractionId','filter','map','$gte','split','SmsMessage','rows','addTags','setTags','spread','Tag','color','smsInteractionTags:save','removeTags','download','join','root','format','transcript-%d-%s.zip','push','User','fullname','CmContact','firstName','lastName','Messages','createdAt','direction','secret','SmsAccount','Account','Owner','mkdirSync','Sms','YYYY-MM-DD\x20HH:mm:ss','toString','closed','closedAt','System','out','read','value','server','views','transcript-','createPdfFromHTML','log','err','unlinkSync','rimraf','moment','bluebird','util','path','ejs','ioredis','../../components/export/pdf','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','destroy','then','stack','name','send','SmsInteraction','rawAttributes','type','getOptions','findAll','query','user','show','keys','filters','intersection','model','fields','attributes','length'];(function(_0x4f3207,_0x264c78){var _0x87adb6=function(_0x562c05){while(--_0x562c05){_0x4f3207['push'](_0x4f3207['shift']());}};_0x87adb6(++_0x264c78);}(_0xaee9,0xb8));var _0x9aee=function(_0x3bf98d,_0x390b5e){_0x3bf98d=_0x3bf98d-0x0;var _0x272740=_0xaee9[_0x3bf98d];return _0x272740;};'use strict';var rimraf=require(_0x9aee('0x0'));var zipdir=require('zip-dir');var moment=require(_0x9aee('0x1'));var BPromise=require(_0x9aee('0x2'));var util=require(_0x9aee('0x3'));var path=require(_0x9aee('0x4'));var ejs=require(_0x9aee('0x5'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x9aee('0x6'));var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var pdf=require(_0x9aee('0x7'));var logger=require(_0x9aee('0x8'))('api');var config=require(_0x9aee('0x9'));var db=require(_0x9aee('0xa'))['db'];config[_0x9aee('0xb')]=_[_0x9aee('0xc')](config[_0x9aee('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x9aee('0xd'))(new Redis(config[_0x9aee('0xb')]));require(_0x9aee('0xe'))[_0x9aee('0xf')](socket);function respondWithStatusCode(_0x2b3cf9,_0x88953f){_0x88953f=_0x88953f||0xcc;return function(_0x382586){if(_0x382586){return _0x2b3cf9[_0x9aee('0x10')](_0x88953f);}return _0x2b3cf9[_0x9aee('0x11')](_0x88953f)[_0x9aee('0x12')]();};}function respondWithResult(_0x2556c5,_0x5e82fd){_0x5e82fd=_0x5e82fd||0xc8;return function(_0x123b4c){if(_0x123b4c){return _0x2556c5[_0x9aee('0x11')](_0x5e82fd)['json'](_0x123b4c);}};}function respondWithFilteredResult(_0x32b8f7,_0xa4ec16){return function(_0x5eeec2){if(_0x5eeec2){var _0x156c19=typeof _0xa4ec16[_0x9aee('0x13')]===_0x9aee('0x14')&&typeof _0xa4ec16[_0x9aee('0x15')]===_0x9aee('0x14');var _0x544ce1=_0x5eeec2[_0x9aee('0x16')];var _0x5a6251=_0x156c19?0x0:_0xa4ec16[_0x9aee('0x13')];var _0x596955=_0x156c19?_0x5eeec2['count']:_0xa4ec16[_0x9aee('0x13')]+_0xa4ec16['limit'];var _0x5c9f06;if(_0x596955>=_0x544ce1){_0x596955=_0x544ce1;_0x5c9f06=0xc8;}else{_0x5c9f06=0xce;}_0x32b8f7[_0x9aee('0x11')](_0x5c9f06);return _0x32b8f7[_0x9aee('0x17')](_0x9aee('0x18'),_0x5a6251+'-'+_0x596955+'/'+_0x544ce1)[_0x9aee('0x19')](_0x5eeec2);}return null;};}function saveUpdates(_0x153316){return function(_0x48b8e3){if(_0x48b8e3){return _0x48b8e3['update'](_0x153316)['then'](function(_0x10cc1e){return _0x10cc1e;});}return null;};}function removeEntity(_0x2bab05){return function(_0x4a9848){if(_0x4a9848){return _0x4a9848[_0x9aee('0x1a')]()[_0x9aee('0x1b')](function(){_0x2bab05['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1cac21){return function(_0x4c3751){if(!_0x4c3751){_0x1cac21[_0x9aee('0x10')](0x194);}return _0x4c3751;};}function handleError(_0xd21552,_0x3b9538){_0x3b9538=_0x3b9538||0x1f4;return function(_0xaaae34){logger['error'](_0xaaae34[_0x9aee('0x1c')]);if(_0xaaae34['name']){delete _0xaaae34[_0x9aee('0x1d')];}_0xd21552['status'](_0x3b9538)[_0x9aee('0x1e')](_0xaaae34);};}exports['index']=function(_0x27632f,_0x8de9f2){var _0x16bb75={};var _0xe18af1=_['map'](db[_0x9aee('0x1f')][_0x9aee('0x20')],function(_0x59547e){return{'name':_0x59547e['fieldName'],'type':_0x59547e[_0x9aee('0x21')]['key']};});_0x16bb75=qs[_0x9aee('0x22')](_0xe18af1,_0x27632f);return interaction[_0x9aee('0x23')]('sms',_0x27632f[_0x9aee('0x24')],_0x27632f[_0x9aee('0x25')],_0x16bb75,_0xe18af1)['then'](respondWithFilteredResult(_0x8de9f2,_0x16bb75))['catch'](handleError(_0x8de9f2,null));};exports[_0x9aee('0x26')]=function(_0x147428,_0x188349){var _0x5cecfa={'raw':![],'where':{'id':_0x147428['params']['id']}},_0x1222a4={};_0x1222a4['model']=_[_0x9aee('0x27')](db[_0x9aee('0x1f')][_0x9aee('0x20')]);_0x1222a4[_0x9aee('0x24')]=_[_0x9aee('0x27')](_0x147428['query']);_0x1222a4[_0x9aee('0x28')]=_[_0x9aee('0x29')](_0x1222a4['model'],_0x1222a4[_0x9aee('0x24')]);_0x5cecfa['attributes']=_[_0x9aee('0x29')](_0x1222a4[_0x9aee('0x2a')],qs['fields'](_0x147428[_0x9aee('0x24')][_0x9aee('0x2b')]));_0x5cecfa[_0x9aee('0x2c')]=_0x5cecfa[_0x9aee('0x2c')][_0x9aee('0x2d')]?_0x5cecfa[_0x9aee('0x2c')]:_0x1222a4[_0x9aee('0x2a')];if(_0x147428[_0x9aee('0x24')][_0x9aee('0x2e')]){_0x5cecfa[_0x9aee('0x2f')]=[{'all':!![]}];}_0x5cecfa=_[_0x9aee('0x30')]({},_0x5cecfa,_0x147428['options']);return db['SmsInteraction'][_0x9aee('0x31')](_0x5cecfa)[_0x9aee('0x1b')](handleEntityNotFound(_0x188349,null))[_0x9aee('0x1b')](respondWithResult(_0x188349,null))[_0x9aee('0x32')](handleError(_0x188349,null));};exports[_0x9aee('0x33')]=function(_0x2891f1,_0x115aa0){return db[_0x9aee('0x1f')]['create'](_0x2891f1[_0x9aee('0x34')],{})[_0x9aee('0x1b')](respondWithResult(_0x115aa0,0xc9))[_0x9aee('0x32')](handleError(_0x115aa0,null));};exports[_0x9aee('0x35')]=function(_0x4c8204,_0x49bb1b){if(_0x4c8204[_0x9aee('0x34')]['id']){delete _0x4c8204[_0x9aee('0x34')]['id'];}return db[_0x9aee('0x1f')][_0x9aee('0x31')]({'where':{'id':_0x4c8204[_0x9aee('0x36')]['id']}})[_0x9aee('0x1b')](handleEntityNotFound(_0x49bb1b,null))['then'](saveUpdates(_0x4c8204['body'],null))[_0x9aee('0x1b')](respondWithResult(_0x49bb1b,null))['catch'](handleError(_0x49bb1b,null));};exports['destroy']=function(_0x331174,_0x1c3f25){return db[_0x9aee('0x1f')][_0x9aee('0x31')]({'where':{'id':_0x331174[_0x9aee('0x36')]['id']}})[_0x9aee('0x1b')](handleEntityNotFound(_0x1c3f25,null))[_0x9aee('0x1b')](removeEntity(_0x1c3f25,null))[_0x9aee('0x32')](handleError(_0x1c3f25,null));};exports[_0x9aee('0x37')]=function(_0xd66025,_0x4a34a6){return db[_0x9aee('0x1f')][_0x9aee('0x37')]()[_0x9aee('0x1b')](respondWithResult(_0x4a34a6,null))[_0x9aee('0x32')](handleError(_0x4a34a6,null));};exports[_0x9aee('0x38')]=function(_0x52359b,_0x47b6cc){return db['SmsMessage']['find']({'where':{'id':_0x52359b['params']['id']}})['then'](handleEntityNotFound(_0x47b6cc,null))['then'](function(_0x6fc65a){if(_0x6fc65a){return _0x6fc65a['addMessage'](_0x52359b[_0x9aee('0x34')][_0x9aee('0x39')],_[_0x9aee('0x3a')](_0x52359b[_0x9aee('0x34')],[_0x9aee('0x39'),'id'])||{});}})[_0x9aee('0x1b')](respondWithResult(_0x47b6cc,null))['catch'](handleError(_0x47b6cc,null));};exports[_0x9aee('0x3b')]=function(_0x16dbe0,_0x27fce0){var _0x5b7a66={'raw':![],'where':{}};var _0x26c4cd={};var _0x16db29={'count':0x0,'rows':[]};return db[_0x9aee('0x1f')]['findOne']({'where':{'id':_0x16dbe0[_0x9aee('0x36')]['id']}})[_0x9aee('0x1b')](handleEntityNotFound(_0x27fce0,null))['then'](function(_0x1eea2a){if(_0x1eea2a){_0x26c4cd[_0x9aee('0x2a')]=_['keys'](db['SmsMessage'][_0x9aee('0x20')]);_0x26c4cd[_0x9aee('0x24')]=_['keys'](_0x16dbe0[_0x9aee('0x24')]);_0x26c4cd[_0x9aee('0x28')]=_[_0x9aee('0x29')](_0x26c4cd[_0x9aee('0x2a')],_0x26c4cd[_0x9aee('0x24')]);_0x5b7a66['attributes']=_[_0x9aee('0x29')](_0x26c4cd[_0x9aee('0x2a')],qs['fields'](_0x16dbe0[_0x9aee('0x24')]['fields']));_0x5b7a66[_0x9aee('0x2c')]=_0x5b7a66[_0x9aee('0x2c')][_0x9aee('0x2d')]?_0x5b7a66[_0x9aee('0x2c')]:_0x26c4cd[_0x9aee('0x2a')];if(!_0x16dbe0[_0x9aee('0x24')][_0x9aee('0x3c')](_0x9aee('0x3d'))){_0x5b7a66['limit']=qs[_0x9aee('0x15')](_0x16dbe0[_0x9aee('0x24')][_0x9aee('0x15')]);_0x5b7a66[_0x9aee('0x13')]=qs[_0x9aee('0x13')](_0x16dbe0[_0x9aee('0x24')][_0x9aee('0x13')]);}_0x5b7a66[_0x9aee('0x3e')]=qs[_0x9aee('0x3f')](_0x16dbe0[_0x9aee('0x24')][_0x9aee('0x3f')]);_0x5b7a66[_0x9aee('0x40')]=qs['filters'](_[_0x9aee('0x41')](_0x16dbe0['query'],_0x26c4cd['filters']));_0x5b7a66[_0x9aee('0x40')][_0x9aee('0x42')]=_0x1eea2a['id'];if(_0x16dbe0[_0x9aee('0x24')][_0x9aee('0x43')]){_0x5b7a66[_0x9aee('0x40')]=_[_0x9aee('0x30')](_0x5b7a66[_0x9aee('0x40')],{'$or':_[_0x9aee('0x44')](_0x5b7a66[_0x9aee('0x2c')],function(_0x361819){var _0x2025b0={};_0x2025b0[_0x361819]={'$like':'%'+_0x16dbe0[_0x9aee('0x24')]['filter']+'%'};return _0x2025b0;})});}if(_0x16dbe0[_0x9aee('0x24')][_0x9aee('0x45')]){var _0x13bbf9=_0x16dbe0[_0x9aee('0x24')][_0x9aee('0x45')][_0x9aee('0x46')](',');var _0x2c6b30={};_0x2c6b30[_0x13bbf9[0x0]]={'$gte':moment(_0x13bbf9[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x5b7a66[_0x9aee('0x40')]=_[_0x9aee('0x30')](_0x5b7a66['where'],_0x2c6b30);}_0x5b7a66=_[_0x9aee('0x30')]({},_0x5b7a66,_0x16dbe0['options']);return db['SmsMessage'][_0x9aee('0x16')]({'where':_0x5b7a66[_0x9aee('0x40')]})['then'](function(_0x462122){_0x16db29['count']=_0x462122;if(_0x16dbe0[_0x9aee('0x24')]['includeAll']){_0x5b7a66[_0x9aee('0x2f')]=[{'all':!![]}];}return db[_0x9aee('0x47')][_0x9aee('0x23')](_0x5b7a66);})[_0x9aee('0x1b')](function(_0x30a26f){_0x16db29[_0x9aee('0x48')]=_0x30a26f;return _0x16db29;});}})['then'](respondWithFilteredResult(_0x27fce0,_0x5b7a66))[_0x9aee('0x32')](handleError(_0x27fce0,null));};exports[_0x9aee('0x49')]=function(_0x167512,_0x418b5e){return db[_0x9aee('0x1f')][_0x9aee('0x31')]({'where':{'id':_0x167512['params']['id']}})[_0x9aee('0x1b')](handleEntityNotFound(_0x418b5e,null))['then'](function(_0x9cd6e2){if(_0x9cd6e2){return _0x9cd6e2[_0x9aee('0x4a')](_0x167512[_0x9aee('0x34')][_0x9aee('0x39')],_[_0x9aee('0x3a')](_0x167512['body'],[_0x9aee('0x39'),'id'])||{})[_0x9aee('0x4b')](function(){return db[_0x9aee('0x4c')]['findAll']({'attributes':['id',_0x9aee('0x1d'),_0x9aee('0x4d')],'where':{'id':_0x167512['body'][_0x9aee('0x39')]}});})[_0x9aee('0x1b')](function(_0x577331){socket['emit'](_0x9aee('0x4e'),{'id':Number(_0x167512[_0x9aee('0x36')]['id']),'tags':_0x577331||[]});return{'id':Number(_0x167512['params']['id']),'tags':_0x577331||[]};});}})[_0x9aee('0x1b')](respondWithResult(_0x418b5e,null))[_0x9aee('0x32')](handleError(_0x418b5e,null));};exports[_0x9aee('0x4f')]=function(_0x45ea61,_0x2bfc55){return db[_0x9aee('0x1f')][_0x9aee('0x31')]({'where':{'id':_0x45ea61['params']['id']}})[_0x9aee('0x1b')](handleEntityNotFound(_0x2bfc55,null))[_0x9aee('0x1b')](function(_0x12ca90){if(_0x12ca90){return _0x12ca90[_0x9aee('0x4f')](_0x45ea61[_0x9aee('0x24')][_0x9aee('0x39')]);}})[_0x9aee('0x1b')](respondWithStatusCode(_0x2bfc55,null))['catch'](handleError(_0x2bfc55,null));};exports[_0x9aee('0x50')]=function(_0x566e4b,_0x3bfd7c){var _0x2c3fd8=moment()['unix']()['toString']();var _0xad2da7=path[_0x9aee('0x51')](config[_0x9aee('0x52')],'server','files','tmp');var _0x56ba13=path['join'](_0xad2da7,_0x2c3fd8);var _0x3b6df0=util[_0x9aee('0x53')](_0x9aee('0x54'),_0x566e4b['params']['id'],_0x2c3fd8);var _0x4b6c4f=path['join'](_0xad2da7,_0x3b6df0);var _0x1697a9=[];_0x1697a9[_0x9aee('0x55')]({'model':db['User'],'as':_0x9aee('0x56'),'attributes':['id',_0x9aee('0x57')],'raw':!![]});_0x1697a9[_0x9aee('0x55')]({'model':db[_0x9aee('0x58')],'as':'Contact','attributes':['id',_0x9aee('0x59'),_0x9aee('0x5a')],'raw':!![]});var _0x11d42a=[{'model':db[_0x9aee('0x47')],'as':_0x9aee('0x5b'),'attributes':['id',_0x9aee('0x34'),_0x9aee('0x5c'),_0x9aee('0x5d'),_0x9aee('0x5e'),'read'],'include':_0x1697a9}];_0x11d42a[_0x9aee('0x55')]({'model':db[_0x9aee('0x5f')],'as':_0x9aee('0x60'),'attributes':['id',_0x9aee('0x1d')]});_0x11d42a[_0x9aee('0x55')]({'model':db['User'],'as':_0x9aee('0x61'),'attributes':['id','fullname']});return db[_0x9aee('0x1f')]['find']({'where':{'id':_0x566e4b[_0x9aee('0x36')]['id']},'include':_0x11d42a})[_0x9aee('0x1b')](handleEntityNotFound(_0x3bfd7c,null))[_0x9aee('0x1b')](function(_0x20f3a1){if(_0x20f3a1){var _0x4445af=_0x20f3a1['get']({'plain':!![]});fs[_0x9aee('0x62')](_0x56ba13);var _0x22ce42={'channel':_0x9aee('0x63'),'account':_0x4445af[_0x9aee('0x60')]['name'],'agent':_0x4445af[_0x9aee('0x61')]?_0x4445af[_0x9aee('0x61')]['fullname']:'N.A.','createdAt':moment(_0x4445af[_0x9aee('0x5c')])[_0x9aee('0x53')](_0x9aee('0x64'))[_0x9aee('0x65')](),'closedAt':_0x4445af[_0x9aee('0x66')]?moment(_0x4445af[_0x9aee('0x67')])[_0x9aee('0x53')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x4445af['disposition'],'messages':_(_0x4445af[_0x9aee('0x5b')])[_0x9aee('0x43')]({'secret':![]})[_0x9aee('0x44')](function(_0x490603){return{'date':moment(_0x490603[_0x9aee('0x5c')])[_0x9aee('0x53')](_0x9aee('0x64'))[_0x9aee('0x65')](),'sender':_0x490603['direction']==='out'?_0x490603['User']?_0x490603[_0x9aee('0x56')][_0x9aee('0x57')]:_0x9aee('0x68'):_0x490603['Contact']['firstName']+(_0x490603['Contact'][_0x9aee('0x5a')]?'\x20'+_0x490603['Contact'][_0x9aee('0x5a')]:''),'body':_0x490603[_0x9aee('0x34')],'direction':_0x490603[_0x9aee('0x5d')]===_0x9aee('0x69')?'A':'C','secret':_0x490603[_0x9aee('0x5e')],'read':_0x490603[_0x9aee('0x6a')]};})[_0x9aee('0x6b')]()};return ejs['renderFile'](path[_0x9aee('0x51')](config['root'],_0x9aee('0x6c'),_0x9aee('0x6d'),'downloadInteraction.ejs'),{'interaction':_0x22ce42})[_0x9aee('0x1b')](function(_0x3f28cd){var _0x18355a=path[_0x9aee('0x51')](_0x56ba13,_0x9aee('0x6e')+_0x4445af['id']+'-'+_0x2c3fd8+'.pdf');var _0x3f671e={'path':_0x18355a,'channel':_0x9aee('0x63'),'interactionId':_0x4445af['id']};return pdf[_0x9aee('0x6f')](_0x3f28cd,_0x3f671e);})[_0x9aee('0x1b')](function(){return new BPromise(function(_0x28b880,_0x524fc9){zipdir(_0x56ba13,{'saveTo':_0x4b6c4f},function(_0x4dc151,_0x1c2cdd){if(_0x4dc151)return _0x524fc9(_0x4dc151);return _0x28b880(_0x1c2cdd);});})['then'](function(){return new BPromise(function(_0xddef8f,_0x53f38b){rimraf(_0x56ba13,function(_0x4bf946){if(_0x4bf946)_0x53f38b(_0x4bf946);return _0xddef8f();});});})[_0x9aee('0x1b')](function(){return _0x3bfd7c[_0x9aee('0x50')](_0x4b6c4f,_0x3b6df0,function(_0x21a01d){if(_0x21a01d){console[_0x9aee('0x70')](_0x9aee('0x71'),_0x21a01d);}else{fs[_0x9aee('0x72')](_0x4b6c4f);}});});});}else{return _0x3bfd7c['sendStatus'](0xc8);}})['catch'](handleError(_0x3bfd7c,null));};