49e88247b25f707647331aefc766a65a0a0f1afb
[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 _0x6c36=['mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','then','destroy','error','stack','name','send','index','map','Attachment','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','type','VIRTUAL','includeAll','findAll','rows','catch','show','options','find','clone','include','get','omit','createdAt','updatedAt','body','create','update','params','basename','file','filename','mimetype','download','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','eml-format','zip-dir','request-promise','moment','bluebird'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0x6c36,0x1cc));var _0x66c3=function(_0x180e19,_0x2bab45){_0x180e19=_0x180e19-0x0;var _0x5c2290=_0x6c36[_0x180e19];return _0x5c2290;};'use strict';var emlformat=require(_0x66c3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x66c3('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x66c3('0x2'));var moment=require(_0x66c3('0x3'));var BPromise=require(_0x66c3('0x4'));var Mustache=require(_0x66c3('0x5'));var util=require(_0x66c3('0x6'));var path=require(_0x66c3('0x7'));var sox=require(_0x66c3('0x8'));var csv=require(_0x66c3('0x9'));var ejs=require(_0x66c3('0xa'));var fs=require('fs');var fs_extra=require(_0x66c3('0xb'));var _=require('lodash');var squel=require(_0x66c3('0xc'));var crypto=require(_0x66c3('0xd'));var jsforce=require(_0x66c3('0xe'));var deskjs=require(_0x66c3('0xf'));var toCsv=require(_0x66c3('0x9'));var querystring=require(_0x66c3('0x10'));var Papa=require('papaparse');var Redis=require(_0x66c3('0x11'));var authService=require(_0x66c3('0x12'));var qs=require(_0x66c3('0x13'));var as=require(_0x66c3('0x14'));var hardwareService=require(_0x66c3('0x15'));var logger=require(_0x66c3('0x16'))(_0x66c3('0x17'));var utils=require(_0x66c3('0x18'));var config=require(_0x66c3('0x19'));var licenseUtil=require(_0x66c3('0x1a'));var db=require(_0x66c3('0x1b'))['db'];function respondWithStatusCode(_0x39d2e2,_0x59b9d9){_0x59b9d9=_0x59b9d9||0xcc;return function(_0x3eed67){if(_0x3eed67){return _0x39d2e2[_0x66c3('0x1c')](_0x59b9d9);}return _0x39d2e2[_0x66c3('0x1d')](_0x59b9d9)[_0x66c3('0x1e')]();};}function respondWithResult(_0x7c4dfc,_0x1028ad){_0x1028ad=_0x1028ad||0xc8;return function(_0x423adb){if(_0x423adb){return _0x7c4dfc[_0x66c3('0x1d')](_0x1028ad)[_0x66c3('0x1f')](_0x423adb);}};}function respondWithFilteredResult(_0x415283,_0x5af781){return function(_0x1717b0){if(_0x1717b0){var _0x3d2ac6=typeof _0x5af781[_0x66c3('0x20')]==='undefined'&&typeof _0x5af781[_0x66c3('0x21')]===_0x66c3('0x22');var _0x3d8909=_0x1717b0['count'];var _0x5d76d6=_0x3d2ac6?0x0:_0x5af781[_0x66c3('0x20')];var _0x3ec336=_0x3d2ac6?_0x1717b0[_0x66c3('0x23')]:_0x5af781[_0x66c3('0x20')]+_0x5af781[_0x66c3('0x21')];var _0x278285;if(_0x3ec336>=_0x3d8909){_0x3ec336=_0x3d8909;_0x278285=0xc8;}else{_0x278285=0xce;}_0x415283[_0x66c3('0x1d')](_0x278285);return _0x415283[_0x66c3('0x24')](_0x66c3('0x25'),_0x5d76d6+'-'+_0x3ec336+'/'+_0x3d8909)[_0x66c3('0x1f')](_0x1717b0);}return null;};}function patchUpdates(_0x137fbb){return function(_0x38e9e4){try{jsonpatch[_0x66c3('0x26')](_0x38e9e4,_0x137fbb,!![]);}catch(_0x2eff5d){return BPromise[_0x66c3('0x27')](_0x2eff5d);}return _0x38e9e4['save']();};}function saveUpdates(_0x445deb,_0x1f68d9){return function(_0x2257a3){if(_0x2257a3){return _0x2257a3['update'](_0x445deb)[_0x66c3('0x28')](function(_0x309409){return _0x309409;});}return null;};}function removeEntity(_0x10f4b5,_0x46ce63){return function(_0x27beb9){if(_0x27beb9){return _0x27beb9[_0x66c3('0x29')]()[_0x66c3('0x28')](function(){_0x10f4b5['status'](0xcc)[_0x66c3('0x1e')]();});}};}function handleEntityNotFound(_0x25c565,_0x3c4562){return function(_0x5c0cf1){if(!_0x5c0cf1){_0x25c565[_0x66c3('0x1c')](0x194);}return _0x5c0cf1;};}function handleError(_0x31d279,_0x2cede0){_0x2cede0=_0x2cede0||0x1f4;return function(_0x459a0a){logger[_0x66c3('0x2a')](_0x459a0a[_0x66c3('0x2b')]);if(_0x459a0a[_0x66c3('0x2c')]){delete _0x459a0a[_0x66c3('0x2c')];}_0x31d279[_0x66c3('0x1d')](_0x2cede0)[_0x66c3('0x2d')](_0x459a0a);};}exports[_0x66c3('0x2e')]=function(_0x2a6829,_0x4a2ff2){var _0x387682={},_0x348ad4={},_0x275303={'count':0x0,'rows':[]};var _0x518e76=_[_0x66c3('0x2f')](db[_0x66c3('0x30')][_0x66c3('0x31')],function(_0x401209){return{'name':_0x401209['fieldName'],'type':_0x401209['type']['key']};});_0x348ad4[_0x66c3('0x32')]=_[_0x66c3('0x2f')](_0x518e76,_0x66c3('0x2c'));_0x348ad4[_0x66c3('0x33')]=_[_0x66c3('0x34')](_0x2a6829[_0x66c3('0x33')]);_0x348ad4[_0x66c3('0x35')]=_[_0x66c3('0x36')](_0x348ad4[_0x66c3('0x32')],_0x348ad4[_0x66c3('0x33')]);_0x387682[_0x66c3('0x37')]=_[_0x66c3('0x36')](_0x348ad4['model'],qs[_0x66c3('0x38')](_0x2a6829[_0x66c3('0x33')][_0x66c3('0x38')]));_0x387682[_0x66c3('0x37')]=_0x387682['attributes'][_0x66c3('0x39')]?_0x387682[_0x66c3('0x37')]:_0x348ad4[_0x66c3('0x32')];if(!_0x2a6829['query'][_0x66c3('0x3a')]('nolimit')){_0x387682[_0x66c3('0x21')]=qs[_0x66c3('0x21')](_0x2a6829[_0x66c3('0x33')][_0x66c3('0x21')]);_0x387682[_0x66c3('0x20')]=qs['offset'](_0x2a6829['query']['offset']);}_0x387682[_0x66c3('0x3b')]=qs[_0x66c3('0x3c')](_0x2a6829['query']['sort']);_0x387682[_0x66c3('0x3d')]=qs[_0x66c3('0x35')](_[_0x66c3('0x3e')](_0x2a6829[_0x66c3('0x33')],_0x348ad4['filters']),_0x518e76);if(_0x2a6829['query']['filter']){_0x387682[_0x66c3('0x3d')]=_[_0x66c3('0x3f')](_0x387682[_0x66c3('0x3d')],{'$or':_[_0x66c3('0x2f')](_0x518e76,function(_0x1aaf4a){if(_0x1aaf4a[_0x66c3('0x40')]!==_0x66c3('0x41')){var _0x111629={};_0x111629[_0x1aaf4a[_0x66c3('0x2c')]]={'$like':'%'+_0x2a6829[_0x66c3('0x33')]['filter']+'%'};return _0x111629;}})});}_0x387682=_[_0x66c3('0x3f')]({},_0x387682,_0x2a6829['options']);var _0x325e2d={'where':_0x387682[_0x66c3('0x3d')]};return db['Attachment'][_0x66c3('0x23')](_0x325e2d)[_0x66c3('0x28')](function(_0x1598ff){_0x275303['count']=_0x1598ff;if(_0x2a6829[_0x66c3('0x33')][_0x66c3('0x42')]){_0x387682['include']=[{'all':!![]}];}return db[_0x66c3('0x30')][_0x66c3('0x43')](_0x387682);})['then'](function(_0x3d012b){_0x275303[_0x66c3('0x44')]=_0x3d012b;return _0x275303;})[_0x66c3('0x28')](respondWithFilteredResult(_0x4a2ff2,_0x387682))[_0x66c3('0x45')](handleError(_0x4a2ff2,null));};exports[_0x66c3('0x46')]=function(_0x4e78d2,_0x1c2f07){var _0x52be8d={'raw':!![],'where':{'id':_0x4e78d2['params']['id']}},_0x2ea31d={};_0x2ea31d[_0x66c3('0x32')]=_[_0x66c3('0x34')](db[_0x66c3('0x30')][_0x66c3('0x31')]);_0x2ea31d[_0x66c3('0x33')]=_[_0x66c3('0x34')](_0x4e78d2[_0x66c3('0x33')]);_0x2ea31d[_0x66c3('0x35')]=_[_0x66c3('0x36')](_0x2ea31d[_0x66c3('0x32')],_0x2ea31d[_0x66c3('0x33')]);_0x52be8d[_0x66c3('0x37')]=_[_0x66c3('0x36')](_0x2ea31d['model'],qs[_0x66c3('0x38')](_0x4e78d2['query'][_0x66c3('0x38')]));_0x52be8d[_0x66c3('0x37')]=_0x52be8d['attributes']['length']?_0x52be8d[_0x66c3('0x37')]:_0x2ea31d[_0x66c3('0x32')];if(_0x4e78d2[_0x66c3('0x33')][_0x66c3('0x42')]){_0x52be8d['include']=[{'all':!![]}];}_0x52be8d=_[_0x66c3('0x3f')]({},_0x52be8d,_0x4e78d2[_0x66c3('0x47')]);return db[_0x66c3('0x30')][_0x66c3('0x48')](_0x52be8d)[_0x66c3('0x28')](handleEntityNotFound(_0x1c2f07,null))[_0x66c3('0x28')](respondWithResult(_0x1c2f07,null))[_0x66c3('0x45')](handleError(_0x1c2f07,null));};exports[_0x66c3('0x49')]=function(_0x5daeaf,_0x654881){var _0x5e749f={'where':{'id':_0x5daeaf['params']['id']}},_0x48eef2={};_0x48eef2[_0x66c3('0x32')]=_['keys'](db['Attachment'][_0x66c3('0x31')]);_0x5e749f['attributes']=_['intersection'](_0x48eef2['model'],qs[_0x66c3('0x38')](_0x5daeaf[_0x66c3('0x33')][_0x66c3('0x38')]));_0x5e749f[_0x66c3('0x37')]=_0x5e749f[_0x66c3('0x37')][_0x66c3('0x39')]?_0x5e749f[_0x66c3('0x37')]:_0x48eef2[_0x66c3('0x32')];if(_0x5daeaf[_0x66c3('0x33')][_0x66c3('0x42')]){_0x5e749f[_0x66c3('0x4a')]=[{'all':!![]}];}_0x5e749f=_[_0x66c3('0x3f')]({},_0x5e749f,_0x5daeaf[_0x66c3('0x47')]);return db[_0x66c3('0x30')][_0x66c3('0x48')](_0x5e749f)[_0x66c3('0x28')](handleEntityNotFound(_0x654881,null))[_0x66c3('0x28')](function(_0x52cda8){if(_0x52cda8){var _0x31bbe2=_0x52cda8[_0x66c3('0x4b')]({'plain':!![]});_0x31bbe2=qs[_0x66c3('0x4c')](_0x31bbe2,['id',_0x66c3('0x4d'),_0x66c3('0x4e')]);_0x5daeaf[_0x66c3('0x4f')]=_[_0x66c3('0x4c')](_0x5daeaf[_0x66c3('0x4f')],['id',_0x66c3('0x4d'),_0x66c3('0x4e')]);return db[_0x66c3('0x30')][_0x66c3('0x50')](_[_0x66c3('0x3f')](_0x31bbe2,_0x5daeaf[_0x66c3('0x4f')]),{'include':_0x5daeaf[_0x66c3('0x33')]['includeAll']?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x654881,0xc9))[_0x66c3('0x45')](handleError(_0x654881,null));};exports[_0x66c3('0x51')]=function(_0x519b56,_0x46f4cb){if(_0x519b56[_0x66c3('0x4f')]['id']){delete _0x519b56[_0x66c3('0x4f')]['id'];}return db[_0x66c3('0x30')][_0x66c3('0x48')]({'where':{'id':_0x519b56[_0x66c3('0x52')]['id']}})[_0x66c3('0x28')](handleEntityNotFound(_0x46f4cb,null))[_0x66c3('0x28')](saveUpdates(_0x519b56[_0x66c3('0x4f')],null))[_0x66c3('0x28')](respondWithResult(_0x46f4cb,null))['catch'](handleError(_0x46f4cb,null));};exports[_0x66c3('0x29')]=function(_0x2163c9,_0x2a1c3e){return db[_0x66c3('0x30')][_0x66c3('0x48')]({'where':{'id':_0x2163c9['params']['id']}})[_0x66c3('0x28')](handleEntityNotFound(_0x2a1c3e,null))['then'](removeEntity(_0x2a1c3e,null))[_0x66c3('0x45')](handleError(_0x2a1c3e,null));};exports[_0x66c3('0x50')]=function(_0x21417e,_0x10f047,_0x5f499f){_0x21417e[_0x66c3('0x4f')][_0x66c3('0x2c')]=_0x21417e['file']['originalname'];_0x21417e[_0x66c3('0x4f')][_0x66c3('0x53')]=_0x21417e[_0x66c3('0x54')][_0x66c3('0x55')];_0x21417e[_0x66c3('0x4f')][_0x66c3('0x40')]=_0x21417e['file'][_0x66c3('0x56')];return db[_0x66c3('0x30')][_0x66c3('0x50')](_0x21417e[_0x66c3('0x4f')])[_0x66c3('0x28')](respondWithResult(_0x10f047,0xc9))[_0x66c3('0x45')](handleError(_0x10f047,null));};exports[_0x66c3('0x57')]=function(_0x191b6b,_0x55895d,_0x535fa9){return db[_0x66c3('0x30')]['findOne']({'where':{'id':_0x191b6b[_0x66c3('0x52')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x55895d,null))[_0x66c3('0x28')](function(_0x3a39ed){if(_0x3a39ed){var _0x1a068a=_0x3a39ed[_0x66c3('0x58')]!==null;var _0x36f9c7=path[_0x66c3('0x59')](config[_0x66c3('0x5a')],_0x66c3('0x5b'));if(_0x1a068a){_0x36f9c7=path[_0x66c3('0x59')](_0x36f9c7,_0x66c3('0x5c'));}var _0x946671=path[_0x66c3('0x59')](_0x36f9c7,_0x3a39ed['basename']);return _0x55895d[_0x66c3('0x57')](_0x946671);}})[_0x66c3('0x45')](handleError(_0x55895d,null));};