123e77ca9d0077cb470b2f2dd4dfae2059d6b20c
[motion2.git] / server / api / cannedAnswer / cannedAnswer.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 _0xfbc8=['rows','show','params','catch','update','body','find','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','get','CannedAnswers','destroy','then','error','stack','name','index','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','CannedAnswer','findAll'];(function(_0xaee297,_0x58190c){var _0x90293c=function(_0x281ba3){while(--_0x281ba3){_0xaee297['push'](_0xaee297['shift']());}};_0x90293c(++_0x58190c);}(_0xfbc8,0x1bb));var _0x8fbc=function(_0x45cd35,_0x41147c){_0x45cd35=_0x45cd35-0x0;var _0x16db84=_0xfbc8[_0x45cd35];return _0x16db84;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x8fbc('0x0'));var jsonpatch=require(_0x8fbc('0x1'));var rp=require(_0x8fbc('0x2'));var moment=require(_0x8fbc('0x3'));var BPromise=require(_0x8fbc('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8fbc('0x5'));var sox=require(_0x8fbc('0x6'));var csv=require(_0x8fbc('0x7'));var ejs=require(_0x8fbc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8fbc('0x9'));var squel=require(_0x8fbc('0xa'));var crypto=require(_0x8fbc('0xb'));var jsforce=require(_0x8fbc('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8fbc('0x7'));var querystring=require(_0x8fbc('0xd'));var Papa=require(_0x8fbc('0xe'));var Redis=require('ioredis');var authService=require(_0x8fbc('0xf'));var qs=require(_0x8fbc('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8fbc('0x11'));var logger=require('../../config/logger')(_0x8fbc('0x12'));var utils=require('../../config/utils');var config=require(_0x8fbc('0x13'));var licenseUtil=require(_0x8fbc('0x14'));var db=require(_0x8fbc('0x15'))['db'];function respondWithStatusCode(_0x3d8a17,_0xcdfa91){_0xcdfa91=_0xcdfa91||0xcc;return function(_0x89f19a){if(_0x89f19a){return _0x3d8a17[_0x8fbc('0x16')](_0xcdfa91);}return _0x3d8a17[_0x8fbc('0x17')](_0xcdfa91)[_0x8fbc('0x18')]();};}function respondWithResult(_0x29ab06,_0x27bff9){_0x27bff9=_0x27bff9||0xc8;return function(_0x35ae1a){if(_0x35ae1a){return _0x29ab06[_0x8fbc('0x17')](_0x27bff9)[_0x8fbc('0x19')](_0x35ae1a);}};}function respondWithFilteredResult(_0x55cd74,_0x47cf48){return function(_0x3b92eb){if(_0x3b92eb){var _0x3b070d=typeof _0x47cf48['offset']===_0x8fbc('0x1a')&&typeof _0x47cf48[_0x8fbc('0x1b')]===_0x8fbc('0x1a');var _0x4ce8c3=_0x3b92eb[_0x8fbc('0x1c')];var _0x5896e5=_0x3b070d?0x0:_0x47cf48[_0x8fbc('0x1d')];var _0x19c23c=_0x3b070d?_0x3b92eb['count']:_0x47cf48[_0x8fbc('0x1d')]+_0x47cf48[_0x8fbc('0x1b')];var _0x231206;if(_0x19c23c>=_0x4ce8c3){_0x19c23c=_0x4ce8c3;_0x231206=0xc8;}else{_0x231206=0xce;}_0x55cd74[_0x8fbc('0x17')](_0x231206);return _0x55cd74[_0x8fbc('0x1e')](_0x8fbc('0x1f'),_0x5896e5+'-'+_0x19c23c+'/'+_0x4ce8c3)['json'](_0x3b92eb);}return null;};}function patchUpdates(_0x4d74a8){return function(_0x38ffb8){try{jsonpatch[_0x8fbc('0x20')](_0x38ffb8,_0x4d74a8,!![]);}catch(_0x32bcb6){return BPromise[_0x8fbc('0x21')](_0x32bcb6);}return _0x38ffb8[_0x8fbc('0x22')]();};}function saveUpdates(_0x354c90,_0x3be4a2){return function(_0x51167e){if(_0x51167e){return _0x51167e['update'](_0x354c90)['then'](function(_0x19ed0a){return _0x19ed0a;});}return null;};}function removeEntity(_0x1bae03,_0x36371c){return function(_0x5059a6){if(_0x5059a6){return _0x5059a6['destroy']()['then'](function(){var _0x329b12=_0x5059a6[_0x8fbc('0x23')]({'plain':!![]});var _0x55d9fc=_0x8fbc('0x24');return db['UserProfileResource'][_0x8fbc('0x25')]({'where':{'type':_0x55d9fc,'resourceId':_0x329b12['id']}})[_0x8fbc('0x26')](function(){return _0x5059a6;});})['then'](function(){_0x1bae03[_0x8fbc('0x17')](0xcc)[_0x8fbc('0x18')]();});}};}function handleEntityNotFound(_0x1097bb,_0x1cc446){return function(_0x508595){if(!_0x508595){_0x1097bb[_0x8fbc('0x16')](0x194);}return _0x508595;};}function handleError(_0x1177da,_0x51d9ae){_0x51d9ae=_0x51d9ae||0x1f4;return function(_0x4fbce9){logger[_0x8fbc('0x27')](_0x4fbce9[_0x8fbc('0x28')]);if(_0x4fbce9[_0x8fbc('0x29')]){delete _0x4fbce9[_0x8fbc('0x29')];}_0x1177da[_0x8fbc('0x17')](_0x51d9ae)['send'](_0x4fbce9);};}exports[_0x8fbc('0x2a')]=function(_0x1741cc,_0x3f1eee){var _0x573a53={},_0x48e06e={},_0x8801f0={'count':0x0,'rows':[]};var _0x462283=_['map'](db['CannedAnswer'][_0x8fbc('0x2b')],function(_0x3e0a5e){return{'name':_0x3e0a5e[_0x8fbc('0x2c')],'type':_0x3e0a5e[_0x8fbc('0x2d')]['key']};});_0x48e06e[_0x8fbc('0x2e')]=_[_0x8fbc('0x2f')](_0x462283,'name');_0x48e06e[_0x8fbc('0x30')]=_[_0x8fbc('0x31')](_0x1741cc[_0x8fbc('0x30')]);_0x48e06e[_0x8fbc('0x32')]=_[_0x8fbc('0x33')](_0x48e06e['model'],_0x48e06e[_0x8fbc('0x30')]);_0x573a53[_0x8fbc('0x34')]=_[_0x8fbc('0x33')](_0x48e06e[_0x8fbc('0x2e')],qs[_0x8fbc('0x35')](_0x1741cc[_0x8fbc('0x30')][_0x8fbc('0x35')]));_0x573a53[_0x8fbc('0x34')]=_0x573a53[_0x8fbc('0x34')][_0x8fbc('0x36')]?_0x573a53[_0x8fbc('0x34')]:_0x48e06e[_0x8fbc('0x2e')];if(!_0x1741cc['query'][_0x8fbc('0x37')](_0x8fbc('0x38'))){_0x573a53['limit']=qs[_0x8fbc('0x1b')](_0x1741cc[_0x8fbc('0x30')][_0x8fbc('0x1b')]);_0x573a53[_0x8fbc('0x1d')]=qs[_0x8fbc('0x1d')](_0x1741cc[_0x8fbc('0x30')][_0x8fbc('0x1d')]);}_0x573a53['order']=qs[_0x8fbc('0x39')](_0x1741cc[_0x8fbc('0x30')][_0x8fbc('0x39')]);_0x573a53[_0x8fbc('0x3a')]=qs[_0x8fbc('0x32')](_[_0x8fbc('0x3b')](_0x1741cc[_0x8fbc('0x30')],_0x48e06e[_0x8fbc('0x32')]),_0x462283);if(_0x1741cc[_0x8fbc('0x30')][_0x8fbc('0x3c')]){_0x573a53[_0x8fbc('0x3a')]=_[_0x8fbc('0x3d')](_0x573a53[_0x8fbc('0x3a')],{'$or':[{'key':{'$like':'%'+_0x1741cc[_0x8fbc('0x30')][_0x8fbc('0x3c')]+'%'}},{'value':{'$like':'%'+_0x1741cc['query'][_0x8fbc('0x3c')]+'%'}}]});}_0x573a53=_[_0x8fbc('0x3d')]({},_0x573a53,_0x1741cc[_0x8fbc('0x3e')]);var _0x47b7aa={'where':_0x573a53[_0x8fbc('0x3a')]};return db['CannedAnswer'][_0x8fbc('0x1c')](_0x47b7aa)[_0x8fbc('0x26')](function(_0x5bbe31){_0x8801f0[_0x8fbc('0x1c')]=_0x5bbe31;if(_0x1741cc[_0x8fbc('0x30')][_0x8fbc('0x3f')]){_0x573a53[_0x8fbc('0x40')]=[{'all':!![]}];}return db[_0x8fbc('0x41')][_0x8fbc('0x42')](_0x573a53);})[_0x8fbc('0x26')](function(_0x37dbc8){_0x8801f0[_0x8fbc('0x43')]=_0x37dbc8;return _0x8801f0;})['then'](respondWithFilteredResult(_0x3f1eee,_0x573a53))['catch'](handleError(_0x3f1eee,null));};exports[_0x8fbc('0x44')]=function(_0x12d9fb,_0x5e4378){var _0x2da16d={'raw':!![],'where':{'id':_0x12d9fb[_0x8fbc('0x45')]['id']}},_0x2df1c0={};_0x2df1c0[_0x8fbc('0x2e')]=_['keys'](db[_0x8fbc('0x41')][_0x8fbc('0x2b')]);_0x2df1c0['query']=_[_0x8fbc('0x31')](_0x12d9fb[_0x8fbc('0x30')]);_0x2df1c0[_0x8fbc('0x32')]=_[_0x8fbc('0x33')](_0x2df1c0['model'],_0x2df1c0[_0x8fbc('0x30')]);_0x2da16d['attributes']=_[_0x8fbc('0x33')](_0x2df1c0[_0x8fbc('0x2e')],qs['fields'](_0x12d9fb[_0x8fbc('0x30')][_0x8fbc('0x35')]));_0x2da16d['attributes']=_0x2da16d[_0x8fbc('0x34')]['length']?_0x2da16d['attributes']:_0x2df1c0[_0x8fbc('0x2e')];if(_0x12d9fb[_0x8fbc('0x30')]['includeAll']){_0x2da16d['include']=[{'all':!![]}];}_0x2da16d=_[_0x8fbc('0x3d')]({},_0x2da16d,_0x12d9fb[_0x8fbc('0x3e')]);return db['CannedAnswer']['find'](_0x2da16d)[_0x8fbc('0x26')](handleEntityNotFound(_0x5e4378,null))[_0x8fbc('0x26')](respondWithResult(_0x5e4378,null))[_0x8fbc('0x46')](handleError(_0x5e4378,null));};exports[_0x8fbc('0x47')]=function(_0xcbe79b,_0x5e9dd9){if(_0xcbe79b[_0x8fbc('0x48')]['id']){delete _0xcbe79b['body']['id'];}return db[_0x8fbc('0x41')][_0x8fbc('0x49')]({'where':{'id':_0xcbe79b[_0x8fbc('0x45')]['id']}})['then'](handleEntityNotFound(_0x5e9dd9,null))['then'](saveUpdates(_0xcbe79b[_0x8fbc('0x48')],null))[_0x8fbc('0x26')](respondWithResult(_0x5e9dd9,null))[_0x8fbc('0x46')](handleError(_0x5e9dd9,null));};exports[_0x8fbc('0x25')]=function(_0x4aa8d7,_0x29714d){return db[_0x8fbc('0x41')]['find']({'where':{'id':_0x4aa8d7['params']['id']}})[_0x8fbc('0x26')](handleEntityNotFound(_0x29714d,null))['then'](removeEntity(_0x29714d,null))['catch'](handleError(_0x29714d,null));};exports['create']=function(_0xa18dfe,_0x439ee2){var _0x457947={'key':_0xa18dfe['body']['key']};if(_0xa18dfe[_0x8fbc('0x48')][_0x8fbc('0x4a')]){_0x457947[_0x8fbc('0x4a')]=_0xa18dfe[_0x8fbc('0x48')]['MailAccountId'];}else if(_0xa18dfe[_0x8fbc('0x48')][_0x8fbc('0x4b')]){_0x457947[_0x8fbc('0x4b')]=_0xa18dfe[_0x8fbc('0x48')][_0x8fbc('0x4b')];}else if(_0xa18dfe[_0x8fbc('0x48')]['OpenchannelAccountId']){_0x457947['OpenchannelAccountId']=_0xa18dfe['body'][_0x8fbc('0x4c')];}else if(_0xa18dfe[_0x8fbc('0x48')]['ChatWebsiteId']){_0x457947[_0x8fbc('0x4d')]=_0xa18dfe[_0x8fbc('0x48')][_0x8fbc('0x4d')];}return db[_0x8fbc('0x41')][_0x8fbc('0x49')]({'where':_0x457947})[_0x8fbc('0x26')](function(_0x26ce58){if(_0x26ce58){throw new db[(_0x8fbc('0x4e'))][(_0x8fbc('0x4f'))](_0x8fbc('0x50'));}return db[_0x8fbc('0x41')]['create'](_0xa18dfe[_0x8fbc('0x48')]);})[_0x8fbc('0x26')](function(_0x3135c9){var _0xca4537=_0xa18dfe['user']['get']({'plain':!![]});if(!_0xca4537)throw new Error(_0x8fbc('0x51'));if(_0xca4537[_0x8fbc('0x52')]==='user'){var _0x166126=_0x3135c9[_0x8fbc('0x23')]({'plain':!![]});return db['UserProfileSection'][_0x8fbc('0x49')]({'where':{'name':_0x8fbc('0x24'),'userProfileId':_0xca4537[_0x8fbc('0x53')]},'raw':!![]})['then'](function(_0x2ad0dd){if(_0x2ad0dd&&_0x2ad0dd[_0x8fbc('0x54')]===0x0){return db['UserProfileResource']['create']({'name':_0x166126['name'],'resourceId':_0x166126['id'],'type':_0x2ad0dd[_0x8fbc('0x29')],'sectionId':_0x2ad0dd['id']},{})[_0x8fbc('0x26')](function(){return _0x3135c9;});}else{return _0x3135c9;}})['catch'](function(_0x230267){logger[_0x8fbc('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x230267);throw _0x230267;});}return _0x3135c9;})[_0x8fbc('0x26')](respondWithResult(_0x439ee2,0xc9))[_0x8fbc('0x46')](handleError(_0x439ee2,null));};