b29571cec8526d49ae020b1b31ce8145dcaafdef
[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 _0x1d34=['ids','omit','getMessages','findOne','hasOwnProperty','nolimit','order','sort','pick','SmsInteractionId','where','filter','$gte','split','format','include','setTags','findAll','color','emit','smsInteractionTags:save','removeTags','download','unix','toString','root','tmp','join','transcript-%d-%s.zip','User','fullname','push','firstName','createdAt','direction','read','SmsAccount','Account','Owner','mkdirSync','Sms','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','disposition','Messages','out','Contact','lastName','secret','renderFile','server','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','zip-dir','moment','bluebird','path','ejs','lodash','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./smsInteraction.socket','register','status','end','json','offset','limit','undefined','count','set','Content-Range','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','key','getOptions','sms','query','user','catch','show','params','model','keys','filters','intersection','attributes','fields','length','includeAll','merge','options','SmsInteraction','find','create','body','describe','addMessage','SmsMessage'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1d34,0xb2));var _0x41d3=function(_0x484320,_0x2de5d2){_0x484320=_0x484320-0x0;var _0x28a3b0=_0x1d34[_0x484320];return _0x28a3b0;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x41d3('0x0'));var moment=require(_0x41d3('0x1'));var BPromise=require(_0x41d3('0x2'));var util=require('util');var path=require(_0x41d3('0x3'));var ejs=require(_0x41d3('0x4'));var fs=require('fs');var _=require(_0x41d3('0x5'));var Redis=require('ioredis');var interaction=require(_0x41d3('0x6'));var qs=require(_0x41d3('0x7'));var pdf=require('../../components/export/pdf');var logger=require('../../config/logger')(_0x41d3('0x8'));var config=require(_0x41d3('0x9'));var db=require(_0x41d3('0xa'))['db'];config[_0x41d3('0xb')]=_[_0x41d3('0xc')](config[_0x41d3('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x41d3('0xd'))(new Redis(config['redis']));require(_0x41d3('0xe'))[_0x41d3('0xf')](socket);function respondWithStatusCode(_0x1f8be4,_0x29741b){_0x29741b=_0x29741b||0xcc;return function(_0x2e38f8){if(_0x2e38f8){return _0x1f8be4['sendStatus'](_0x29741b);}return _0x1f8be4[_0x41d3('0x10')](_0x29741b)[_0x41d3('0x11')]();};}function respondWithResult(_0x58a855,_0x56821c){_0x56821c=_0x56821c||0xc8;return function(_0x13647b){if(_0x13647b){return _0x58a855[_0x41d3('0x10')](_0x56821c)[_0x41d3('0x12')](_0x13647b);}};}function respondWithFilteredResult(_0x4b209c,_0x425d94){return function(_0x2ebf55){if(_0x2ebf55){var _0x347921=typeof _0x425d94[_0x41d3('0x13')]==='undefined'&&typeof _0x425d94[_0x41d3('0x14')]===_0x41d3('0x15');var _0x489e7b=_0x2ebf55[_0x41d3('0x16')];var _0x42c703=_0x347921?0x0:_0x425d94[_0x41d3('0x13')];var _0x1aa584=_0x347921?_0x2ebf55[_0x41d3('0x16')]:_0x425d94[_0x41d3('0x13')]+_0x425d94[_0x41d3('0x14')];var _0x41c60d;if(_0x1aa584>=_0x489e7b){_0x1aa584=_0x489e7b;_0x41c60d=0xc8;}else{_0x41c60d=0xce;}_0x4b209c[_0x41d3('0x10')](_0x41c60d);return _0x4b209c[_0x41d3('0x17')](_0x41d3('0x18'),_0x42c703+'-'+_0x1aa584+'/'+_0x489e7b)['json'](_0x2ebf55);}return null;};}function saveUpdates(_0x56b706){return function(_0x388ea1){if(_0x388ea1){return _0x388ea1[_0x41d3('0x19')](_0x56b706)[_0x41d3('0x1a')](function(_0x2b251e){return _0x2b251e;});}return null;};}function removeEntity(_0x52e015){return function(_0x227723){if(_0x227723){return _0x227723[_0x41d3('0x1b')]()[_0x41d3('0x1a')](function(){_0x52e015[_0x41d3('0x10')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1371e4){return function(_0x20dea2){if(!_0x20dea2){_0x1371e4['sendStatus'](0x194);}return _0x20dea2;};}function handleError(_0x76b1c6,_0x48aa22){_0x48aa22=_0x48aa22||0x1f4;return function(_0x1c9938){logger[_0x41d3('0x1c')](_0x1c9938['stack']);if(_0x1c9938[_0x41d3('0x1d')]){delete _0x1c9938['name'];}_0x76b1c6['status'](_0x48aa22)[_0x41d3('0x1e')](_0x1c9938);};}exports[_0x41d3('0x1f')]=function(_0x252d0d,_0xec4a3d){var _0x4abf3c={};var _0x649791=_[_0x41d3('0x20')](db['SmsInteraction'][_0x41d3('0x21')],function(_0x37fe3c){return{'name':_0x37fe3c[_0x41d3('0x22')],'type':_0x37fe3c['type'][_0x41d3('0x23')]};});_0x4abf3c=qs[_0x41d3('0x24')](_0x649791,_0x252d0d);return interaction['findAll'](_0x41d3('0x25'),_0x252d0d[_0x41d3('0x26')],_0x252d0d[_0x41d3('0x27')],_0x4abf3c,_0x649791)[_0x41d3('0x1a')](respondWithFilteredResult(_0xec4a3d,_0x4abf3c))[_0x41d3('0x28')](handleError(_0xec4a3d,null));};exports[_0x41d3('0x29')]=function(_0xc107fd,_0x38dcab){var _0x4641db={'raw':![],'where':{'id':_0xc107fd[_0x41d3('0x2a')]['id']}},_0x32edff={};_0x32edff[_0x41d3('0x2b')]=_['keys'](db['SmsInteraction'][_0x41d3('0x21')]);_0x32edff[_0x41d3('0x26')]=_[_0x41d3('0x2c')](_0xc107fd['query']);_0x32edff[_0x41d3('0x2d')]=_[_0x41d3('0x2e')](_0x32edff['model'],_0x32edff[_0x41d3('0x26')]);_0x4641db[_0x41d3('0x2f')]=_[_0x41d3('0x2e')](_0x32edff[_0x41d3('0x2b')],qs[_0x41d3('0x30')](_0xc107fd[_0x41d3('0x26')]['fields']));_0x4641db[_0x41d3('0x2f')]=_0x4641db[_0x41d3('0x2f')][_0x41d3('0x31')]?_0x4641db[_0x41d3('0x2f')]:_0x32edff['model'];if(_0xc107fd[_0x41d3('0x26')][_0x41d3('0x32')]){_0x4641db['include']=[{'all':!![]}];}_0x4641db=_[_0x41d3('0x33')]({},_0x4641db,_0xc107fd[_0x41d3('0x34')]);return db[_0x41d3('0x35')][_0x41d3('0x36')](_0x4641db)[_0x41d3('0x1a')](handleEntityNotFound(_0x38dcab,null))[_0x41d3('0x1a')](respondWithResult(_0x38dcab,null))[_0x41d3('0x28')](handleError(_0x38dcab,null));};exports[_0x41d3('0x37')]=function(_0x3d0b52,_0x2a71aa){return db[_0x41d3('0x35')][_0x41d3('0x37')](_0x3d0b52['body'],{})[_0x41d3('0x1a')](respondWithResult(_0x2a71aa,0xc9))['catch'](handleError(_0x2a71aa,null));};exports[_0x41d3('0x19')]=function(_0x1ad1a1,_0x454df2){if(_0x1ad1a1[_0x41d3('0x38')]['id']){delete _0x1ad1a1[_0x41d3('0x38')]['id'];}return db[_0x41d3('0x35')][_0x41d3('0x36')]({'where':{'id':_0x1ad1a1[_0x41d3('0x2a')]['id']}})[_0x41d3('0x1a')](handleEntityNotFound(_0x454df2,null))[_0x41d3('0x1a')](saveUpdates(_0x1ad1a1['body'],null))['then'](respondWithResult(_0x454df2,null))[_0x41d3('0x28')](handleError(_0x454df2,null));};exports[_0x41d3('0x1b')]=function(_0x2412a2,_0x1c592b){return db['SmsInteraction'][_0x41d3('0x36')]({'where':{'id':_0x2412a2[_0x41d3('0x2a')]['id']}})[_0x41d3('0x1a')](handleEntityNotFound(_0x1c592b,null))[_0x41d3('0x1a')](removeEntity(_0x1c592b,null))[_0x41d3('0x28')](handleError(_0x1c592b,null));};exports[_0x41d3('0x39')]=function(_0x1a445d,_0x18c116){return db['SmsInteraction'][_0x41d3('0x39')]()[_0x41d3('0x1a')](respondWithResult(_0x18c116,null))[_0x41d3('0x28')](handleError(_0x18c116,null));};exports[_0x41d3('0x3a')]=function(_0x108681,_0x13e782){return db[_0x41d3('0x3b')][_0x41d3('0x36')]({'where':{'id':_0x108681[_0x41d3('0x2a')]['id']}})[_0x41d3('0x1a')](handleEntityNotFound(_0x13e782,null))[_0x41d3('0x1a')](function(_0x35791d){if(_0x35791d){return _0x35791d['addMessage'](_0x108681[_0x41d3('0x38')][_0x41d3('0x3c')],_[_0x41d3('0x3d')](_0x108681['body'],[_0x41d3('0x3c'),'id'])||{});}})[_0x41d3('0x1a')](respondWithResult(_0x13e782,null))[_0x41d3('0x28')](handleError(_0x13e782,null));};exports[_0x41d3('0x3e')]=function(_0x37027b,_0x3d4ae9){var _0x24ffac={'raw':![],'where':{}};var _0x55fa93={};var _0x363e1e={'count':0x0,'rows':[]};return db[_0x41d3('0x35')][_0x41d3('0x3f')]({'where':{'id':_0x37027b[_0x41d3('0x2a')]['id']}})['then'](handleEntityNotFound(_0x3d4ae9,null))[_0x41d3('0x1a')](function(_0x25a74b){if(_0x25a74b){_0x55fa93[_0x41d3('0x2b')]=_[_0x41d3('0x2c')](db[_0x41d3('0x3b')]['rawAttributes']);_0x55fa93[_0x41d3('0x26')]=_[_0x41d3('0x2c')](_0x37027b[_0x41d3('0x26')]);_0x55fa93['filters']=_['intersection'](_0x55fa93['model'],_0x55fa93['query']);_0x24ffac['attributes']=_[_0x41d3('0x2e')](_0x55fa93[_0x41d3('0x2b')],qs['fields'](_0x37027b[_0x41d3('0x26')]['fields']));_0x24ffac[_0x41d3('0x2f')]=_0x24ffac[_0x41d3('0x2f')][_0x41d3('0x31')]?_0x24ffac[_0x41d3('0x2f')]:_0x55fa93[_0x41d3('0x2b')];if(!_0x37027b[_0x41d3('0x26')][_0x41d3('0x40')](_0x41d3('0x41'))){_0x24ffac['limit']=qs[_0x41d3('0x14')](_0x37027b[_0x41d3('0x26')][_0x41d3('0x14')]);_0x24ffac['offset']=qs['offset'](_0x37027b['query']['offset']);}_0x24ffac[_0x41d3('0x42')]=qs[_0x41d3('0x43')](_0x37027b[_0x41d3('0x26')]['sort']);_0x24ffac['where']=qs[_0x41d3('0x2d')](_[_0x41d3('0x44')](_0x37027b[_0x41d3('0x26')],_0x55fa93[_0x41d3('0x2d')]));_0x24ffac['where'][_0x41d3('0x45')]=_0x25a74b['id'];if(_0x37027b[_0x41d3('0x26')]['filter']){_0x24ffac[_0x41d3('0x46')]=_[_0x41d3('0x33')](_0x24ffac[_0x41d3('0x46')],{'$or':_[_0x41d3('0x20')](_0x24ffac[_0x41d3('0x2f')],function(_0x33e07d){var _0x593476={};_0x593476[_0x33e07d]={'$like':'%'+_0x37027b[_0x41d3('0x26')][_0x41d3('0x47')]+'%'};return _0x593476;})});}if(_0x37027b[_0x41d3('0x26')][_0x41d3('0x48')]){var _0x2dae68=_0x37027b[_0x41d3('0x26')][_0x41d3('0x48')][_0x41d3('0x49')](',');var _0x388bdf={};_0x388bdf[_0x2dae68[0x0]]={'$gte':moment(_0x2dae68[0x1])[_0x41d3('0x4a')]('YYYY-MM-DD\x20HH:mm:ss')};_0x24ffac[_0x41d3('0x46')]=_[_0x41d3('0x33')](_0x24ffac[_0x41d3('0x46')],_0x388bdf);}_0x24ffac=_[_0x41d3('0x33')]({},_0x24ffac,_0x37027b[_0x41d3('0x34')]);return db[_0x41d3('0x3b')]['count']({'where':_0x24ffac['where']})[_0x41d3('0x1a')](function(_0x1604e6){_0x363e1e[_0x41d3('0x16')]=_0x1604e6;if(_0x37027b['query'][_0x41d3('0x32')]){_0x24ffac[_0x41d3('0x4b')]=[{'all':!![]}];}return db[_0x41d3('0x3b')]['findAll'](_0x24ffac);})[_0x41d3('0x1a')](function(_0x2f64e4){_0x363e1e['rows']=_0x2f64e4;return _0x363e1e;});}})['then'](respondWithFilteredResult(_0x3d4ae9,_0x24ffac))[_0x41d3('0x28')](handleError(_0x3d4ae9,null));};exports['addTags']=function(_0x18dce8,_0x35b064){return db[_0x41d3('0x35')]['find']({'where':{'id':_0x18dce8[_0x41d3('0x2a')]['id']}})[_0x41d3('0x1a')](handleEntityNotFound(_0x35b064,null))[_0x41d3('0x1a')](function(_0x1f52d9){if(_0x1f52d9){return _0x1f52d9[_0x41d3('0x4c')](_0x18dce8['body'][_0x41d3('0x3c')],_[_0x41d3('0x3d')](_0x18dce8[_0x41d3('0x38')],[_0x41d3('0x3c'),'id'])||{})['spread'](function(){return db['Tag'][_0x41d3('0x4d')]({'attributes':['id',_0x41d3('0x1d'),_0x41d3('0x4e')],'where':{'id':_0x18dce8[_0x41d3('0x38')][_0x41d3('0x3c')]}});})['then'](function(_0x4a142b){socket[_0x41d3('0x4f')](_0x41d3('0x50'),{'id':Number(_0x18dce8[_0x41d3('0x2a')]['id']),'tags':_0x4a142b||[]});return{'id':Number(_0x18dce8['params']['id']),'tags':_0x4a142b||[]};});}})[_0x41d3('0x1a')](respondWithResult(_0x35b064,null))['catch'](handleError(_0x35b064,null));};exports['removeTags']=function(_0x56c6e9,_0x497cb1){return db['SmsInteraction'][_0x41d3('0x36')]({'where':{'id':_0x56c6e9[_0x41d3('0x2a')]['id']}})[_0x41d3('0x1a')](handleEntityNotFound(_0x497cb1,null))[_0x41d3('0x1a')](function(_0x3f4f4f){if(_0x3f4f4f){return _0x3f4f4f[_0x41d3('0x51')](_0x56c6e9['query'][_0x41d3('0x3c')]);}})[_0x41d3('0x1a')](respondWithStatusCode(_0x497cb1,null))[_0x41d3('0x28')](handleError(_0x497cb1,null));};exports[_0x41d3('0x52')]=function(_0x4b85fb,_0x505e21){var _0x28b50a=moment()[_0x41d3('0x53')]()[_0x41d3('0x54')]();var _0x74382e=path['join'](config[_0x41d3('0x55')],'server','files',_0x41d3('0x56'));var _0xf4180c=path[_0x41d3('0x57')](_0x74382e,_0x28b50a);var _0x5e106b=util[_0x41d3('0x4a')](_0x41d3('0x58'),_0x4b85fb[_0x41d3('0x2a')]['id'],_0x28b50a);var _0x280d86=path[_0x41d3('0x57')](_0x74382e,_0x5e106b);var _0x1e3638=[];_0x1e3638['push']({'model':db[_0x41d3('0x59')],'as':_0x41d3('0x59'),'attributes':['id',_0x41d3('0x5a')],'raw':!![]});_0x1e3638[_0x41d3('0x5b')]({'model':db['CmContact'],'as':'Contact','attributes':['id',_0x41d3('0x5c'),'lastName'],'raw':!![]});var _0x3e2440=[{'model':db[_0x41d3('0x3b')],'as':'Messages','attributes':['id',_0x41d3('0x38'),_0x41d3('0x5d'),_0x41d3('0x5e'),'secret',_0x41d3('0x5f')],'include':_0x1e3638}];_0x3e2440[_0x41d3('0x5b')]({'model':db[_0x41d3('0x60')],'as':_0x41d3('0x61'),'attributes':['id',_0x41d3('0x1d')]});_0x3e2440['push']({'model':db[_0x41d3('0x59')],'as':_0x41d3('0x62'),'attributes':['id','fullname']});return db[_0x41d3('0x35')]['find']({'where':{'id':_0x4b85fb[_0x41d3('0x2a')]['id']},'include':_0x3e2440})['then'](handleEntityNotFound(_0x505e21,null))['then'](function(_0x2cc81f){if(_0x2cc81f){var _0x12ad2e=_0x2cc81f['get']({'plain':!![]});fs[_0x41d3('0x63')](_0xf4180c);var _0xfc5683={'channel':_0x41d3('0x64'),'account':_0x12ad2e[_0x41d3('0x61')][_0x41d3('0x1d')],'agent':_0x12ad2e[_0x41d3('0x62')]?_0x12ad2e[_0x41d3('0x62')][_0x41d3('0x5a')]:'N.A.','createdAt':moment(_0x12ad2e['createdAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x41d3('0x54')](),'closedAt':_0x12ad2e[_0x41d3('0x65')]?moment(_0x12ad2e[_0x41d3('0x66')])[_0x41d3('0x4a')](_0x41d3('0x67'))['toString']():'','disposition':_0x12ad2e[_0x41d3('0x68')],'messages':_(_0x12ad2e[_0x41d3('0x69')])[_0x41d3('0x47')]({'secret':![]})['map'](function(_0x366f50){return{'date':moment(_0x366f50[_0x41d3('0x5d')])[_0x41d3('0x4a')](_0x41d3('0x67'))[_0x41d3('0x54')](),'sender':_0x366f50['direction']===_0x41d3('0x6a')?_0x366f50[_0x41d3('0x59')]?_0x366f50[_0x41d3('0x59')]['fullname']:'System':_0x366f50['Contact'][_0x41d3('0x5c')]+(_0x366f50[_0x41d3('0x6b')][_0x41d3('0x6c')]?'\x20'+_0x366f50[_0x41d3('0x6b')][_0x41d3('0x6c')]:''),'body':_0x366f50['body'],'direction':_0x366f50[_0x41d3('0x5e')]===_0x41d3('0x6a')?'A':'C','secret':_0x366f50[_0x41d3('0x6d')],'read':_0x366f50['read']};})['value']()};return ejs[_0x41d3('0x6e')](path[_0x41d3('0x57')](config['root'],_0x41d3('0x6f'),_0x41d3('0x70'),_0x41d3('0x71')),{'interaction':_0xfc5683})['then'](function(_0x4c6426){var _0x3efbbb=path[_0x41d3('0x57')](_0xf4180c,_0x41d3('0x72')+_0x12ad2e['id']+'-'+_0x28b50a+_0x41d3('0x73'));var _0x5efca4={'path':_0x3efbbb,'channel':_0x41d3('0x64'),'interactionId':_0x12ad2e['id']};return pdf[_0x41d3('0x74')](_0x4c6426,_0x5efca4);})[_0x41d3('0x1a')](function(){return new BPromise(function(_0x5bea94,_0x1378bd){zipdir(_0xf4180c,{'saveTo':_0x280d86},function(_0x2ea297,_0x295875){if(_0x2ea297)return _0x1378bd(_0x2ea297);return _0x5bea94(_0x295875);});})[_0x41d3('0x1a')](function(){return new BPromise(function(_0x36de8d,_0x61d5ad){rimraf(_0xf4180c,function(_0x31633f){if(_0x31633f)_0x61d5ad(_0x31633f);return _0x36de8d();});});})['then'](function(){return _0x505e21[_0x41d3('0x52')](_0x280d86,_0x5e106b,function(_0x5ee7f4){if(_0x5ee7f4){console['log'](_0x41d3('0x75'),_0x5ee7f4);}else{fs[_0x41d3('0x76')](_0x280d86);}});});});}else{return _0x505e21['sendStatus'](0xc8);}})['catch'](handleError(_0x505e21,null));};