49f20c023623a565ab5485a71ad6f7cbc5e27ccc
[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 _0x9855=['update','then','destroy','sendStatus','error','name','send','index','Attachment','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','limit','offset','order','sort','where','pick','filter','merge','map','options','includeAll','include','findAll','rows','catch','show','params','find','clone','get','omit','body','createdAt','create','file','originalname','basename','filename','mimetype','findOne','ChatOfflineMessageId','join','root','server/files/attachments/','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','to-csv','ejs','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','undefined','count','set','Content-Range','reject','save'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9855,0x90));var _0x5985=function(_0x2a5cd4,_0x19ae4a){_0x2a5cd4=_0x2a5cd4-0x0;var _0x373a21=_0x9855[_0x2a5cd4];return _0x373a21;};'use strict';var emlformat=require(_0x5985('0x0'));var rimraf=require(_0x5985('0x1'));var zipdir=require(_0x5985('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5985('0x3'));var BPromise=require(_0x5985('0x4'));var Mustache=require(_0x5985('0x5'));var util=require(_0x5985('0x6'));var path=require(_0x5985('0x7'));var sox=require('sox');var csv=require(_0x5985('0x8'));var ejs=require(_0x5985('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x5985('0xa'));var deskjs=require(_0x5985('0xb'));var toCsv=require(_0x5985('0x8'));var querystring=require(_0x5985('0xc'));var Papa=require(_0x5985('0xd'));var Redis=require(_0x5985('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x5985('0xf'));var as=require(_0x5985('0x10'));var hardwareService=require(_0x5985('0x11'));var logger=require(_0x5985('0x12'))(_0x5985('0x13'));var utils=require(_0x5985('0x14'));var config=require(_0x5985('0x15'));var licenseUtil=require(_0x5985('0x16'));var db=require(_0x5985('0x17'))['db'];function respondWithStatusCode(_0x455827,_0x3f27d2){_0x3f27d2=_0x3f27d2||0xcc;return function(_0x33f37d){if(_0x33f37d){return _0x455827['sendStatus'](_0x3f27d2);}return _0x455827[_0x5985('0x18')](_0x3f27d2)[_0x5985('0x19')]();};}function respondWithResult(_0x423567,_0x3bf5a6){_0x3bf5a6=_0x3bf5a6||0xc8;return function(_0x35d0f4){if(_0x35d0f4){return _0x423567[_0x5985('0x18')](_0x3bf5a6)['json'](_0x35d0f4);}};}function respondWithFilteredResult(_0x560404,_0x28e525){return function(_0x52130d){if(_0x52130d){var _0xd9dc09=typeof _0x28e525['offset']===_0x5985('0x1a')&&typeof _0x28e525['limit']===_0x5985('0x1a');var _0x52a679=_0x52130d[_0x5985('0x1b')];var _0x4ebadb=_0xd9dc09?0x0:_0x28e525['offset'];var _0x35c10c=_0xd9dc09?_0x52130d['count']:_0x28e525['offset']+_0x28e525['limit'];var _0x20d2f7;if(_0x35c10c>=_0x52a679){_0x35c10c=_0x52a679;_0x20d2f7=0xc8;}else{_0x20d2f7=0xce;}_0x560404['status'](_0x20d2f7);return _0x560404[_0x5985('0x1c')](_0x5985('0x1d'),_0x4ebadb+'-'+_0x35c10c+'/'+_0x52a679)['json'](_0x52130d);}return null;};}function patchUpdates(_0x3688ad){return function(_0x43df54){try{jsonpatch['apply'](_0x43df54,_0x3688ad,!![]);}catch(_0x5eb84d){return BPromise[_0x5985('0x1e')](_0x5eb84d);}return _0x43df54[_0x5985('0x1f')]();};}function saveUpdates(_0x13719e,_0x1e2284){return function(_0x22662a){if(_0x22662a){return _0x22662a[_0x5985('0x20')](_0x13719e)[_0x5985('0x21')](function(_0xaee481){return _0xaee481;});}return null;};}function removeEntity(_0x548e01,_0x194a60){return function(_0x5952c7){if(_0x5952c7){return _0x5952c7[_0x5985('0x22')]()[_0x5985('0x21')](function(){_0x548e01['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x148668,_0x2853bf){return function(_0x493503){if(!_0x493503){_0x148668[_0x5985('0x23')](0x194);}return _0x493503;};}function handleError(_0x82c76c,_0x4c9437){_0x4c9437=_0x4c9437||0x1f4;return function(_0x55a0dd){logger[_0x5985('0x24')](_0x55a0dd['stack']);if(_0x55a0dd[_0x5985('0x25')]){delete _0x55a0dd[_0x5985('0x25')];}_0x82c76c[_0x5985('0x18')](_0x4c9437)[_0x5985('0x26')](_0x55a0dd);};}exports[_0x5985('0x27')]=function(_0x753b41,_0x5b1d8e){var _0x4b064b={},_0x33912c={},_0x307d4b={'count':0x0,'rows':[]};var _0x1f730e=_['map'](db[_0x5985('0x28')][_0x5985('0x29')],function(_0x3eedfb){return{'name':_0x3eedfb[_0x5985('0x2a')],'type':_0x3eedfb[_0x5985('0x2b')][_0x5985('0x2c')]};});_0x33912c[_0x5985('0x2d')]=_['map'](_0x1f730e,_0x5985('0x25'));_0x33912c['query']=_[_0x5985('0x2e')](_0x753b41[_0x5985('0x2f')]);_0x33912c[_0x5985('0x30')]=_[_0x5985('0x31')](_0x33912c[_0x5985('0x2d')],_0x33912c[_0x5985('0x2f')]);_0x4b064b[_0x5985('0x32')]=_[_0x5985('0x31')](_0x33912c['model'],qs[_0x5985('0x33')](_0x753b41[_0x5985('0x2f')][_0x5985('0x33')]));_0x4b064b[_0x5985('0x32')]=_0x4b064b[_0x5985('0x32')][_0x5985('0x34')]?_0x4b064b['attributes']:_0x33912c[_0x5985('0x2d')];if(!_0x753b41['query']['hasOwnProperty'](_0x5985('0x35'))){_0x4b064b[_0x5985('0x36')]=qs['limit'](_0x753b41['query'][_0x5985('0x36')]);_0x4b064b[_0x5985('0x37')]=qs[_0x5985('0x37')](_0x753b41['query'][_0x5985('0x37')]);}_0x4b064b[_0x5985('0x38')]=qs[_0x5985('0x39')](_0x753b41[_0x5985('0x2f')]['sort']);_0x4b064b[_0x5985('0x3a')]=qs[_0x5985('0x30')](_[_0x5985('0x3b')](_0x753b41[_0x5985('0x2f')],_0x33912c['filters']),_0x1f730e);if(_0x753b41[_0x5985('0x2f')][_0x5985('0x3c')]){_0x4b064b[_0x5985('0x3a')]=_[_0x5985('0x3d')](_0x4b064b[_0x5985('0x3a')],{'$or':_[_0x5985('0x3e')](_0x1f730e,function(_0x1cbd10){if(_0x1cbd10[_0x5985('0x2b')]!=='VIRTUAL'){var _0x3c289c={};_0x3c289c[_0x1cbd10[_0x5985('0x25')]]={'$like':'%'+_0x753b41[_0x5985('0x2f')][_0x5985('0x3c')]+'%'};return _0x3c289c;}})});}_0x4b064b=_['merge']({},_0x4b064b,_0x753b41[_0x5985('0x3f')]);var _0x4dd523={'where':_0x4b064b['where']};return db[_0x5985('0x28')]['count'](_0x4dd523)['then'](function(_0x598c67){_0x307d4b[_0x5985('0x1b')]=_0x598c67;if(_0x753b41['query'][_0x5985('0x40')]){_0x4b064b[_0x5985('0x41')]=[{'all':!![]}];}return db[_0x5985('0x28')][_0x5985('0x42')](_0x4b064b);})['then'](function(_0x239081){_0x307d4b[_0x5985('0x43')]=_0x239081;return _0x307d4b;})['then'](respondWithFilteredResult(_0x5b1d8e,_0x4b064b))[_0x5985('0x44')](handleError(_0x5b1d8e,null));};exports[_0x5985('0x45')]=function(_0x8031db,_0x442ad1){var _0x4c9ae4={'raw':!![],'where':{'id':_0x8031db[_0x5985('0x46')]['id']}},_0x239e05={};_0x239e05['model']=_[_0x5985('0x2e')](db[_0x5985('0x28')][_0x5985('0x29')]);_0x239e05['query']=_[_0x5985('0x2e')](_0x8031db['query']);_0x239e05[_0x5985('0x30')]=_[_0x5985('0x31')](_0x239e05[_0x5985('0x2d')],_0x239e05[_0x5985('0x2f')]);_0x4c9ae4[_0x5985('0x32')]=_[_0x5985('0x31')](_0x239e05[_0x5985('0x2d')],qs[_0x5985('0x33')](_0x8031db[_0x5985('0x2f')]['fields']));_0x4c9ae4[_0x5985('0x32')]=_0x4c9ae4[_0x5985('0x32')]['length']?_0x4c9ae4[_0x5985('0x32')]:_0x239e05['model'];if(_0x8031db['query'][_0x5985('0x40')]){_0x4c9ae4['include']=[{'all':!![]}];}_0x4c9ae4=_[_0x5985('0x3d')]({},_0x4c9ae4,_0x8031db[_0x5985('0x3f')]);return db['Attachment'][_0x5985('0x47')](_0x4c9ae4)['then'](handleEntityNotFound(_0x442ad1,null))[_0x5985('0x21')](respondWithResult(_0x442ad1,null))[_0x5985('0x44')](handleError(_0x442ad1,null));};exports[_0x5985('0x48')]=function(_0x27ca77,_0x1d7fe8){var _0x1940b9={'where':{'id':_0x27ca77[_0x5985('0x46')]['id']}},_0x147dc3={};_0x147dc3[_0x5985('0x2d')]=_[_0x5985('0x2e')](db[_0x5985('0x28')][_0x5985('0x29')]);_0x1940b9['attributes']=_[_0x5985('0x31')](_0x147dc3['model'],qs[_0x5985('0x33')](_0x27ca77[_0x5985('0x2f')][_0x5985('0x33')]));_0x1940b9[_0x5985('0x32')]=_0x1940b9['attributes']['length']?_0x1940b9[_0x5985('0x32')]:_0x147dc3[_0x5985('0x2d')];if(_0x27ca77[_0x5985('0x2f')][_0x5985('0x40')]){_0x1940b9[_0x5985('0x41')]=[{'all':!![]}];}_0x1940b9=_[_0x5985('0x3d')]({},_0x1940b9,_0x27ca77[_0x5985('0x3f')]);return db[_0x5985('0x28')][_0x5985('0x47')](_0x1940b9)[_0x5985('0x21')](handleEntityNotFound(_0x1d7fe8,null))[_0x5985('0x21')](function(_0x41f1f2){if(_0x41f1f2){var _0x522c2a=_0x41f1f2[_0x5985('0x49')]({'plain':!![]});_0x522c2a=qs[_0x5985('0x4a')](_0x522c2a,['id','createdAt','updatedAt']);_0x27ca77[_0x5985('0x4b')]=_[_0x5985('0x4a')](_0x27ca77[_0x5985('0x4b')],['id',_0x5985('0x4c'),'updatedAt']);return db[_0x5985('0x28')]['create'](_[_0x5985('0x3d')](_0x522c2a,_0x27ca77[_0x5985('0x4b')]),{'include':_0x27ca77[_0x5985('0x2f')][_0x5985('0x40')]?[{'all':!![]}]:undefined});}})[_0x5985('0x21')](respondWithResult(_0x1d7fe8,0xc9))[_0x5985('0x44')](handleError(_0x1d7fe8,null));};exports['update']=function(_0x3f95d5,_0x50c85a){if(_0x3f95d5[_0x5985('0x4b')]['id']){delete _0x3f95d5[_0x5985('0x4b')]['id'];}return db[_0x5985('0x28')][_0x5985('0x47')]({'where':{'id':_0x3f95d5[_0x5985('0x46')]['id']}})[_0x5985('0x21')](handleEntityNotFound(_0x50c85a,null))[_0x5985('0x21')](saveUpdates(_0x3f95d5['body'],null))['then'](respondWithResult(_0x50c85a,null))[_0x5985('0x44')](handleError(_0x50c85a,null));};exports[_0x5985('0x22')]=function(_0x4331a2,_0x3675c6){return db[_0x5985('0x28')][_0x5985('0x47')]({'where':{'id':_0x4331a2[_0x5985('0x46')]['id']}})[_0x5985('0x21')](handleEntityNotFound(_0x3675c6,null))[_0x5985('0x21')](removeEntity(_0x3675c6,null))[_0x5985('0x44')](handleError(_0x3675c6,null));};exports[_0x5985('0x4d')]=function(_0x48f9df,_0x30104c,_0x2e801c){_0x48f9df['body'][_0x5985('0x25')]=_0x48f9df[_0x5985('0x4e')][_0x5985('0x4f')];_0x48f9df[_0x5985('0x4b')][_0x5985('0x50')]=_0x48f9df[_0x5985('0x4e')][_0x5985('0x51')];_0x48f9df[_0x5985('0x4b')][_0x5985('0x2b')]=_0x48f9df['file'][_0x5985('0x52')];return db[_0x5985('0x28')][_0x5985('0x4d')](_0x48f9df[_0x5985('0x4b')])[_0x5985('0x21')](respondWithResult(_0x30104c,0xc9))['catch'](handleError(_0x30104c,null));};exports['download']=function(_0x4975fb,_0xa3b87c,_0x12e957){return db[_0x5985('0x28')][_0x5985('0x53')]({'where':{'id':_0x4975fb[_0x5985('0x46')]['id']},'raw':!![]})[_0x5985('0x21')](handleEntityNotFound(_0xa3b87c,null))['then'](function(_0x5690e8){if(_0x5690e8){var _0x4f3854=_0x5690e8[_0x5985('0x54')]!==null;var _0x3b6616=path[_0x5985('0x55')](config[_0x5985('0x56')],_0x5985('0x57'));if(_0x4f3854){_0x3b6616=path[_0x5985('0x55')](_0x3b6616,'offline-chat/');}var _0x1b61d3=path[_0x5985('0x55')](_0x3b6616,_0x5690e8['basename']);return _0xa3b87c['download'](_0x1b61d3);}})['catch'](handleError(_0xa3b87c,null));};