97be53323a2f21187d10a19b55dc0ee4ec76632e
[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 _0x0c01=['root','offline-chat/','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','Attachment','fieldName','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','findAll','catch','show','keys','rawAttributes','clone','params','get','omit','createdAt','updatedAt','body','create','find','basename','file','filename','mimetype','download','findOne','ChatOfflineMessageId','join'];(function(_0x4f9b8f,_0x1b1197){var _0x483382=function(_0x209d5e){while(--_0x209d5e){_0x4f9b8f['push'](_0x4f9b8f['shift']());}};_0x483382(++_0x1b1197);}(_0x0c01,0x182));var _0x10c0=function(_0x22cd74,_0x3b53d9){_0x22cd74=_0x22cd74-0x0;var _0x5b0716=_0x0c01[_0x22cd74];return _0x5b0716;};'use strict';var emlformat=require(_0x10c0('0x0'));var rimraf=require(_0x10c0('0x1'));var zipdir=require(_0x10c0('0x2'));var jsonpatch=require(_0x10c0('0x3'));var rp=require(_0x10c0('0x4'));var moment=require(_0x10c0('0x5'));var BPromise=require(_0x10c0('0x6'));var Mustache=require(_0x10c0('0x7'));var util=require(_0x10c0('0x8'));var path=require(_0x10c0('0x9'));var sox=require(_0x10c0('0xa'));var csv=require(_0x10c0('0xb'));var ejs=require(_0x10c0('0xc'));var fs=require('fs');var fs_extra=require(_0x10c0('0xd'));var _=require(_0x10c0('0xe'));var squel=require(_0x10c0('0xf'));var crypto=require(_0x10c0('0x10'));var jsforce=require(_0x10c0('0x11'));var deskjs=require(_0x10c0('0x12'));var toCsv=require('to-csv');var querystring=require(_0x10c0('0x13'));var Papa=require(_0x10c0('0x14'));var Redis=require(_0x10c0('0x15'));var authService=require(_0x10c0('0x16'));var qs=require(_0x10c0('0x17'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x10c0('0x18'));var logger=require('../../config/logger')(_0x10c0('0x19'));var utils=require('../../config/utils');var config=require(_0x10c0('0x1a'));var licenseUtil=require(_0x10c0('0x1b'));var db=require(_0x10c0('0x1c'))['db'];function respondWithStatusCode(_0x51a13e,_0x4a0b55){_0x4a0b55=_0x4a0b55||0xcc;return function(_0xb5478){if(_0xb5478){return _0x51a13e[_0x10c0('0x1d')](_0x4a0b55);}return _0x51a13e[_0x10c0('0x1e')](_0x4a0b55)[_0x10c0('0x1f')]();};}function respondWithResult(_0x3a8b25,_0x276150){_0x276150=_0x276150||0xc8;return function(_0x5464b0){if(_0x5464b0){return _0x3a8b25['status'](_0x276150)[_0x10c0('0x20')](_0x5464b0);}};}function respondWithFilteredResult(_0x15e158,_0x89be7e){return function(_0x10564b){if(_0x10564b){var _0x35d334=typeof _0x89be7e[_0x10c0('0x21')]===_0x10c0('0x22')&&typeof _0x89be7e[_0x10c0('0x23')]===_0x10c0('0x22');var _0x1f0729=_0x10564b[_0x10c0('0x24')];var _0x41cbec=_0x35d334?0x0:_0x89be7e[_0x10c0('0x21')];var _0x40fdb8=_0x35d334?_0x10564b[_0x10c0('0x24')]:_0x89be7e[_0x10c0('0x21')]+_0x89be7e[_0x10c0('0x23')];var _0x549b4b;if(_0x40fdb8>=_0x1f0729){_0x40fdb8=_0x1f0729;_0x549b4b=0xc8;}else{_0x549b4b=0xce;}_0x15e158['status'](_0x549b4b);return _0x15e158[_0x10c0('0x25')](_0x10c0('0x26'),_0x41cbec+'-'+_0x40fdb8+'/'+_0x1f0729)[_0x10c0('0x20')](_0x10564b);}return null;};}function patchUpdates(_0x2ca857){return function(_0x25a8fc){try{jsonpatch[_0x10c0('0x27')](_0x25a8fc,_0x2ca857,!![]);}catch(_0x312397){return BPromise[_0x10c0('0x28')](_0x312397);}return _0x25a8fc['save']();};}function saveUpdates(_0x5b3d8c,_0xce2442){return function(_0x23ed61){if(_0x23ed61){return _0x23ed61[_0x10c0('0x29')](_0x5b3d8c)[_0x10c0('0x2a')](function(_0x2d6ad5){return _0x2d6ad5;});}return null;};}function removeEntity(_0x10f418,_0x5a0536){return function(_0x29f402){if(_0x29f402){return _0x29f402[_0x10c0('0x2b')]()[_0x10c0('0x2a')](function(){_0x10f418[_0x10c0('0x1e')](0xcc)[_0x10c0('0x1f')]();});}};}function handleEntityNotFound(_0x254d45,_0x45502a){return function(_0x4b4ef1){if(!_0x4b4ef1){_0x254d45['sendStatus'](0x194);}return _0x4b4ef1;};}function handleError(_0x331408,_0x2d84e1){_0x2d84e1=_0x2d84e1||0x1f4;return function(_0x22dfb8){logger[_0x10c0('0x2c')](_0x22dfb8[_0x10c0('0x2d')]);if(_0x22dfb8[_0x10c0('0x2e')]){delete _0x22dfb8[_0x10c0('0x2e')];}_0x331408[_0x10c0('0x1e')](_0x2d84e1)[_0x10c0('0x2f')](_0x22dfb8);};}exports[_0x10c0('0x30')]=function(_0x3179b7,_0x3aa778){var _0x473161={},_0xe83e8a={},_0x5ba7de={'count':0x0,'rows':[]};var _0x32c7ef=_['map'](db[_0x10c0('0x31')]['rawAttributes'],function(_0x5bf7ae){return{'name':_0x5bf7ae[_0x10c0('0x32')],'type':_0x5bf7ae['type'][_0x10c0('0x33')]};});_0xe83e8a[_0x10c0('0x34')]=_[_0x10c0('0x35')](_0x32c7ef,'name');_0xe83e8a[_0x10c0('0x36')]=_['keys'](_0x3179b7[_0x10c0('0x36')]);_0xe83e8a[_0x10c0('0x37')]=_[_0x10c0('0x38')](_0xe83e8a[_0x10c0('0x34')],_0xe83e8a[_0x10c0('0x36')]);_0x473161['attributes']=_[_0x10c0('0x38')](_0xe83e8a[_0x10c0('0x34')],qs[_0x10c0('0x39')](_0x3179b7[_0x10c0('0x36')][_0x10c0('0x39')]));_0x473161[_0x10c0('0x3a')]=_0x473161['attributes'][_0x10c0('0x3b')]?_0x473161['attributes']:_0xe83e8a[_0x10c0('0x34')];if(!_0x3179b7[_0x10c0('0x36')][_0x10c0('0x3c')](_0x10c0('0x3d'))){_0x473161[_0x10c0('0x23')]=qs[_0x10c0('0x23')](_0x3179b7[_0x10c0('0x36')][_0x10c0('0x23')]);_0x473161[_0x10c0('0x21')]=qs[_0x10c0('0x21')](_0x3179b7[_0x10c0('0x36')]['offset']);}_0x473161[_0x10c0('0x3e')]=qs[_0x10c0('0x3f')](_0x3179b7[_0x10c0('0x36')]['sort']);_0x473161[_0x10c0('0x40')]=qs[_0x10c0('0x37')](_[_0x10c0('0x41')](_0x3179b7[_0x10c0('0x36')],_0xe83e8a[_0x10c0('0x37')]),_0x32c7ef);if(_0x3179b7['query'][_0x10c0('0x42')]){_0x473161[_0x10c0('0x40')]=_[_0x10c0('0x43')](_0x473161['where'],{'$or':_[_0x10c0('0x35')](_0x32c7ef,function(_0x48a20b){if(_0x48a20b[_0x10c0('0x44')]!==_0x10c0('0x45')){var _0xfa48f9={};_0xfa48f9[_0x48a20b[_0x10c0('0x2e')]]={'$like':'%'+_0x3179b7[_0x10c0('0x36')][_0x10c0('0x42')]+'%'};return _0xfa48f9;}})});}_0x473161=_['merge']({},_0x473161,_0x3179b7[_0x10c0('0x46')]);var _0x5e5267={'where':_0x473161[_0x10c0('0x40')]};return db[_0x10c0('0x31')][_0x10c0('0x24')](_0x5e5267)[_0x10c0('0x2a')](function(_0x4a0fc9){_0x5ba7de['count']=_0x4a0fc9;if(_0x3179b7[_0x10c0('0x36')][_0x10c0('0x47')]){_0x473161['include']=[{'all':!![]}];}return db[_0x10c0('0x31')][_0x10c0('0x48')](_0x473161);})[_0x10c0('0x2a')](function(_0x55a5f1){_0x5ba7de['rows']=_0x55a5f1;return _0x5ba7de;})[_0x10c0('0x2a')](respondWithFilteredResult(_0x3aa778,_0x473161))[_0x10c0('0x49')](handleError(_0x3aa778,null));};exports[_0x10c0('0x4a')]=function(_0x1c452b,_0x3ba40b){var _0x11280b={'raw':!![],'where':{'id':_0x1c452b['params']['id']}},_0x441ffc={};_0x441ffc[_0x10c0('0x34')]=_[_0x10c0('0x4b')](db[_0x10c0('0x31')][_0x10c0('0x4c')]);_0x441ffc[_0x10c0('0x36')]=_[_0x10c0('0x4b')](_0x1c452b[_0x10c0('0x36')]);_0x441ffc[_0x10c0('0x37')]=_['intersection'](_0x441ffc[_0x10c0('0x34')],_0x441ffc[_0x10c0('0x36')]);_0x11280b['attributes']=_[_0x10c0('0x38')](_0x441ffc[_0x10c0('0x34')],qs[_0x10c0('0x39')](_0x1c452b[_0x10c0('0x36')][_0x10c0('0x39')]));_0x11280b[_0x10c0('0x3a')]=_0x11280b[_0x10c0('0x3a')]['length']?_0x11280b[_0x10c0('0x3a')]:_0x441ffc['model'];if(_0x1c452b[_0x10c0('0x36')][_0x10c0('0x47')]){_0x11280b['include']=[{'all':!![]}];}_0x11280b=_[_0x10c0('0x43')]({},_0x11280b,_0x1c452b[_0x10c0('0x46')]);return db[_0x10c0('0x31')]['find'](_0x11280b)[_0x10c0('0x2a')](handleEntityNotFound(_0x3ba40b,null))[_0x10c0('0x2a')](respondWithResult(_0x3ba40b,null))[_0x10c0('0x49')](handleError(_0x3ba40b,null));};exports[_0x10c0('0x4d')]=function(_0x14bdab,_0xbe655d){var _0x576833={'where':{'id':_0x14bdab[_0x10c0('0x4e')]['id']}},_0x119638={};_0x119638[_0x10c0('0x34')]=_[_0x10c0('0x4b')](db['Attachment']['rawAttributes']);_0x576833[_0x10c0('0x3a')]=_[_0x10c0('0x38')](_0x119638[_0x10c0('0x34')],qs[_0x10c0('0x39')](_0x14bdab[_0x10c0('0x36')]['fields']));_0x576833[_0x10c0('0x3a')]=_0x576833[_0x10c0('0x3a')][_0x10c0('0x3b')]?_0x576833[_0x10c0('0x3a')]:_0x119638['model'];if(_0x14bdab[_0x10c0('0x36')][_0x10c0('0x47')]){_0x576833['include']=[{'all':!![]}];}_0x576833=_['merge']({},_0x576833,_0x14bdab[_0x10c0('0x46')]);return db[_0x10c0('0x31')]['find'](_0x576833)['then'](handleEntityNotFound(_0xbe655d,null))[_0x10c0('0x2a')](function(_0x3aa73c){if(_0x3aa73c){var _0xaf7ed7=_0x3aa73c[_0x10c0('0x4f')]({'plain':!![]});_0xaf7ed7=qs[_0x10c0('0x50')](_0xaf7ed7,['id',_0x10c0('0x51'),_0x10c0('0x52')]);_0x14bdab[_0x10c0('0x53')]=_[_0x10c0('0x50')](_0x14bdab[_0x10c0('0x53')],['id',_0x10c0('0x51'),_0x10c0('0x52')]);return db[_0x10c0('0x31')][_0x10c0('0x54')](_[_0x10c0('0x43')](_0xaf7ed7,_0x14bdab[_0x10c0('0x53')]),{'include':_0x14bdab[_0x10c0('0x36')][_0x10c0('0x47')]?[{'all':!![]}]:undefined});}})[_0x10c0('0x2a')](respondWithResult(_0xbe655d,0xc9))['catch'](handleError(_0xbe655d,null));};exports['update']=function(_0x587660,_0x279858){if(_0x587660[_0x10c0('0x53')]['id']){delete _0x587660['body']['id'];}return db[_0x10c0('0x31')]['find']({'where':{'id':_0x587660[_0x10c0('0x4e')]['id']}})[_0x10c0('0x2a')](handleEntityNotFound(_0x279858,null))[_0x10c0('0x2a')](saveUpdates(_0x587660[_0x10c0('0x53')],null))[_0x10c0('0x2a')](respondWithResult(_0x279858,null))[_0x10c0('0x49')](handleError(_0x279858,null));};exports[_0x10c0('0x2b')]=function(_0x2c9aeb,_0x2e97a6){return db['Attachment'][_0x10c0('0x55')]({'where':{'id':_0x2c9aeb[_0x10c0('0x4e')]['id']}})[_0x10c0('0x2a')](handleEntityNotFound(_0x2e97a6,null))[_0x10c0('0x2a')](removeEntity(_0x2e97a6,null))[_0x10c0('0x49')](handleError(_0x2e97a6,null));};exports[_0x10c0('0x54')]=function(_0x103246,_0x348475,_0x13c0b9){_0x103246[_0x10c0('0x53')][_0x10c0('0x2e')]=_0x103246['file']['originalname'];_0x103246[_0x10c0('0x53')][_0x10c0('0x56')]=_0x103246[_0x10c0('0x57')][_0x10c0('0x58')];_0x103246[_0x10c0('0x53')]['type']=_0x103246[_0x10c0('0x57')][_0x10c0('0x59')];return db[_0x10c0('0x31')][_0x10c0('0x54')](_0x103246['body'])['then'](respondWithResult(_0x348475,0xc9))['catch'](handleError(_0x348475,null));};exports[_0x10c0('0x5a')]=function(_0x41bee2,_0x35207a,_0x230eb0){return db['Attachment'][_0x10c0('0x5b')]({'where':{'id':_0x41bee2[_0x10c0('0x4e')]['id']},'raw':!![]})[_0x10c0('0x2a')](handleEntityNotFound(_0x35207a,null))[_0x10c0('0x2a')](function(_0x26ed60){if(_0x26ed60){var _0x217b64=_0x26ed60[_0x10c0('0x5c')]!==null;var _0x30ff23=path[_0x10c0('0x5d')](config[_0x10c0('0x5e')],'server/files/attachments/');if(_0x217b64){_0x30ff23=path['join'](_0x30ff23,_0x10c0('0x5f'));}var _0x11d2c6=path[_0x10c0('0x5d')](_0x30ff23,_0x26ed60[_0x10c0('0x56')]);return _0x35207a['download'](_0x11d2c6);}})[_0x10c0('0x49')](handleError(_0x35207a,null));};