b954701457a928406921a471d0ce3f3eac0aa51c
[motion2.git] / server / api / attachment / attachment.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 _0x1900=['updatedAt','create','file','basename','filename','mimetype','download','join','root','server/files/attachments/','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','end','error','stack','name','send','Attachment','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','catch','show','params','keys','length','find','omit','createdAt','body'];(function(_0x3ea90f,_0xefd82d){var _0x310621=function(_0xf3da64){while(--_0xf3da64){_0x3ea90f['push'](_0x3ea90f['shift']());}};_0x310621(++_0xefd82d);}(_0x1900,0x16a));var _0x0190=function(_0x4fdc92,_0x4456ab){_0x4fdc92=_0x4fdc92-0x0;var _0x1417d3=_0x1900[_0x4fdc92];return _0x1417d3;};'use strict';var emlformat=require(_0x0190('0x0'));var rimraf=require(_0x0190('0x1'));var zipdir=require(_0x0190('0x2'));var jsonpatch=require(_0x0190('0x3'));var rp=require('request-promise');var moment=require(_0x0190('0x4'));var BPromise=require(_0x0190('0x5'));var Mustache=require(_0x0190('0x6'));var util=require(_0x0190('0x7'));var path=require('path');var sox=require(_0x0190('0x8'));var csv=require(_0x0190('0x9'));var ejs=require(_0x0190('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0190('0xb'));var squel=require(_0x0190('0xc'));var crypto=require(_0x0190('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x0190('0xe'));var toCsv=require(_0x0190('0x9'));var querystring=require(_0x0190('0xf'));var Papa=require(_0x0190('0x10'));var Redis=require(_0x0190('0x11'));var authService=require(_0x0190('0x12'));var qs=require(_0x0190('0x13'));var as=require(_0x0190('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0190('0x15'))('api');var utils=require(_0x0190('0x16'));var config=require(_0x0190('0x17'));var licenseUtil=require(_0x0190('0x18'));var db=require(_0x0190('0x19'))['db'];function respondWithStatusCode(_0x58ed23,_0x54e999){_0x54e999=_0x54e999||0xcc;return function(_0x589cde){if(_0x589cde){return _0x58ed23[_0x0190('0x1a')](_0x54e999);}return _0x58ed23[_0x0190('0x1b')](_0x54e999)['end']();};}function respondWithResult(_0x490071,_0x581321){_0x581321=_0x581321||0xc8;return function(_0x35fdf0){if(_0x35fdf0){return _0x490071[_0x0190('0x1b')](_0x581321)['json'](_0x35fdf0);}};}function respondWithFilteredResult(_0x5c47c6,_0x148c2){return function(_0x418179){if(_0x418179){var _0x2d5e80=typeof _0x148c2[_0x0190('0x1c')]===_0x0190('0x1d')&&typeof _0x148c2[_0x0190('0x1e')]===_0x0190('0x1d');var _0x5984a0=_0x418179[_0x0190('0x1f')];var _0x1a2404=_0x2d5e80?0x0:_0x148c2[_0x0190('0x1c')];var _0x111663=_0x2d5e80?_0x418179[_0x0190('0x1f')]:_0x148c2[_0x0190('0x1c')]+_0x148c2[_0x0190('0x1e')];var _0x242a5b;if(_0x111663>=_0x5984a0){_0x111663=_0x5984a0;_0x242a5b=0xc8;}else{_0x242a5b=0xce;}_0x5c47c6[_0x0190('0x1b')](_0x242a5b);return _0x5c47c6[_0x0190('0x20')]('Content-Range',_0x1a2404+'-'+_0x111663+'/'+_0x5984a0)['json'](_0x418179);}return null;};}function patchUpdates(_0x1d6846){return function(_0x586ee0){try{jsonpatch[_0x0190('0x21')](_0x586ee0,_0x1d6846,!![]);}catch(_0x51febe){return BPromise[_0x0190('0x22')](_0x51febe);}return _0x586ee0[_0x0190('0x23')]();};}function saveUpdates(_0x2094e6,_0x39b43d){return function(_0x209d77){if(_0x209d77){return _0x209d77[_0x0190('0x24')](_0x2094e6)[_0x0190('0x25')](function(_0x235666){return _0x235666;});}return null;};}function removeEntity(_0x57251f,_0x3c4a15){return function(_0x5f45a1){if(_0x5f45a1){return _0x5f45a1[_0x0190('0x26')]()[_0x0190('0x25')](function(){_0x57251f['status'](0xcc)[_0x0190('0x27')]();});}};}function handleEntityNotFound(_0x12d91c,_0x386bfa){return function(_0x3ec952){if(!_0x3ec952){_0x12d91c['sendStatus'](0x194);}return _0x3ec952;};}function handleError(_0x1d4bee,_0x582cbc){_0x582cbc=_0x582cbc||0x1f4;return function(_0x17ade9){logger[_0x0190('0x28')](_0x17ade9[_0x0190('0x29')]);if(_0x17ade9[_0x0190('0x2a')]){delete _0x17ade9[_0x0190('0x2a')];}_0x1d4bee[_0x0190('0x1b')](_0x582cbc)[_0x0190('0x2b')](_0x17ade9);};}exports['index']=function(_0x2f1e7a,_0x1817b9){var _0x3cc1f5={},_0x4ca5d6={},_0x250d8b={'count':0x0,'rows':[]};var _0xb1738=_['map'](db[_0x0190('0x2c')][_0x0190('0x2d')],function(_0x1b26a6){return{'name':_0x1b26a6[_0x0190('0x2e')],'type':_0x1b26a6[_0x0190('0x2f')][_0x0190('0x30')]};});_0x4ca5d6[_0x0190('0x31')]=_[_0x0190('0x32')](_0xb1738,'name');_0x4ca5d6[_0x0190('0x33')]=_['keys'](_0x2f1e7a['query']);_0x4ca5d6[_0x0190('0x34')]=_[_0x0190('0x35')](_0x4ca5d6[_0x0190('0x31')],_0x4ca5d6[_0x0190('0x33')]);_0x3cc1f5[_0x0190('0x36')]=_['intersection'](_0x4ca5d6['model'],qs[_0x0190('0x37')](_0x2f1e7a[_0x0190('0x33')][_0x0190('0x37')]));_0x3cc1f5['attributes']=_0x3cc1f5['attributes']['length']?_0x3cc1f5[_0x0190('0x36')]:_0x4ca5d6['model'];if(!_0x2f1e7a[_0x0190('0x33')][_0x0190('0x38')](_0x0190('0x39'))){_0x3cc1f5[_0x0190('0x1e')]=qs['limit'](_0x2f1e7a[_0x0190('0x33')][_0x0190('0x1e')]);_0x3cc1f5['offset']=qs[_0x0190('0x1c')](_0x2f1e7a['query'][_0x0190('0x1c')]);}_0x3cc1f5[_0x0190('0x3a')]=qs[_0x0190('0x3b')](_0x2f1e7a[_0x0190('0x33')]['sort']);_0x3cc1f5[_0x0190('0x3c')]=qs[_0x0190('0x34')](_[_0x0190('0x3d')](_0x2f1e7a['query'],_0x4ca5d6['filters']),_0xb1738);if(_0x2f1e7a['query']['filter']){_0x3cc1f5[_0x0190('0x3c')]=_['merge'](_0x3cc1f5[_0x0190('0x3c')],{'$or':_[_0x0190('0x32')](_0xb1738,function(_0x26976a){if(_0x26976a[_0x0190('0x2f')]!==_0x0190('0x3e')){var _0x51ded9={};_0x51ded9[_0x26976a[_0x0190('0x2a')]]={'$like':'%'+_0x2f1e7a[_0x0190('0x33')][_0x0190('0x3f')]+'%'};return _0x51ded9;}})});}_0x3cc1f5=_[_0x0190('0x40')]({},_0x3cc1f5,_0x2f1e7a[_0x0190('0x41')]);var _0xedf960={'where':_0x3cc1f5['where']};return db['Attachment'][_0x0190('0x1f')](_0xedf960)['then'](function(_0x254a22){_0x250d8b['count']=_0x254a22;if(_0x2f1e7a[_0x0190('0x33')][_0x0190('0x42')]){_0x3cc1f5[_0x0190('0x43')]=[{'all':!![]}];}return db[_0x0190('0x2c')][_0x0190('0x44')](_0x3cc1f5);})[_0x0190('0x25')](function(_0x2de8ce){_0x250d8b['rows']=_0x2de8ce;return _0x250d8b;})[_0x0190('0x25')](respondWithFilteredResult(_0x1817b9,_0x3cc1f5))[_0x0190('0x45')](handleError(_0x1817b9,null));};exports[_0x0190('0x46')]=function(_0x485264,_0xaaa716){var _0x9a5b69={'raw':!![],'where':{'id':_0x485264[_0x0190('0x47')]['id']}},_0x453742={};_0x453742['model']=_[_0x0190('0x48')](db[_0x0190('0x2c')][_0x0190('0x2d')]);_0x453742[_0x0190('0x33')]=_['keys'](_0x485264[_0x0190('0x33')]);_0x453742['filters']=_[_0x0190('0x35')](_0x453742[_0x0190('0x31')],_0x453742[_0x0190('0x33')]);_0x9a5b69[_0x0190('0x36')]=_[_0x0190('0x35')](_0x453742[_0x0190('0x31')],qs[_0x0190('0x37')](_0x485264['query']['fields']));_0x9a5b69['attributes']=_0x9a5b69['attributes'][_0x0190('0x49')]?_0x9a5b69[_0x0190('0x36')]:_0x453742[_0x0190('0x31')];if(_0x485264[_0x0190('0x33')][_0x0190('0x42')]){_0x9a5b69[_0x0190('0x43')]=[{'all':!![]}];}_0x9a5b69=_['merge']({},_0x9a5b69,_0x485264[_0x0190('0x41')]);return db[_0x0190('0x2c')][_0x0190('0x4a')](_0x9a5b69)['then'](handleEntityNotFound(_0xaaa716,null))[_0x0190('0x25')](respondWithResult(_0xaaa716,null))[_0x0190('0x45')](handleError(_0xaaa716,null));};exports['clone']=function(_0x161bf6,_0x16ecdb){var _0x19fb55={'where':{'id':_0x161bf6[_0x0190('0x47')]['id']}},_0x59154a={};_0x59154a[_0x0190('0x31')]=_[_0x0190('0x48')](db[_0x0190('0x2c')][_0x0190('0x2d')]);_0x19fb55[_0x0190('0x36')]=_[_0x0190('0x35')](_0x59154a[_0x0190('0x31')],qs[_0x0190('0x37')](_0x161bf6['query']['fields']));_0x19fb55[_0x0190('0x36')]=_0x19fb55[_0x0190('0x36')][_0x0190('0x49')]?_0x19fb55['attributes']:_0x59154a[_0x0190('0x31')];if(_0x161bf6[_0x0190('0x33')][_0x0190('0x42')]){_0x19fb55[_0x0190('0x43')]=[{'all':!![]}];}_0x19fb55=_[_0x0190('0x40')]({},_0x19fb55,_0x161bf6[_0x0190('0x41')]);return db[_0x0190('0x2c')]['find'](_0x19fb55)[_0x0190('0x25')](handleEntityNotFound(_0x16ecdb,null))[_0x0190('0x25')](function(_0x41652f){if(_0x41652f){var _0x24c7f5=_0x41652f['get']({'plain':!![]});_0x24c7f5=qs[_0x0190('0x4b')](_0x24c7f5,['id',_0x0190('0x4c'),'updatedAt']);_0x161bf6[_0x0190('0x4d')]=_['omit'](_0x161bf6[_0x0190('0x4d')],['id',_0x0190('0x4c'),_0x0190('0x4e')]);return db[_0x0190('0x2c')][_0x0190('0x4f')](_[_0x0190('0x40')](_0x24c7f5,_0x161bf6[_0x0190('0x4d')]),{'include':_0x161bf6['query']['includeAll']?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x16ecdb,0xc9))[_0x0190('0x45')](handleError(_0x16ecdb,null));};exports[_0x0190('0x24')]=function(_0x2a52a7,_0x48e789){if(_0x2a52a7[_0x0190('0x4d')]['id']){delete _0x2a52a7[_0x0190('0x4d')]['id'];}return db[_0x0190('0x2c')][_0x0190('0x4a')]({'where':{'id':_0x2a52a7['params']['id']}})[_0x0190('0x25')](handleEntityNotFound(_0x48e789,null))[_0x0190('0x25')](saveUpdates(_0x2a52a7['body'],null))[_0x0190('0x25')](respondWithResult(_0x48e789,null))[_0x0190('0x45')](handleError(_0x48e789,null));};exports['destroy']=function(_0x57af85,_0x5ed499){return db[_0x0190('0x2c')][_0x0190('0x4a')]({'where':{'id':_0x57af85['params']['id']}})[_0x0190('0x25')](handleEntityNotFound(_0x5ed499,null))['then'](removeEntity(_0x5ed499,null))[_0x0190('0x45')](handleError(_0x5ed499,null));};exports['create']=function(_0x315ec3,_0x107d1e,_0x231a99){_0x315ec3[_0x0190('0x4d')][_0x0190('0x2a')]=_0x315ec3[_0x0190('0x50')]['originalname'];_0x315ec3['body'][_0x0190('0x51')]=_0x315ec3[_0x0190('0x50')][_0x0190('0x52')];_0x315ec3['body'][_0x0190('0x2f')]=_0x315ec3[_0x0190('0x50')][_0x0190('0x53')];return db['Attachment'][_0x0190('0x4f')](_0x315ec3[_0x0190('0x4d')])['then'](respondWithResult(_0x107d1e,0xc9))[_0x0190('0x45')](handleError(_0x107d1e,null));};exports[_0x0190('0x54')]=function(_0x386611,_0x4523a3,_0x17b50a){return db[_0x0190('0x2c')]['findOne']({'where':{'id':_0x386611[_0x0190('0x47')]['id']},'raw':!![]})[_0x0190('0x25')](handleEntityNotFound(_0x4523a3,null))[_0x0190('0x25')](function(_0x1f04d4){if(_0x1f04d4){var _0x46f7d9=_0x1f04d4['ChatOfflineMessageId']!==null;var _0xc5246f=path[_0x0190('0x55')](config[_0x0190('0x56')],_0x0190('0x57'));if(_0x46f7d9){_0xc5246f=path[_0x0190('0x55')](_0xc5246f,'offline-chat/');}var _0x5b8de0=path[_0x0190('0x55')](_0xc5246f,_0x1f04d4[_0x0190('0x51')]);return _0x4523a3[_0x0190('0x54')](_0x5b8de0);}})[_0x0190('0x45')](handleError(_0x4523a3,null));};