Built motion from commit 3c2ce842.|2.6.31
[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 _0x9a05=['key','getOptions','findAll','user','show','params','model','keys','query','intersection','fields','attributes','includeAll','include','merge','options','find','catch','create','body','destroy','describe','SmsMessage','addMessage','ids','omit','getMessages','findOne','length','hasOwnProperty','nolimit','order','filters','pick','filter','where','$gte','split','format','count','rows','addTags','spread','Tag','smsInteractionTags:save','removeTags','download','unix','toString','server','files','tmp','join','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','firstName','lastName','Messages','createdAt','direction','secret','read','SmsAccount','Account','Owner','mkdirSync','N.A.','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','disposition','out','System','value','renderFile','views','transcript-','.pdf','Sms','log','err','unlinkSync','rimraf','moment','util','path','lodash','../../components/parsers/qs','../../components/export/pdf','api','../../config/environment','../../mysqldb','redis','defaults','localhost','sendStatus','status','end','json','offset','limit','set','Content-Range','then','name','send','index','map','SmsInteraction','rawAttributes','fieldName'];(function(_0x127ddd,_0x1d6210){var _0x355b24=function(_0x2c4304){while(--_0x2c4304){_0x127ddd['push'](_0x127ddd['shift']());}};_0x355b24(++_0x1d6210);}(_0x9a05,0xc9));var _0x59a0=function(_0x2ff560,_0x20d5f2){_0x2ff560=_0x2ff560-0x0;var _0x40df3a=_0x9a05[_0x2ff560];return _0x40df3a;};'use strict';var rimraf=require(_0x59a0('0x0'));var zipdir=require('zip-dir');var moment=require(_0x59a0('0x1'));var BPromise=require('bluebird');var util=require(_0x59a0('0x2'));var path=require(_0x59a0('0x3'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x59a0('0x4'));var Redis=require('ioredis');var interaction=require('../../components/interaction/service');var qs=require(_0x59a0('0x5'));var pdf=require(_0x59a0('0x6'));var logger=require('../../config/logger')(_0x59a0('0x7'));var config=require(_0x59a0('0x8'));var db=require(_0x59a0('0x9'))['db'];config[_0x59a0('0xa')]=_[_0x59a0('0xb')](config[_0x59a0('0xa')],{'host':_0x59a0('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x59a0('0xa')]));require('./smsInteraction.socket')['register'](socket);function respondWithStatusCode(_0x1b796f,_0x31b82d){_0x31b82d=_0x31b82d||0xcc;return function(_0x1cbb65){if(_0x1cbb65){return _0x1b796f[_0x59a0('0xd')](_0x31b82d);}return _0x1b796f[_0x59a0('0xe')](_0x31b82d)[_0x59a0('0xf')]();};}function respondWithResult(_0x1cd2d9,_0x39cfca){_0x39cfca=_0x39cfca||0xc8;return function(_0x55d118){if(_0x55d118){return _0x1cd2d9[_0x59a0('0xe')](_0x39cfca)[_0x59a0('0x10')](_0x55d118);}};}function respondWithFilteredResult(_0x44b036,_0x130faf){return function(_0x4e3601){if(_0x4e3601){var _0x40da74=typeof _0x130faf[_0x59a0('0x11')]==='undefined'&&typeof _0x130faf[_0x59a0('0x12')]==='undefined';var _0x53fdf7=_0x4e3601['count'];var _0x4e3cbc=_0x40da74?0x0:_0x130faf[_0x59a0('0x11')];var _0x50f77a=_0x40da74?_0x4e3601['count']:_0x130faf['offset']+_0x130faf[_0x59a0('0x12')];var _0x117478;if(_0x50f77a>=_0x53fdf7){_0x50f77a=_0x53fdf7;_0x117478=0xc8;}else{_0x117478=0xce;}_0x44b036[_0x59a0('0xe')](_0x117478);return _0x44b036[_0x59a0('0x13')](_0x59a0('0x14'),_0x4e3cbc+'-'+_0x50f77a+'/'+_0x53fdf7)[_0x59a0('0x10')](_0x4e3601);}return null;};}function saveUpdates(_0x1ddeda){return function(_0x3da057){if(_0x3da057){return _0x3da057['update'](_0x1ddeda)[_0x59a0('0x15')](function(_0x519b63){return _0x519b63;});}return null;};}function removeEntity(_0x36ac4a){return function(_0x2f5555){if(_0x2f5555){return _0x2f5555['destroy']()[_0x59a0('0x15')](function(){_0x36ac4a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x598eac){return function(_0x350d71){if(!_0x350d71){_0x598eac[_0x59a0('0xd')](0x194);}return _0x350d71;};}function handleError(_0x118014,_0x128ed8){_0x128ed8=_0x128ed8||0x1f4;return function(_0x143147){logger['error'](_0x143147['stack']);if(_0x143147[_0x59a0('0x16')]){delete _0x143147['name'];}_0x118014['status'](_0x128ed8)[_0x59a0('0x17')](_0x143147);};}exports[_0x59a0('0x18')]=function(_0x4654e6,_0x325b33){var _0x4805cb={};var _0x1b1337=_[_0x59a0('0x19')](db[_0x59a0('0x1a')][_0x59a0('0x1b')],function(_0x1d1385){return{'name':_0x1d1385[_0x59a0('0x1c')],'type':_0x1d1385['type'][_0x59a0('0x1d')]};});_0x4805cb=qs[_0x59a0('0x1e')](_0x1b1337,_0x4654e6);return interaction[_0x59a0('0x1f')]('sms',_0x4654e6['query'],_0x4654e6[_0x59a0('0x20')],_0x4805cb,_0x1b1337)[_0x59a0('0x15')](respondWithFilteredResult(_0x325b33,_0x4805cb))['catch'](handleError(_0x325b33,null));};exports[_0x59a0('0x21')]=function(_0x38eb47,_0x26341d){var _0x3fd59c={'raw':![],'where':{'id':_0x38eb47[_0x59a0('0x22')]['id']}},_0x46f61b={};_0x46f61b[_0x59a0('0x23')]=_[_0x59a0('0x24')](db[_0x59a0('0x1a')][_0x59a0('0x1b')]);_0x46f61b[_0x59a0('0x25')]=_[_0x59a0('0x24')](_0x38eb47[_0x59a0('0x25')]);_0x46f61b['filters']=_[_0x59a0('0x26')](_0x46f61b[_0x59a0('0x23')],_0x46f61b[_0x59a0('0x25')]);_0x3fd59c['attributes']=_[_0x59a0('0x26')](_0x46f61b[_0x59a0('0x23')],qs[_0x59a0('0x27')](_0x38eb47['query'][_0x59a0('0x27')]));_0x3fd59c[_0x59a0('0x28')]=_0x3fd59c[_0x59a0('0x28')]['length']?_0x3fd59c['attributes']:_0x46f61b[_0x59a0('0x23')];if(_0x38eb47[_0x59a0('0x25')][_0x59a0('0x29')]){_0x3fd59c[_0x59a0('0x2a')]=[{'all':!![]}];}_0x3fd59c=_[_0x59a0('0x2b')]({},_0x3fd59c,_0x38eb47[_0x59a0('0x2c')]);return db[_0x59a0('0x1a')][_0x59a0('0x2d')](_0x3fd59c)[_0x59a0('0x15')](handleEntityNotFound(_0x26341d,null))[_0x59a0('0x15')](respondWithResult(_0x26341d,null))[_0x59a0('0x2e')](handleError(_0x26341d,null));};exports[_0x59a0('0x2f')]=function(_0x4837ab,_0x2d51db){return db[_0x59a0('0x1a')][_0x59a0('0x2f')](_0x4837ab[_0x59a0('0x30')],{})[_0x59a0('0x15')](respondWithResult(_0x2d51db,0xc9))[_0x59a0('0x2e')](handleError(_0x2d51db,null));};exports['update']=function(_0x3cd677,_0x20367c){if(_0x3cd677['body']['id']){delete _0x3cd677[_0x59a0('0x30')]['id'];}return db[_0x59a0('0x1a')][_0x59a0('0x2d')]({'where':{'id':_0x3cd677[_0x59a0('0x22')]['id']}})[_0x59a0('0x15')](handleEntityNotFound(_0x20367c,null))['then'](saveUpdates(_0x3cd677[_0x59a0('0x30')],null))[_0x59a0('0x15')](respondWithResult(_0x20367c,null))[_0x59a0('0x2e')](handleError(_0x20367c,null));};exports[_0x59a0('0x31')]=function(_0x110418,_0x8d25b){return db[_0x59a0('0x1a')][_0x59a0('0x2d')]({'where':{'id':_0x110418[_0x59a0('0x22')]['id']}})[_0x59a0('0x15')](handleEntityNotFound(_0x8d25b,null))[_0x59a0('0x15')](removeEntity(_0x8d25b,null))[_0x59a0('0x2e')](handleError(_0x8d25b,null));};exports[_0x59a0('0x32')]=function(_0x49a1c9,_0x543c6e){return db['SmsInteraction'][_0x59a0('0x32')]()[_0x59a0('0x15')](respondWithResult(_0x543c6e,null))[_0x59a0('0x2e')](handleError(_0x543c6e,null));};exports['addMessage']=function(_0x153f12,_0x4acbfe){return db[_0x59a0('0x33')][_0x59a0('0x2d')]({'where':{'id':_0x153f12[_0x59a0('0x22')]['id']}})[_0x59a0('0x15')](handleEntityNotFound(_0x4acbfe,null))['then'](function(_0x305125){if(_0x305125){return _0x305125[_0x59a0('0x34')](_0x153f12[_0x59a0('0x30')][_0x59a0('0x35')],_[_0x59a0('0x36')](_0x153f12[_0x59a0('0x30')],[_0x59a0('0x35'),'id'])||{});}})[_0x59a0('0x15')](respondWithResult(_0x4acbfe,null))[_0x59a0('0x2e')](handleError(_0x4acbfe,null));};exports[_0x59a0('0x37')]=function(_0x3aee22,_0x25deb2){var _0x27c1e7={'raw':![],'where':{}};var _0xfa0e63={};var _0x4a240b={'count':0x0,'rows':[]};return db[_0x59a0('0x1a')][_0x59a0('0x38')]({'where':{'id':_0x3aee22[_0x59a0('0x22')]['id']}})['then'](handleEntityNotFound(_0x25deb2,null))[_0x59a0('0x15')](function(_0x407abd){if(_0x407abd){_0xfa0e63[_0x59a0('0x23')]=_['keys'](db[_0x59a0('0x33')][_0x59a0('0x1b')]);_0xfa0e63['query']=_[_0x59a0('0x24')](_0x3aee22[_0x59a0('0x25')]);_0xfa0e63['filters']=_['intersection'](_0xfa0e63[_0x59a0('0x23')],_0xfa0e63[_0x59a0('0x25')]);_0x27c1e7[_0x59a0('0x28')]=_['intersection'](_0xfa0e63[_0x59a0('0x23')],qs[_0x59a0('0x27')](_0x3aee22[_0x59a0('0x25')]['fields']));_0x27c1e7['attributes']=_0x27c1e7['attributes'][_0x59a0('0x39')]?_0x27c1e7['attributes']:_0xfa0e63[_0x59a0('0x23')];if(!_0x3aee22[_0x59a0('0x25')][_0x59a0('0x3a')](_0x59a0('0x3b'))){_0x27c1e7['limit']=qs[_0x59a0('0x12')](_0x3aee22[_0x59a0('0x25')][_0x59a0('0x12')]);_0x27c1e7[_0x59a0('0x11')]=qs[_0x59a0('0x11')](_0x3aee22['query'][_0x59a0('0x11')]);}_0x27c1e7[_0x59a0('0x3c')]=qs['sort'](_0x3aee22[_0x59a0('0x25')]['sort']);_0x27c1e7['where']=qs[_0x59a0('0x3d')](_[_0x59a0('0x3e')](_0x3aee22['query'],_0xfa0e63[_0x59a0('0x3d')]));_0x27c1e7['where']['SmsInteractionId']=_0x407abd['id'];if(_0x3aee22[_0x59a0('0x25')][_0x59a0('0x3f')]){_0x27c1e7[_0x59a0('0x40')]=_[_0x59a0('0x2b')](_0x27c1e7[_0x59a0('0x40')],{'$or':_['map'](_0x27c1e7['attributes'],function(_0x33bd23){var _0x25dde7={};_0x25dde7[_0x33bd23]={'$like':'%'+_0x3aee22[_0x59a0('0x25')][_0x59a0('0x3f')]+'%'};return _0x25dde7;})});}if(_0x3aee22[_0x59a0('0x25')][_0x59a0('0x41')]){var _0xe344fd=_0x3aee22[_0x59a0('0x25')]['$gte'][_0x59a0('0x42')](',');var _0x492c77={};_0x492c77[_0xe344fd[0x0]]={'$gte':moment(_0xe344fd[0x1])[_0x59a0('0x43')]('YYYY-MM-DD\x20HH:mm:ss')};_0x27c1e7[_0x59a0('0x40')]=_['merge'](_0x27c1e7[_0x59a0('0x40')],_0x492c77);}_0x27c1e7=_[_0x59a0('0x2b')]({},_0x27c1e7,_0x3aee22[_0x59a0('0x2c')]);return db[_0x59a0('0x33')][_0x59a0('0x44')]({'where':_0x27c1e7[_0x59a0('0x40')]})['then'](function(_0x7cc99d){_0x4a240b[_0x59a0('0x44')]=_0x7cc99d;if(_0x3aee22[_0x59a0('0x25')]['includeAll']){_0x27c1e7[_0x59a0('0x2a')]=[{'all':!![]}];}return db[_0x59a0('0x33')]['findAll'](_0x27c1e7);})[_0x59a0('0x15')](function(_0x4f6d3b){_0x4a240b[_0x59a0('0x45')]=_0x4f6d3b;return _0x4a240b;});}})[_0x59a0('0x15')](respondWithFilteredResult(_0x25deb2,_0x27c1e7))[_0x59a0('0x2e')](handleError(_0x25deb2,null));};exports[_0x59a0('0x46')]=function(_0x33ef41,_0x55e24a){return db[_0x59a0('0x1a')]['find']({'where':{'id':_0x33ef41['params']['id']}})[_0x59a0('0x15')](handleEntityNotFound(_0x55e24a,null))[_0x59a0('0x15')](function(_0x9c1f0f){if(_0x9c1f0f){return _0x9c1f0f['setTags'](_0x33ef41[_0x59a0('0x30')][_0x59a0('0x35')],_['omit'](_0x33ef41[_0x59a0('0x30')],['ids','id'])||{})[_0x59a0('0x47')](function(){return db[_0x59a0('0x48')][_0x59a0('0x1f')]({'attributes':['id','name','color'],'where':{'id':_0x33ef41[_0x59a0('0x30')][_0x59a0('0x35')]}});})['then'](function(_0xbdd94d){socket['emit'](_0x59a0('0x49'),{'id':Number(_0x33ef41[_0x59a0('0x22')]['id']),'tags':_0xbdd94d||[]});return{'id':Number(_0x33ef41['params']['id']),'tags':_0xbdd94d||[]};});}})[_0x59a0('0x15')](respondWithResult(_0x55e24a,null))[_0x59a0('0x2e')](handleError(_0x55e24a,null));};exports[_0x59a0('0x4a')]=function(_0x27545c,_0x343608){return db[_0x59a0('0x1a')][_0x59a0('0x2d')]({'where':{'id':_0x27545c['params']['id']}})[_0x59a0('0x15')](handleEntityNotFound(_0x343608,null))['then'](function(_0x511b26){if(_0x511b26){return _0x511b26[_0x59a0('0x4a')](_0x27545c[_0x59a0('0x25')][_0x59a0('0x35')]);}})[_0x59a0('0x15')](respondWithStatusCode(_0x343608,null))[_0x59a0('0x2e')](handleError(_0x343608,null));};exports[_0x59a0('0x4b')]=function(_0x4f68df,_0x3c827f){var _0xc08ebc=moment()[_0x59a0('0x4c')]()[_0x59a0('0x4d')]();var _0x4dec4f=path['join'](config['root'],_0x59a0('0x4e'),_0x59a0('0x4f'),_0x59a0('0x50'));var _0x180914=path[_0x59a0('0x51')](_0x4dec4f,_0xc08ebc);var _0x3b4c92=util[_0x59a0('0x43')](_0x59a0('0x52'),_0x4f68df['params']['id'],_0xc08ebc);var _0x1e031c=path[_0x59a0('0x51')](_0x4dec4f,_0x3b4c92);var _0x570004=[];_0x570004[_0x59a0('0x53')]({'model':db[_0x59a0('0x54')],'as':_0x59a0('0x54'),'attributes':['id',_0x59a0('0x55')],'raw':!![]});_0x570004[_0x59a0('0x53')]({'model':db[_0x59a0('0x56')],'as':_0x59a0('0x57'),'attributes':['id',_0x59a0('0x58'),_0x59a0('0x59')],'raw':!![]});var _0x1362b1=[{'model':db[_0x59a0('0x33')],'as':_0x59a0('0x5a'),'attributes':['id','body',_0x59a0('0x5b'),_0x59a0('0x5c'),_0x59a0('0x5d'),_0x59a0('0x5e')],'include':_0x570004}];_0x1362b1[_0x59a0('0x53')]({'model':db[_0x59a0('0x5f')],'as':_0x59a0('0x60'),'attributes':['id','name']});_0x1362b1['push']({'model':db[_0x59a0('0x54')],'as':_0x59a0('0x61'),'attributes':['id',_0x59a0('0x55')]});return db[_0x59a0('0x1a')]['find']({'where':{'id':_0x4f68df[_0x59a0('0x22')]['id']},'include':_0x1362b1})[_0x59a0('0x15')](handleEntityNotFound(_0x3c827f,null))[_0x59a0('0x15')](function(_0x316ed5){if(_0x316ed5){var _0x161689=_0x316ed5['get']({'plain':!![]});fs[_0x59a0('0x62')](_0x180914);var _0xe91bd5={'channel':'Sms','account':_0x161689['Account'][_0x59a0('0x16')],'agent':_0x161689[_0x59a0('0x61')]?_0x161689[_0x59a0('0x61')][_0x59a0('0x55')]:_0x59a0('0x63'),'createdAt':moment(_0x161689[_0x59a0('0x5b')])[_0x59a0('0x43')](_0x59a0('0x64'))[_0x59a0('0x4d')](),'closedAt':_0x161689[_0x59a0('0x65')]?moment(_0x161689[_0x59a0('0x66')])[_0x59a0('0x43')](_0x59a0('0x64'))['toString']():'','disposition':_0x161689[_0x59a0('0x67')],'messages':_(_0x161689[_0x59a0('0x5a')])[_0x59a0('0x3f')]({'secret':![]})[_0x59a0('0x19')](function(_0x237500){return{'date':moment(_0x237500[_0x59a0('0x5b')])[_0x59a0('0x43')](_0x59a0('0x64'))[_0x59a0('0x4d')](),'sender':_0x237500[_0x59a0('0x5c')]===_0x59a0('0x68')?_0x237500['User']?_0x237500[_0x59a0('0x54')][_0x59a0('0x55')]:_0x59a0('0x69'):_0x237500[_0x59a0('0x57')]['firstName']+(_0x237500[_0x59a0('0x57')][_0x59a0('0x59')]?'\x20'+_0x237500['Contact']['lastName']:''),'body':_0x237500[_0x59a0('0x30')],'direction':_0x237500[_0x59a0('0x5c')]==='out'?'A':'C','secret':_0x237500[_0x59a0('0x5d')],'read':_0x237500['read']};})[_0x59a0('0x6a')]()};return ejs[_0x59a0('0x6b')](path['join'](config['root'],_0x59a0('0x4e'),_0x59a0('0x6c'),'downloadInteraction.ejs'),{'interaction':_0xe91bd5})[_0x59a0('0x15')](function(_0x11a7e0){var _0x3160a9=path['join'](_0x180914,_0x59a0('0x6d')+_0x161689['id']+'-'+_0xc08ebc+_0x59a0('0x6e'));var _0x30babc={'path':_0x3160a9,'channel':_0x59a0('0x6f'),'interactionId':_0x161689['id']};return pdf['createPdfFromHTML'](_0x11a7e0,_0x30babc);})['then'](function(){return new BPromise(function(_0xb0dd38,_0x105647){zipdir(_0x180914,{'saveTo':_0x1e031c},function(_0x288fa0,_0x4de9ee){if(_0x288fa0)return _0x105647(_0x288fa0);return _0xb0dd38(_0x4de9ee);});})[_0x59a0('0x15')](function(){return new BPromise(function(_0x18773b,_0xfe0b6d){rimraf(_0x180914,function(_0x4e3165){if(_0x4e3165)_0xfe0b6d(_0x4e3165);return _0x18773b();});});})[_0x59a0('0x15')](function(){return _0x3c827f[_0x59a0('0x4b')](_0x1e031c,_0x3b4c92,function(_0x4c4186){if(_0x4c4186){console[_0x59a0('0x70')](_0x59a0('0x71'),_0x4c4186);}else{fs[_0x59a0('0x72')](_0x1e031c);}});});});}else{return _0x3c827f[_0x59a0('0xd')](0xc8);}})['catch'](handleError(_0x3c827f,null));};