1b901f961c0a68459f3812c2d4704abfbfe5f4bc
[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 _0x1135=['sort','where','pick','map','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','length','find','clone','get','omit','createdAt','updatedAt','body','create','originalname','file','filename','mimetype','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','basename','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','Attachment','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order'];(function(_0x4d2416,_0xb126fb){var _0x327795=function(_0x3a9f72){while(--_0x3a9f72){_0x4d2416['push'](_0x4d2416['shift']());}};_0x327795(++_0xb126fb);}(_0x1135,0x7a));var _0x5113=function(_0xcd55c4,_0x2c6f69){_0xcd55c4=_0xcd55c4-0x0;var _0x3b913d=_0x1135[_0xcd55c4];return _0x3b913d;};'use strict';var emlformat=require(_0x5113('0x0'));var rimraf=require(_0x5113('0x1'));var zipdir=require(_0x5113('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5113('0x3'));var BPromise=require(_0x5113('0x4'));var Mustache=require(_0x5113('0x5'));var util=require(_0x5113('0x6'));var path=require(_0x5113('0x7'));var sox=require(_0x5113('0x8'));var csv=require('to-csv');var ejs=require(_0x5113('0x9'));var fs=require('fs');var fs_extra=require(_0x5113('0xa'));var _=require(_0x5113('0xb'));var squel=require('squel');var crypto=require(_0x5113('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x5113('0xd'));var toCsv=require(_0x5113('0xe'));var querystring=require(_0x5113('0xf'));var Papa=require(_0x5113('0x10'));var Redis=require(_0x5113('0x11'));var authService=require(_0x5113('0x12'));var qs=require(_0x5113('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5113('0x14'));var logger=require(_0x5113('0x15'))(_0x5113('0x16'));var utils=require(_0x5113('0x17'));var config=require(_0x5113('0x18'));var licenseUtil=require(_0x5113('0x19'));var db=require(_0x5113('0x1a'))['db'];function respondWithStatusCode(_0x41acb1,_0x4816b5){_0x4816b5=_0x4816b5||0xcc;return function(_0x407b1c){if(_0x407b1c){return _0x41acb1[_0x5113('0x1b')](_0x4816b5);}return _0x41acb1[_0x5113('0x1c')](_0x4816b5)[_0x5113('0x1d')]();};}function respondWithResult(_0x114e25,_0x529920){_0x529920=_0x529920||0xc8;return function(_0x238d71){if(_0x238d71){return _0x114e25[_0x5113('0x1c')](_0x529920)[_0x5113('0x1e')](_0x238d71);}};}function respondWithFilteredResult(_0x237841,_0x16db3c){return function(_0x142c4e){if(_0x142c4e){var _0x1fcb9f=typeof _0x16db3c[_0x5113('0x1f')]==='undefined'&&typeof _0x16db3c[_0x5113('0x20')]==='undefined';var _0x1fa4c1=_0x142c4e[_0x5113('0x21')];var _0x4b3486=_0x1fcb9f?0x0:_0x16db3c[_0x5113('0x1f')];var _0x5d45c0=_0x1fcb9f?_0x142c4e[_0x5113('0x21')]:_0x16db3c[_0x5113('0x1f')]+_0x16db3c[_0x5113('0x20')];var _0x592f50;if(_0x5d45c0>=_0x1fa4c1){_0x5d45c0=_0x1fa4c1;_0x592f50=0xc8;}else{_0x592f50=0xce;}_0x237841[_0x5113('0x1c')](_0x592f50);return _0x237841['set'](_0x5113('0x22'),_0x4b3486+'-'+_0x5d45c0+'/'+_0x1fa4c1)['json'](_0x142c4e);}return null;};}function patchUpdates(_0x5dedbe){return function(_0x30ac59){try{jsonpatch[_0x5113('0x23')](_0x30ac59,_0x5dedbe,!![]);}catch(_0x3aa165){return BPromise[_0x5113('0x24')](_0x3aa165);}return _0x30ac59[_0x5113('0x25')]();};}function saveUpdates(_0x303827,_0x1ef1b2){return function(_0xc44ff8){if(_0xc44ff8){return _0xc44ff8[_0x5113('0x26')](_0x303827)[_0x5113('0x27')](function(_0x59d455){return _0x59d455;});}return null;};}function removeEntity(_0x4be0c1,_0x4a8890){return function(_0x83ce17){if(_0x83ce17){return _0x83ce17[_0x5113('0x28')]()[_0x5113('0x27')](function(){_0x4be0c1[_0x5113('0x1c')](0xcc)[_0x5113('0x1d')]();});}};}function handleEntityNotFound(_0x4ad9d9,_0x20b96b){return function(_0x535037){if(!_0x535037){_0x4ad9d9['sendStatus'](0x194);}return _0x535037;};}function handleError(_0x2e5904,_0x7fc8cb){_0x7fc8cb=_0x7fc8cb||0x1f4;return function(_0x5b2fe0){logger['error'](_0x5b2fe0[_0x5113('0x29')]);if(_0x5b2fe0[_0x5113('0x2a')]){delete _0x5b2fe0[_0x5113('0x2a')];}_0x2e5904[_0x5113('0x1c')](_0x7fc8cb)[_0x5113('0x2b')](_0x5b2fe0);};}exports['index']=function(_0x2dc10b,_0x3a150a){var _0x4a8815={},_0x3824ce={},_0x3785c9={'count':0x0,'rows':[]};var _0x292d3a=_['map'](db[_0x5113('0x2c')][_0x5113('0x2d')],function(_0x84a884){return{'name':_0x84a884[_0x5113('0x2e')],'type':_0x84a884[_0x5113('0x2f')][_0x5113('0x30')]};});_0x3824ce[_0x5113('0x31')]=_['map'](_0x292d3a,'name');_0x3824ce[_0x5113('0x32')]=_[_0x5113('0x33')](_0x2dc10b[_0x5113('0x32')]);_0x3824ce[_0x5113('0x34')]=_[_0x5113('0x35')](_0x3824ce[_0x5113('0x31')],_0x3824ce[_0x5113('0x32')]);_0x4a8815[_0x5113('0x36')]=_[_0x5113('0x35')](_0x3824ce[_0x5113('0x31')],qs[_0x5113('0x37')](_0x2dc10b[_0x5113('0x32')][_0x5113('0x37')]));_0x4a8815[_0x5113('0x36')]=_0x4a8815[_0x5113('0x36')]['length']?_0x4a8815[_0x5113('0x36')]:_0x3824ce['model'];if(!_0x2dc10b[_0x5113('0x32')][_0x5113('0x38')]('nolimit')){_0x4a8815[_0x5113('0x20')]=qs[_0x5113('0x20')](_0x2dc10b[_0x5113('0x32')][_0x5113('0x20')]);_0x4a8815['offset']=qs['offset'](_0x2dc10b['query']['offset']);}_0x4a8815[_0x5113('0x39')]=qs[_0x5113('0x3a')](_0x2dc10b['query'][_0x5113('0x3a')]);_0x4a8815[_0x5113('0x3b')]=qs[_0x5113('0x34')](_[_0x5113('0x3c')](_0x2dc10b[_0x5113('0x32')],_0x3824ce[_0x5113('0x34')]),_0x292d3a);if(_0x2dc10b['query']['filter']){_0x4a8815[_0x5113('0x3b')]=_['merge'](_0x4a8815['where'],{'$or':_[_0x5113('0x3d')](_0x292d3a,function(_0x591028){if(_0x591028[_0x5113('0x2f')]!==_0x5113('0x3e')){var _0x5c8782={};_0x5c8782[_0x591028[_0x5113('0x2a')]]={'$like':'%'+_0x2dc10b[_0x5113('0x32')]['filter']+'%'};return _0x5c8782;}})});}_0x4a8815=_[_0x5113('0x3f')]({},_0x4a8815,_0x2dc10b[_0x5113('0x40')]);var _0x205d92={'where':_0x4a8815[_0x5113('0x3b')]};return db['Attachment'][_0x5113('0x21')](_0x205d92)['then'](function(_0x4263f2){_0x3785c9['count']=_0x4263f2;if(_0x2dc10b[_0x5113('0x32')][_0x5113('0x41')]){_0x4a8815[_0x5113('0x42')]=[{'all':!![]}];}return db[_0x5113('0x2c')][_0x5113('0x43')](_0x4a8815);})[_0x5113('0x27')](function(_0xa0f9f1){_0x3785c9[_0x5113('0x44')]=_0xa0f9f1;return _0x3785c9;})[_0x5113('0x27')](respondWithFilteredResult(_0x3a150a,_0x4a8815))[_0x5113('0x45')](handleError(_0x3a150a,null));};exports['show']=function(_0x3359ed,_0x1af345){var _0x12a073={'raw':!![],'where':{'id':_0x3359ed[_0x5113('0x46')]['id']}},_0x2881e0={};_0x2881e0[_0x5113('0x31')]=_[_0x5113('0x33')](db[_0x5113('0x2c')][_0x5113('0x2d')]);_0x2881e0[_0x5113('0x32')]=_[_0x5113('0x33')](_0x3359ed[_0x5113('0x32')]);_0x2881e0[_0x5113('0x34')]=_[_0x5113('0x35')](_0x2881e0[_0x5113('0x31')],_0x2881e0[_0x5113('0x32')]);_0x12a073['attributes']=_[_0x5113('0x35')](_0x2881e0[_0x5113('0x31')],qs[_0x5113('0x37')](_0x3359ed[_0x5113('0x32')][_0x5113('0x37')]));_0x12a073[_0x5113('0x36')]=_0x12a073[_0x5113('0x36')][_0x5113('0x47')]?_0x12a073[_0x5113('0x36')]:_0x2881e0[_0x5113('0x31')];if(_0x3359ed[_0x5113('0x32')]['includeAll']){_0x12a073[_0x5113('0x42')]=[{'all':!![]}];}_0x12a073=_[_0x5113('0x3f')]({},_0x12a073,_0x3359ed[_0x5113('0x40')]);return db[_0x5113('0x2c')][_0x5113('0x48')](_0x12a073)['then'](handleEntityNotFound(_0x1af345,null))[_0x5113('0x27')](respondWithResult(_0x1af345,null))[_0x5113('0x45')](handleError(_0x1af345,null));};exports[_0x5113('0x49')]=function(_0x24a127,_0x17d547){var _0x57632f={'where':{'id':_0x24a127[_0x5113('0x46')]['id']}},_0x2fd70f={};_0x2fd70f['model']=_[_0x5113('0x33')](db[_0x5113('0x2c')][_0x5113('0x2d')]);_0x57632f['attributes']=_['intersection'](_0x2fd70f[_0x5113('0x31')],qs[_0x5113('0x37')](_0x24a127[_0x5113('0x32')][_0x5113('0x37')]));_0x57632f['attributes']=_0x57632f[_0x5113('0x36')][_0x5113('0x47')]?_0x57632f[_0x5113('0x36')]:_0x2fd70f['model'];if(_0x24a127[_0x5113('0x32')][_0x5113('0x41')]){_0x57632f[_0x5113('0x42')]=[{'all':!![]}];}_0x57632f=_[_0x5113('0x3f')]({},_0x57632f,_0x24a127[_0x5113('0x40')]);return db[_0x5113('0x2c')][_0x5113('0x48')](_0x57632f)[_0x5113('0x27')](handleEntityNotFound(_0x17d547,null))[_0x5113('0x27')](function(_0x4e87a5){if(_0x4e87a5){var _0x164797=_0x4e87a5[_0x5113('0x4a')]({'plain':!![]});_0x164797=qs[_0x5113('0x4b')](_0x164797,['id',_0x5113('0x4c'),_0x5113('0x4d')]);_0x24a127[_0x5113('0x4e')]=_[_0x5113('0x4b')](_0x24a127[_0x5113('0x4e')],['id',_0x5113('0x4c'),'updatedAt']);return db[_0x5113('0x2c')]['create'](_[_0x5113('0x3f')](_0x164797,_0x24a127[_0x5113('0x4e')]),{'include':_0x24a127[_0x5113('0x32')][_0x5113('0x41')]?[{'all':!![]}]:undefined});}})[_0x5113('0x27')](respondWithResult(_0x17d547,0xc9))[_0x5113('0x45')](handleError(_0x17d547,null));};exports[_0x5113('0x26')]=function(_0x67a043,_0x315422){if(_0x67a043[_0x5113('0x4e')]['id']){delete _0x67a043[_0x5113('0x4e')]['id'];}return db[_0x5113('0x2c')][_0x5113('0x48')]({'where':{'id':_0x67a043['params']['id']}})[_0x5113('0x27')](handleEntityNotFound(_0x315422,null))[_0x5113('0x27')](saveUpdates(_0x67a043[_0x5113('0x4e')],null))[_0x5113('0x27')](respondWithResult(_0x315422,null))['catch'](handleError(_0x315422,null));};exports[_0x5113('0x28')]=function(_0x5525c5,_0x4c2083){return db['Attachment'][_0x5113('0x48')]({'where':{'id':_0x5525c5[_0x5113('0x46')]['id']}})[_0x5113('0x27')](handleEntityNotFound(_0x4c2083,null))['then'](removeEntity(_0x4c2083,null))['catch'](handleError(_0x4c2083,null));};exports[_0x5113('0x4f')]=function(_0x2825ff,_0x1eac89,_0x14dc79){_0x2825ff[_0x5113('0x4e')]['name']=_0x2825ff['file'][_0x5113('0x50')];_0x2825ff[_0x5113('0x4e')]['basename']=_0x2825ff[_0x5113('0x51')][_0x5113('0x52')];_0x2825ff[_0x5113('0x4e')][_0x5113('0x2f')]=_0x2825ff['file'][_0x5113('0x53')];return db[_0x5113('0x2c')][_0x5113('0x4f')](_0x2825ff[_0x5113('0x4e')])[_0x5113('0x27')](respondWithResult(_0x1eac89,0xc9))['catch'](handleError(_0x1eac89,null));};exports['download']=function(_0xa8dd04,_0x59b8a9,_0x3e2a28){return db[_0x5113('0x2c')]['findOne']({'where':{'id':_0xa8dd04[_0x5113('0x46')]['id']},'raw':!![]})[_0x5113('0x27')](handleEntityNotFound(_0x59b8a9,null))[_0x5113('0x27')](function(_0x56f5ba){if(_0x56f5ba){var _0x5f2b89=_0x56f5ba[_0x5113('0x54')]!==null;var _0x51cb9d=path[_0x5113('0x55')](config[_0x5113('0x56')],_0x5113('0x57'));if(_0x5f2b89){_0x51cb9d=path[_0x5113('0x55')](_0x51cb9d,_0x5113('0x58'));}var _0x5ddca8=path['join'](_0x51cb9d,_0x56f5ba[_0x5113('0x59')]);return _0x59b8a9['download'](_0x5ddca8);}})[_0x5113('0x45')](handleError(_0x59b8a9,null));};