dd69e21af8a71c27bcf2b78de8df13135b3cdf36
[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 _0x0c45=['path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','destroy','then','CannedAnswers','UserProfileResource','sendStatus','error','stack','name','send','index','map','CannedAnswer','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','includeAll','include','findAll','rows','catch','show','params','options','update','body','find','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','ValidationError','The\x20inserted\x20key\x20already\x20exists.','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','rimraf','zip-dir','request-promise','bluebird','mustache','util'];(function(_0xfda7b4,_0x6fd091){var _0x2b13ac=function(_0x1f3f77){while(--_0x1f3f77){_0xfda7b4['push'](_0xfda7b4['shift']());}};_0x2b13ac(++_0x6fd091);}(_0x0c45,0x156));var _0x50c4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0c45[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x50c4('0x0'));var zipdir=require(_0x50c4('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x50c4('0x2'));var moment=require('moment');var BPromise=require(_0x50c4('0x3'));var Mustache=require(_0x50c4('0x4'));var util=require(_0x50c4('0x5'));var path=require(_0x50c4('0x6'));var sox=require('sox');var csv=require(_0x50c4('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x50c4('0x8'));var _=require(_0x50c4('0x9'));var squel=require(_0x50c4('0xa'));var crypto=require(_0x50c4('0xb'));var jsforce=require(_0x50c4('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x50c4('0xd'));var Papa=require(_0x50c4('0xe'));var Redis=require(_0x50c4('0xf'));var authService=require(_0x50c4('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x50c4('0x11'));var hardwareService=require(_0x50c4('0x12'));var logger=require(_0x50c4('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x50c4('0x14'));var licenseUtil=require(_0x50c4('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x245cee,_0x138769){_0x138769=_0x138769||0xcc;return function(_0x1f6d75){if(_0x1f6d75){return _0x245cee['sendStatus'](_0x138769);}return _0x245cee[_0x50c4('0x16')](_0x138769)[_0x50c4('0x17')]();};}function respondWithResult(_0x336b3f,_0x56484a){_0x56484a=_0x56484a||0xc8;return function(_0x537c1b){if(_0x537c1b){return _0x336b3f[_0x50c4('0x16')](_0x56484a)[_0x50c4('0x18')](_0x537c1b);}};}function respondWithFilteredResult(_0x2637d0,_0x590198){return function(_0x4f2a07){if(_0x4f2a07){var _0x34f864=typeof _0x590198[_0x50c4('0x19')]===_0x50c4('0x1a')&&typeof _0x590198[_0x50c4('0x1b')]==='undefined';var _0x1b28ce=_0x4f2a07[_0x50c4('0x1c')];var _0x40d628=_0x34f864?0x0:_0x590198['offset'];var _0x423d4b=_0x34f864?_0x4f2a07[_0x50c4('0x1c')]:_0x590198[_0x50c4('0x19')]+_0x590198['limit'];var _0x1ad13a;if(_0x423d4b>=_0x1b28ce){_0x423d4b=_0x1b28ce;_0x1ad13a=0xc8;}else{_0x1ad13a=0xce;}_0x2637d0[_0x50c4('0x16')](_0x1ad13a);return _0x2637d0['set'](_0x50c4('0x1d'),_0x40d628+'-'+_0x423d4b+'/'+_0x1b28ce)[_0x50c4('0x18')](_0x4f2a07);}return null;};}function patchUpdates(_0x1258cd){return function(_0x163c20){try{jsonpatch[_0x50c4('0x1e')](_0x163c20,_0x1258cd,!![]);}catch(_0x311942){return BPromise['reject'](_0x311942);}return _0x163c20[_0x50c4('0x1f')]();};}function saveUpdates(_0x559c00,_0x2dccce){return function(_0x1c8728){if(_0x1c8728){return _0x1c8728['update'](_0x559c00)['then'](function(_0x2ecedf){return _0x2ecedf;});}return null;};}function removeEntity(_0x105ed8,_0x45bb2c){return function(_0x45c3b2){if(_0x45c3b2){return _0x45c3b2[_0x50c4('0x20')]()[_0x50c4('0x21')](function(){var _0x327c21=_0x45c3b2['get']({'plain':!![]});var _0x50f9bb=_0x50c4('0x22');return db[_0x50c4('0x23')][_0x50c4('0x20')]({'where':{'type':_0x50f9bb,'resourceId':_0x327c21['id']}})[_0x50c4('0x21')](function(){return _0x45c3b2;});})['then'](function(){_0x105ed8['status'](0xcc)[_0x50c4('0x17')]();});}};}function handleEntityNotFound(_0x3409f0,_0x2a72cd){return function(_0x1edeff){if(!_0x1edeff){_0x3409f0[_0x50c4('0x24')](0x194);}return _0x1edeff;};}function handleError(_0x2a8a12,_0x349439){_0x349439=_0x349439||0x1f4;return function(_0x475b8a){logger[_0x50c4('0x25')](_0x475b8a[_0x50c4('0x26')]);if(_0x475b8a['name']){delete _0x475b8a[_0x50c4('0x27')];}_0x2a8a12[_0x50c4('0x16')](_0x349439)[_0x50c4('0x28')](_0x475b8a);};}exports[_0x50c4('0x29')]=function(_0x38eb0e,_0x4d325b){var _0x5da02f={},_0x4b7cc1={},_0x2fa44c={'count':0x0,'rows':[]};var _0x41b1f6=_[_0x50c4('0x2a')](db[_0x50c4('0x2b')][_0x50c4('0x2c')],function(_0x1bfdee){return{'name':_0x1bfdee[_0x50c4('0x2d')],'type':_0x1bfdee[_0x50c4('0x2e')][_0x50c4('0x2f')]};});_0x4b7cc1['model']=_[_0x50c4('0x2a')](_0x41b1f6,'name');_0x4b7cc1['query']=_[_0x50c4('0x30')](_0x38eb0e[_0x50c4('0x31')]);_0x4b7cc1[_0x50c4('0x32')]=_[_0x50c4('0x33')](_0x4b7cc1[_0x50c4('0x34')],_0x4b7cc1[_0x50c4('0x31')]);_0x5da02f[_0x50c4('0x35')]=_[_0x50c4('0x33')](_0x4b7cc1[_0x50c4('0x34')],qs[_0x50c4('0x36')](_0x38eb0e[_0x50c4('0x31')][_0x50c4('0x36')]));_0x5da02f[_0x50c4('0x35')]=_0x5da02f[_0x50c4('0x35')]['length']?_0x5da02f[_0x50c4('0x35')]:_0x4b7cc1[_0x50c4('0x34')];if(!_0x38eb0e[_0x50c4('0x31')][_0x50c4('0x37')](_0x50c4('0x38'))){_0x5da02f[_0x50c4('0x1b')]=qs[_0x50c4('0x1b')](_0x38eb0e[_0x50c4('0x31')][_0x50c4('0x1b')]);_0x5da02f[_0x50c4('0x19')]=qs[_0x50c4('0x19')](_0x38eb0e[_0x50c4('0x31')]['offset']);}_0x5da02f[_0x50c4('0x39')]=qs[_0x50c4('0x3a')](_0x38eb0e[_0x50c4('0x31')][_0x50c4('0x3a')]);_0x5da02f['where']=qs[_0x50c4('0x32')](_[_0x50c4('0x3b')](_0x38eb0e[_0x50c4('0x31')],_0x4b7cc1['filters']),_0x41b1f6);if(_0x38eb0e['query'][_0x50c4('0x3c')]){_0x5da02f[_0x50c4('0x3d')]=_[_0x50c4('0x3e')](_0x5da02f[_0x50c4('0x3d')],{'$or':[{'key':{'$like':'%'+_0x38eb0e[_0x50c4('0x31')][_0x50c4('0x3c')]+'%'}},{'value':{'$like':'%'+_0x38eb0e['query']['filter']+'%'}}]});}_0x5da02f=_[_0x50c4('0x3e')]({},_0x5da02f,_0x38eb0e['options']);var _0x467ed7={'where':_0x5da02f[_0x50c4('0x3d')]};return db[_0x50c4('0x2b')][_0x50c4('0x1c')](_0x467ed7)[_0x50c4('0x21')](function(_0x3418fd){_0x2fa44c[_0x50c4('0x1c')]=_0x3418fd;if(_0x38eb0e[_0x50c4('0x31')][_0x50c4('0x3f')]){_0x5da02f[_0x50c4('0x40')]=[{'all':!![]}];}return db[_0x50c4('0x2b')][_0x50c4('0x41')](_0x5da02f);})['then'](function(_0x5ef83b){_0x2fa44c[_0x50c4('0x42')]=_0x5ef83b;return _0x2fa44c;})[_0x50c4('0x21')](respondWithFilteredResult(_0x4d325b,_0x5da02f))[_0x50c4('0x43')](handleError(_0x4d325b,null));};exports[_0x50c4('0x44')]=function(_0x6406d0,_0x362d6d){var _0x2a186a={'raw':!![],'where':{'id':_0x6406d0[_0x50c4('0x45')]['id']}},_0x245f77={};_0x245f77['model']=_['keys'](db['CannedAnswer'][_0x50c4('0x2c')]);_0x245f77['query']=_[_0x50c4('0x30')](_0x6406d0['query']);_0x245f77[_0x50c4('0x32')]=_[_0x50c4('0x33')](_0x245f77[_0x50c4('0x34')],_0x245f77[_0x50c4('0x31')]);_0x2a186a[_0x50c4('0x35')]=_[_0x50c4('0x33')](_0x245f77['model'],qs[_0x50c4('0x36')](_0x6406d0['query']['fields']));_0x2a186a[_0x50c4('0x35')]=_0x2a186a['attributes']['length']?_0x2a186a[_0x50c4('0x35')]:_0x245f77[_0x50c4('0x34')];if(_0x6406d0[_0x50c4('0x31')][_0x50c4('0x3f')]){_0x2a186a[_0x50c4('0x40')]=[{'all':!![]}];}_0x2a186a=_[_0x50c4('0x3e')]({},_0x2a186a,_0x6406d0[_0x50c4('0x46')]);return db['CannedAnswer']['find'](_0x2a186a)['then'](handleEntityNotFound(_0x362d6d,null))[_0x50c4('0x21')](respondWithResult(_0x362d6d,null))[_0x50c4('0x43')](handleError(_0x362d6d,null));};exports[_0x50c4('0x47')]=function(_0x24cbb6,_0x28a717){if(_0x24cbb6[_0x50c4('0x48')]['id']){delete _0x24cbb6[_0x50c4('0x48')]['id'];}return db['CannedAnswer'][_0x50c4('0x49')]({'where':{'id':_0x24cbb6[_0x50c4('0x45')]['id']}})['then'](handleEntityNotFound(_0x28a717,null))[_0x50c4('0x21')](saveUpdates(_0x24cbb6['body'],null))[_0x50c4('0x21')](respondWithResult(_0x28a717,null))[_0x50c4('0x43')](handleError(_0x28a717,null));};exports[_0x50c4('0x20')]=function(_0x11255f,_0x21151b){return db[_0x50c4('0x2b')]['find']({'where':{'id':_0x11255f[_0x50c4('0x45')]['id']}})['then'](handleEntityNotFound(_0x21151b,null))[_0x50c4('0x21')](removeEntity(_0x21151b,null))['catch'](handleError(_0x21151b,null));};exports[_0x50c4('0x4a')]=function(_0x3bbde6,_0x520530){var _0x562e30={'key':_0x3bbde6[_0x50c4('0x48')][_0x50c4('0x2f')]};if(_0x3bbde6['body'][_0x50c4('0x4b')]){_0x562e30[_0x50c4('0x4b')]=_0x3bbde6[_0x50c4('0x48')]['MailAccountId'];}else if(_0x3bbde6[_0x50c4('0x48')][_0x50c4('0x4c')]){_0x562e30[_0x50c4('0x4c')]=_0x3bbde6[_0x50c4('0x48')][_0x50c4('0x4c')];}else if(_0x3bbde6[_0x50c4('0x48')][_0x50c4('0x4d')]){_0x562e30['OpenchannelAccountId']=_0x3bbde6[_0x50c4('0x48')][_0x50c4('0x4d')];}else if(_0x3bbde6[_0x50c4('0x48')][_0x50c4('0x4e')]){_0x562e30['ChatWebsiteId']=_0x3bbde6[_0x50c4('0x48')][_0x50c4('0x4e')];}return db[_0x50c4('0x2b')]['find']({'where':_0x562e30})[_0x50c4('0x21')](function(_0x35a814){if(_0x35a814){throw new db['Sequelize'][(_0x50c4('0x4f'))](_0x50c4('0x50'));}return db[_0x50c4('0x2b')][_0x50c4('0x4a')](_0x3bbde6[_0x50c4('0x48')]);})[_0x50c4('0x21')](function(_0x52a9ae){var _0x35fca6=_0x3bbde6['user'][_0x50c4('0x51')]({'plain':!![]});if(!_0x35fca6)throw new Error(_0x50c4('0x52'));if(_0x35fca6['role']===_0x50c4('0x53')){var _0x1769ee=_0x52a9ae[_0x50c4('0x51')]({'plain':!![]});return db[_0x50c4('0x54')][_0x50c4('0x49')]({'where':{'name':_0x50c4('0x22'),'userProfileId':_0x35fca6[_0x50c4('0x55')]},'raw':!![]})[_0x50c4('0x21')](function(_0x194d52){if(_0x194d52&&_0x194d52[_0x50c4('0x56')]===0x0){return db[_0x50c4('0x23')][_0x50c4('0x4a')]({'name':_0x1769ee[_0x50c4('0x27')],'resourceId':_0x1769ee['id'],'type':_0x194d52[_0x50c4('0x27')],'sectionId':_0x194d52['id']},{})['then'](function(){return _0x52a9ae;});}else{return _0x52a9ae;}})[_0x50c4('0x43')](function(_0x422531){logger[_0x50c4('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x422531);throw _0x422531;});}return _0x52a9ae;})['then'](respondWithResult(_0x520530,0xc9))[_0x50c4('0x43')](handleError(_0x520530,null));};