Built motion from commit 10af8726.|2.6.34
[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 _0xff3c=['out','System','Contact','firstName','lastName','read','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','Sms','createPdfFromHTML','log','err','unlinkSync','sendStatus','rimraf','zip-dir','bluebird','util','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./smsInteraction.socket','register','status','end','json','offset','undefined','limit','count','Content-Range','update','then','error','name','send','map','SmsInteraction','rawAttributes','fieldName','key','getOptions','findAll','sms','query','user','catch','show','params','model','keys','filters','attributes','intersection','fields','length','includeAll','include','merge','options','find','create','body','destroy','describe','addMessage','omit','ids','getMessages','findOne','SmsMessage','hasOwnProperty','order','sort','where','pick','SmsInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','spread','Tag','color','emit','removeTags','download','unix','join','root','server','files','tmp','format','push','User','fullname','CmContact','Messages','createdAt','direction','secret','Owner','get','N.A.','toString','disposition'];(function(_0x45aa72,_0x8af642){var _0x75adaa=function(_0x1f6809){while(--_0x1f6809){_0x45aa72['push'](_0x45aa72['shift']());}};_0x75adaa(++_0x8af642);}(_0xff3c,0x179));var _0xcff3=function(_0x4d8c7b,_0x20b79b){_0x4d8c7b=_0x4d8c7b-0x0;var _0x5d4b8c=_0xff3c[_0x4d8c7b];return _0x5d4b8c;};'use strict';var rimraf=require(_0xcff3('0x0'));var zipdir=require(_0xcff3('0x1'));var moment=require('moment');var BPromise=require(_0xcff3('0x2'));var util=require(_0xcff3('0x3'));var path=require('path');var ejs=require('ejs');var fs=require('fs');var _=require(_0xcff3('0x4'));var Redis=require(_0xcff3('0x5'));var interaction=require(_0xcff3('0x6'));var qs=require(_0xcff3('0x7'));var pdf=require(_0xcff3('0x8'));var logger=require(_0xcff3('0x9'))('api');var config=require('../../config/environment');var db=require(_0xcff3('0xa'))['db'];config['redis']=_[_0xcff3('0xb')](config['redis'],{'host':_0xcff3('0xc'),'port':0x18eb});var socket=require(_0xcff3('0xd'))(new Redis(config[_0xcff3('0xe')]));require(_0xcff3('0xf'))[_0xcff3('0x10')](socket);function respondWithStatusCode(_0x1e2fa3,_0x42e9da){_0x42e9da=_0x42e9da||0xcc;return function(_0x51e98c){if(_0x51e98c){return _0x1e2fa3['sendStatus'](_0x42e9da);}return _0x1e2fa3[_0xcff3('0x11')](_0x42e9da)[_0xcff3('0x12')]();};}function respondWithResult(_0x3e5fbc,_0x3da4ca){_0x3da4ca=_0x3da4ca||0xc8;return function(_0x39ca1b){if(_0x39ca1b){return _0x3e5fbc[_0xcff3('0x11')](_0x3da4ca)[_0xcff3('0x13')](_0x39ca1b);}};}function respondWithFilteredResult(_0x9715af,_0xc7d33d){return function(_0x3674cc){if(_0x3674cc){var _0x2ac0fc=typeof _0xc7d33d[_0xcff3('0x14')]===_0xcff3('0x15')&&typeof _0xc7d33d[_0xcff3('0x16')]===_0xcff3('0x15');var _0x1334aa=_0x3674cc['count'];var _0x3fabce=_0x2ac0fc?0x0:_0xc7d33d['offset'];var _0x2e6e55=_0x2ac0fc?_0x3674cc[_0xcff3('0x17')]:_0xc7d33d[_0xcff3('0x14')]+_0xc7d33d['limit'];var _0xa95fcd;if(_0x2e6e55>=_0x1334aa){_0x2e6e55=_0x1334aa;_0xa95fcd=0xc8;}else{_0xa95fcd=0xce;}_0x9715af[_0xcff3('0x11')](_0xa95fcd);return _0x9715af['set'](_0xcff3('0x18'),_0x3fabce+'-'+_0x2e6e55+'/'+_0x1334aa)['json'](_0x3674cc);}return null;};}function saveUpdates(_0xb8319c){return function(_0x23dd8d){if(_0x23dd8d){return _0x23dd8d[_0xcff3('0x19')](_0xb8319c)['then'](function(_0x491d9a){return _0x491d9a;});}return null;};}function removeEntity(_0x20e82b){return function(_0x19b486){if(_0x19b486){return _0x19b486['destroy']()[_0xcff3('0x1a')](function(){_0x20e82b['status'](0xcc)[_0xcff3('0x12')]();});}};}function handleEntityNotFound(_0x525ee6){return function(_0x26a033){if(!_0x26a033){_0x525ee6['sendStatus'](0x194);}return _0x26a033;};}function handleError(_0x74a015,_0x4912b1){_0x4912b1=_0x4912b1||0x1f4;return function(_0x29921a){logger[_0xcff3('0x1b')](_0x29921a['stack']);if(_0x29921a[_0xcff3('0x1c')]){delete _0x29921a[_0xcff3('0x1c')];}_0x74a015[_0xcff3('0x11')](_0x4912b1)[_0xcff3('0x1d')](_0x29921a);};}exports['index']=function(_0x2eddb5,_0x596051){var _0x51a872={};var _0x157bc4=_[_0xcff3('0x1e')](db[_0xcff3('0x1f')][_0xcff3('0x20')],function(_0x4d829e){return{'name':_0x4d829e[_0xcff3('0x21')],'type':_0x4d829e['type'][_0xcff3('0x22')]};});_0x51a872=qs[_0xcff3('0x23')](_0x157bc4,_0x2eddb5);return interaction[_0xcff3('0x24')](_0xcff3('0x25'),_0x2eddb5[_0xcff3('0x26')],_0x2eddb5[_0xcff3('0x27')],_0x51a872,_0x157bc4)[_0xcff3('0x1a')](respondWithFilteredResult(_0x596051,_0x51a872))[_0xcff3('0x28')](handleError(_0x596051,null));};exports[_0xcff3('0x29')]=function(_0x33a87f,_0x35899c){var _0x195f0b={'raw':![],'where':{'id':_0x33a87f[_0xcff3('0x2a')]['id']}},_0x400982={};_0x400982[_0xcff3('0x2b')]=_[_0xcff3('0x2c')](db[_0xcff3('0x1f')]['rawAttributes']);_0x400982[_0xcff3('0x26')]=_[_0xcff3('0x2c')](_0x33a87f['query']);_0x400982[_0xcff3('0x2d')]=_['intersection'](_0x400982[_0xcff3('0x2b')],_0x400982[_0xcff3('0x26')]);_0x195f0b[_0xcff3('0x2e')]=_[_0xcff3('0x2f')](_0x400982[_0xcff3('0x2b')],qs[_0xcff3('0x30')](_0x33a87f[_0xcff3('0x26')][_0xcff3('0x30')]));_0x195f0b[_0xcff3('0x2e')]=_0x195f0b['attributes'][_0xcff3('0x31')]?_0x195f0b['attributes']:_0x400982[_0xcff3('0x2b')];if(_0x33a87f['query'][_0xcff3('0x32')]){_0x195f0b[_0xcff3('0x33')]=[{'all':!![]}];}_0x195f0b=_[_0xcff3('0x34')]({},_0x195f0b,_0x33a87f[_0xcff3('0x35')]);return db[_0xcff3('0x1f')][_0xcff3('0x36')](_0x195f0b)[_0xcff3('0x1a')](handleEntityNotFound(_0x35899c,null))[_0xcff3('0x1a')](respondWithResult(_0x35899c,null))[_0xcff3('0x28')](handleError(_0x35899c,null));};exports[_0xcff3('0x37')]=function(_0x323db4,_0xde0d2){return db['SmsInteraction']['create'](_0x323db4[_0xcff3('0x38')],{})[_0xcff3('0x1a')](respondWithResult(_0xde0d2,0xc9))['catch'](handleError(_0xde0d2,null));};exports['update']=function(_0x3da1a1,_0x21c0a2){if(_0x3da1a1[_0xcff3('0x38')]['id']){delete _0x3da1a1[_0xcff3('0x38')]['id'];}return db[_0xcff3('0x1f')]['find']({'where':{'id':_0x3da1a1['params']['id']}})[_0xcff3('0x1a')](handleEntityNotFound(_0x21c0a2,null))[_0xcff3('0x1a')](saveUpdates(_0x3da1a1[_0xcff3('0x38')],null))['then'](respondWithResult(_0x21c0a2,null))[_0xcff3('0x28')](handleError(_0x21c0a2,null));};exports[_0xcff3('0x39')]=function(_0x47325c,_0x7c32b7){return db[_0xcff3('0x1f')][_0xcff3('0x36')]({'where':{'id':_0x47325c[_0xcff3('0x2a')]['id']}})[_0xcff3('0x1a')](handleEntityNotFound(_0x7c32b7,null))['then'](removeEntity(_0x7c32b7,null))[_0xcff3('0x28')](handleError(_0x7c32b7,null));};exports[_0xcff3('0x3a')]=function(_0x2b31df,_0x3405cf){return db['SmsInteraction'][_0xcff3('0x3a')]()[_0xcff3('0x1a')](respondWithResult(_0x3405cf,null))['catch'](handleError(_0x3405cf,null));};exports['addMessage']=function(_0x1d0ce0,_0x15a964){return db['SmsMessage'][_0xcff3('0x36')]({'where':{'id':_0x1d0ce0['params']['id']}})[_0xcff3('0x1a')](handleEntityNotFound(_0x15a964,null))['then'](function(_0x4ab30a){if(_0x4ab30a){return _0x4ab30a[_0xcff3('0x3b')](_0x1d0ce0[_0xcff3('0x38')]['ids'],_[_0xcff3('0x3c')](_0x1d0ce0['body'],[_0xcff3('0x3d'),'id'])||{});}})[_0xcff3('0x1a')](respondWithResult(_0x15a964,null))[_0xcff3('0x28')](handleError(_0x15a964,null));};exports[_0xcff3('0x3e')]=function(_0x5b8d3e,_0x2086a3){var _0x5603c6={'raw':![],'where':{}};var _0xa732db={};var _0x2f87ff={'count':0x0,'rows':[]};return db[_0xcff3('0x1f')][_0xcff3('0x3f')]({'where':{'id':_0x5b8d3e[_0xcff3('0x2a')]['id']}})['then'](handleEntityNotFound(_0x2086a3,null))[_0xcff3('0x1a')](function(_0x4e4461){if(_0x4e4461){_0xa732db[_0xcff3('0x2b')]=_['keys'](db[_0xcff3('0x40')]['rawAttributes']);_0xa732db[_0xcff3('0x26')]=_['keys'](_0x5b8d3e[_0xcff3('0x26')]);_0xa732db[_0xcff3('0x2d')]=_[_0xcff3('0x2f')](_0xa732db['model'],_0xa732db[_0xcff3('0x26')]);_0x5603c6[_0xcff3('0x2e')]=_['intersection'](_0xa732db[_0xcff3('0x2b')],qs[_0xcff3('0x30')](_0x5b8d3e['query'][_0xcff3('0x30')]));_0x5603c6[_0xcff3('0x2e')]=_0x5603c6[_0xcff3('0x2e')][_0xcff3('0x31')]?_0x5603c6[_0xcff3('0x2e')]:_0xa732db['model'];if(!_0x5b8d3e[_0xcff3('0x26')][_0xcff3('0x41')]('nolimit')){_0x5603c6[_0xcff3('0x16')]=qs[_0xcff3('0x16')](_0x5b8d3e[_0xcff3('0x26')][_0xcff3('0x16')]);_0x5603c6['offset']=qs[_0xcff3('0x14')](_0x5b8d3e[_0xcff3('0x26')][_0xcff3('0x14')]);}_0x5603c6[_0xcff3('0x42')]=qs[_0xcff3('0x43')](_0x5b8d3e[_0xcff3('0x26')][_0xcff3('0x43')]);_0x5603c6[_0xcff3('0x44')]=qs['filters'](_[_0xcff3('0x45')](_0x5b8d3e[_0xcff3('0x26')],_0xa732db[_0xcff3('0x2d')]));_0x5603c6[_0xcff3('0x44')][_0xcff3('0x46')]=_0x4e4461['id'];if(_0x5b8d3e[_0xcff3('0x26')][_0xcff3('0x47')]){_0x5603c6[_0xcff3('0x44')]=_[_0xcff3('0x34')](_0x5603c6[_0xcff3('0x44')],{'$or':_['map'](_0x5603c6[_0xcff3('0x2e')],function(_0x9c8282){var _0x100055={};_0x100055[_0x9c8282]={'$like':'%'+_0x5b8d3e['query'][_0xcff3('0x47')]+'%'};return _0x100055;})});}if(_0x5b8d3e[_0xcff3('0x26')][_0xcff3('0x48')]){var _0x18d11f=_0x5b8d3e[_0xcff3('0x26')][_0xcff3('0x48')][_0xcff3('0x49')](',');var _0x478ef4={};_0x478ef4[_0x18d11f[0x0]]={'$gte':moment(_0x18d11f[0x1])['format'](_0xcff3('0x4a'))};_0x5603c6['where']=_[_0xcff3('0x34')](_0x5603c6[_0xcff3('0x44')],_0x478ef4);}_0x5603c6=_['merge']({},_0x5603c6,_0x5b8d3e[_0xcff3('0x35')]);return db[_0xcff3('0x40')][_0xcff3('0x17')]({'where':_0x5603c6[_0xcff3('0x44')]})[_0xcff3('0x1a')](function(_0x1a808b){_0x2f87ff[_0xcff3('0x17')]=_0x1a808b;if(_0x5b8d3e['query'][_0xcff3('0x32')]){_0x5603c6[_0xcff3('0x33')]=[{'all':!![]}];}return db[_0xcff3('0x40')][_0xcff3('0x24')](_0x5603c6);})[_0xcff3('0x1a')](function(_0x4133cf){_0x2f87ff['rows']=_0x4133cf;return _0x2f87ff;});}})['then'](respondWithFilteredResult(_0x2086a3,_0x5603c6))[_0xcff3('0x28')](handleError(_0x2086a3,null));};exports[_0xcff3('0x4b')]=function(_0x15a0f2,_0x40010f){return db['SmsInteraction']['find']({'where':{'id':_0x15a0f2['params']['id']}})[_0xcff3('0x1a')](handleEntityNotFound(_0x40010f,null))[_0xcff3('0x1a')](function(_0x400fa3){if(_0x400fa3){return _0x400fa3[_0xcff3('0x4c')](_0x15a0f2[_0xcff3('0x38')][_0xcff3('0x3d')],_[_0xcff3('0x3c')](_0x15a0f2[_0xcff3('0x38')],[_0xcff3('0x3d'),'id'])||{})[_0xcff3('0x4d')](function(){return db[_0xcff3('0x4e')]['findAll']({'attributes':['id',_0xcff3('0x1c'),_0xcff3('0x4f')],'where':{'id':_0x15a0f2[_0xcff3('0x38')][_0xcff3('0x3d')]}});})[_0xcff3('0x1a')](function(_0x780041){socket[_0xcff3('0x50')]('smsInteractionTags:save',{'id':Number(_0x15a0f2[_0xcff3('0x2a')]['id']),'tags':_0x780041||[]});return{'id':Number(_0x15a0f2[_0xcff3('0x2a')]['id']),'tags':_0x780041||[]};});}})[_0xcff3('0x1a')](respondWithResult(_0x40010f,null))['catch'](handleError(_0x40010f,null));};exports[_0xcff3('0x51')]=function(_0x3b11f4,_0x4e31fd){return db[_0xcff3('0x1f')][_0xcff3('0x36')]({'where':{'id':_0x3b11f4['params']['id']}})[_0xcff3('0x1a')](handleEntityNotFound(_0x4e31fd,null))[_0xcff3('0x1a')](function(_0x4a864e){if(_0x4a864e){return _0x4a864e[_0xcff3('0x51')](_0x3b11f4[_0xcff3('0x26')][_0xcff3('0x3d')]);}})[_0xcff3('0x1a')](respondWithStatusCode(_0x4e31fd,null))[_0xcff3('0x28')](handleError(_0x4e31fd,null));};exports[_0xcff3('0x52')]=function(_0x24287c,_0x440a8e){var _0x48a438=moment()[_0xcff3('0x53')]()['toString']();var _0x410834=path[_0xcff3('0x54')](config[_0xcff3('0x55')],_0xcff3('0x56'),_0xcff3('0x57'),_0xcff3('0x58'));var _0x19e1f1=path[_0xcff3('0x54')](_0x410834,_0x48a438);var _0x570d88=util[_0xcff3('0x59')]('transcript-%d-%s.zip',_0x24287c['params']['id'],_0x48a438);var _0x164c6b=path['join'](_0x410834,_0x570d88);var _0xeb128e=[];_0xeb128e[_0xcff3('0x5a')]({'model':db[_0xcff3('0x5b')],'as':_0xcff3('0x5b'),'attributes':['id',_0xcff3('0x5c')],'raw':!![]});_0xeb128e[_0xcff3('0x5a')]({'model':db[_0xcff3('0x5d')],'as':'Contact','attributes':['id','firstName','lastName'],'raw':!![]});var _0x19bd47=[{'model':db[_0xcff3('0x40')],'as':_0xcff3('0x5e'),'attributes':['id',_0xcff3('0x38'),_0xcff3('0x5f'),_0xcff3('0x60'),_0xcff3('0x61'),'read'],'include':_0xeb128e}];_0x19bd47[_0xcff3('0x5a')]({'model':db['SmsAccount'],'as':'Account','attributes':['id',_0xcff3('0x1c')]});_0x19bd47[_0xcff3('0x5a')]({'model':db[_0xcff3('0x5b')],'as':_0xcff3('0x62'),'attributes':['id',_0xcff3('0x5c')]});return db[_0xcff3('0x1f')]['find']({'where':{'id':_0x24287c['params']['id']},'include':_0x19bd47})[_0xcff3('0x1a')](handleEntityNotFound(_0x440a8e,null))[_0xcff3('0x1a')](function(_0x553181){if(_0x553181){var _0x1b986c=_0x553181[_0xcff3('0x63')]({'plain':!![]});fs['mkdirSync'](_0x19e1f1);var _0x58aba1={'channel':'Sms','account':_0x1b986c['Account'][_0xcff3('0x1c')],'agent':_0x1b986c[_0xcff3('0x62')]?_0x1b986c[_0xcff3('0x62')][_0xcff3('0x5c')]:_0xcff3('0x64'),'createdAt':moment(_0x1b986c[_0xcff3('0x5f')])[_0xcff3('0x59')](_0xcff3('0x4a'))['toString'](),'closedAt':_0x1b986c['closed']?moment(_0x1b986c['closedAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xcff3('0x65')]():'','disposition':_0x1b986c[_0xcff3('0x66')],'messages':_(_0x1b986c[_0xcff3('0x5e')])[_0xcff3('0x47')]({'secret':![]})[_0xcff3('0x1e')](function(_0x26cb2e){return{'date':moment(_0x26cb2e[_0xcff3('0x5f')])[_0xcff3('0x59')](_0xcff3('0x4a'))['toString'](),'sender':_0x26cb2e['direction']===_0xcff3('0x67')?_0x26cb2e['User']?_0x26cb2e['User']['fullname']:_0xcff3('0x68'):_0x26cb2e[_0xcff3('0x69')][_0xcff3('0x6a')]+(_0x26cb2e['Contact']['lastName']?'\x20'+_0x26cb2e['Contact'][_0xcff3('0x6b')]:''),'body':_0x26cb2e[_0xcff3('0x38')],'direction':_0x26cb2e['direction']===_0xcff3('0x67')?'A':'C','secret':_0x26cb2e[_0xcff3('0x61')],'read':_0x26cb2e[_0xcff3('0x6c')]};})['value']()};return ejs[_0xcff3('0x6d')](path['join'](config[_0xcff3('0x55')],'server',_0xcff3('0x6e'),_0xcff3('0x6f')),{'interaction':_0x58aba1})['then'](function(_0x261ff7){var _0x19f92d=path['join'](_0x19e1f1,_0xcff3('0x70')+_0x1b986c['id']+'-'+_0x48a438+_0xcff3('0x71'));var _0x1c223e={'path':_0x19f92d,'channel':_0xcff3('0x72'),'interactionId':_0x1b986c['id']};return pdf[_0xcff3('0x73')](_0x261ff7,_0x1c223e);})[_0xcff3('0x1a')](function(){return new BPromise(function(_0xe53e30,_0x44b57f){zipdir(_0x19e1f1,{'saveTo':_0x164c6b},function(_0x353041,_0x270abe){if(_0x353041)return _0x44b57f(_0x353041);return _0xe53e30(_0x270abe);});})['then'](function(){return new BPromise(function(_0x18d055,_0x301fbf){rimraf(_0x19e1f1,function(_0x1cce3f){if(_0x1cce3f)_0x301fbf(_0x1cce3f);return _0x18d055();});});})[_0xcff3('0x1a')](function(){return _0x440a8e['download'](_0x164c6b,_0x570d88,function(_0xa6fc2){if(_0xa6fc2){console[_0xcff3('0x74')](_0xcff3('0x75'),_0xa6fc2);}else{fs[_0xcff3('0x76')](_0x164c6b);}});});});}else{return _0x440a8e[_0xcff3('0x77')](0xc8);}})[_0xcff3('0x28')](handleError(_0x440a8e,null));};