5347cb44dd5631e97c4c4865c227b01eb6f25eb8
[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 _0x946e=['to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','offset','count','set','Content-Range','reject','save','update','then','destroy','stack','name','send','map','Attachment','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','length','find','clone','get','updatedAt','body','createdAt','create','file','originalname','filename','download','findOne','ChatOfflineMessageId','root','server/files/attachments/','join','basename','eml-format','zip-dir','moment','bluebird','mustache','util','path','sox'];(function(_0xc90440,_0x4cf80b){var _0x46ef96=function(_0x428ee0){while(--_0x428ee0){_0xc90440['push'](_0xc90440['shift']());}};_0x46ef96(++_0x4cf80b);}(_0x946e,0xae));var _0xe946=function(_0x1f878b,_0x1f894d){_0x1f878b=_0x1f878b-0x0;var _0x3fa595=_0x946e[_0x1f878b];return _0x3fa595;};'use strict';var emlformat=require(_0xe946('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe946('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xe946('0x2'));var BPromise=require(_0xe946('0x3'));var Mustache=require(_0xe946('0x4'));var util=require(_0xe946('0x5'));var path=require(_0xe946('0x6'));var sox=require(_0xe946('0x7'));var csv=require(_0xe946('0x8'));var ejs=require(_0xe946('0x9'));var fs=require('fs');var fs_extra=require(_0xe946('0xa'));var _=require(_0xe946('0xb'));var squel=require(_0xe946('0xc'));var crypto=require(_0xe946('0xd'));var jsforce=require(_0xe946('0xe'));var deskjs=require(_0xe946('0xf'));var toCsv=require(_0xe946('0x8'));var querystring=require(_0xe946('0x10'));var Papa=require(_0xe946('0x11'));var Redis=require(_0xe946('0x12'));var authService=require(_0xe946('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xe946('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe946('0x15'))(_0xe946('0x16'));var utils=require(_0xe946('0x17'));var config=require(_0xe946('0x18'));var licenseUtil=require(_0xe946('0x19'));var db=require(_0xe946('0x1a'))['db'];function respondWithStatusCode(_0x3232b1,_0x1cc8e7){_0x1cc8e7=_0x1cc8e7||0xcc;return function(_0x15f5cc){if(_0x15f5cc){return _0x3232b1[_0xe946('0x1b')](_0x1cc8e7);}return _0x3232b1[_0xe946('0x1c')](_0x1cc8e7)['end']();};}function respondWithResult(_0x40e2f4,_0x292863){_0x292863=_0x292863||0xc8;return function(_0x44404d){if(_0x44404d){return _0x40e2f4['status'](_0x292863)[_0xe946('0x1d')](_0x44404d);}};}function respondWithFilteredResult(_0x5caeb2,_0x4da63a){return function(_0x457ffd){if(_0x457ffd){var _0x2afe31=typeof _0x4da63a['offset']===_0xe946('0x1e')&&typeof _0x4da63a[_0xe946('0x1f')]==='undefined';var _0x49b8d2=_0x457ffd['count'];var _0x5d5feb=_0x2afe31?0x0:_0x4da63a[_0xe946('0x20')];var _0x6e9c58=_0x2afe31?_0x457ffd[_0xe946('0x21')]:_0x4da63a[_0xe946('0x20')]+_0x4da63a[_0xe946('0x1f')];var _0x442cc6;if(_0x6e9c58>=_0x49b8d2){_0x6e9c58=_0x49b8d2;_0x442cc6=0xc8;}else{_0x442cc6=0xce;}_0x5caeb2[_0xe946('0x1c')](_0x442cc6);return _0x5caeb2[_0xe946('0x22')](_0xe946('0x23'),_0x5d5feb+'-'+_0x6e9c58+'/'+_0x49b8d2)[_0xe946('0x1d')](_0x457ffd);}return null;};}function patchUpdates(_0x570632){return function(_0x4ff80b){try{jsonpatch['apply'](_0x4ff80b,_0x570632,!![]);}catch(_0x143551){return BPromise[_0xe946('0x24')](_0x143551);}return _0x4ff80b[_0xe946('0x25')]();};}function saveUpdates(_0x118307,_0x139f7c){return function(_0x1b09e0){if(_0x1b09e0){return _0x1b09e0[_0xe946('0x26')](_0x118307)[_0xe946('0x27')](function(_0x1e0496){return _0x1e0496;});}return null;};}function removeEntity(_0x293197,_0x5c9dcf){return function(_0x583c20){if(_0x583c20){return _0x583c20[_0xe946('0x28')]()[_0xe946('0x27')](function(){_0x293197[_0xe946('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5395a8,_0x325b03){return function(_0x15f995){if(!_0x15f995){_0x5395a8[_0xe946('0x1b')](0x194);}return _0x15f995;};}function handleError(_0x54a7a3,_0x5a7b26){_0x5a7b26=_0x5a7b26||0x1f4;return function(_0x97c5ca){logger['error'](_0x97c5ca[_0xe946('0x29')]);if(_0x97c5ca[_0xe946('0x2a')]){delete _0x97c5ca[_0xe946('0x2a')];}_0x54a7a3['status'](_0x5a7b26)[_0xe946('0x2b')](_0x97c5ca);};}exports['index']=function(_0x5da043,_0x5cac72){var _0x4fb148={},_0x10ef26={},_0x50aee6={'count':0x0,'rows':[]};var _0x1bf6b1=_[_0xe946('0x2c')](db[_0xe946('0x2d')][_0xe946('0x2e')],function(_0x36603e){return{'name':_0x36603e[_0xe946('0x2f')],'type':_0x36603e[_0xe946('0x30')][_0xe946('0x31')]};});_0x10ef26['model']=_[_0xe946('0x2c')](_0x1bf6b1,_0xe946('0x2a'));_0x10ef26[_0xe946('0x32')]=_[_0xe946('0x33')](_0x5da043[_0xe946('0x32')]);_0x10ef26[_0xe946('0x34')]=_[_0xe946('0x35')](_0x10ef26[_0xe946('0x36')],_0x10ef26[_0xe946('0x32')]);_0x4fb148[_0xe946('0x37')]=_[_0xe946('0x35')](_0x10ef26[_0xe946('0x36')],qs['fields'](_0x5da043[_0xe946('0x32')][_0xe946('0x38')]));_0x4fb148[_0xe946('0x37')]=_0x4fb148[_0xe946('0x37')]['length']?_0x4fb148[_0xe946('0x37')]:_0x10ef26['model'];if(!_0x5da043[_0xe946('0x32')][_0xe946('0x39')](_0xe946('0x3a'))){_0x4fb148[_0xe946('0x1f')]=qs[_0xe946('0x1f')](_0x5da043[_0xe946('0x32')]['limit']);_0x4fb148[_0xe946('0x20')]=qs[_0xe946('0x20')](_0x5da043[_0xe946('0x32')][_0xe946('0x20')]);}_0x4fb148[_0xe946('0x3b')]=qs[_0xe946('0x3c')](_0x5da043[_0xe946('0x32')][_0xe946('0x3c')]);_0x4fb148[_0xe946('0x3d')]=qs['filters'](_[_0xe946('0x3e')](_0x5da043[_0xe946('0x32')],_0x10ef26['filters']),_0x1bf6b1);if(_0x5da043[_0xe946('0x32')][_0xe946('0x3f')]){_0x4fb148[_0xe946('0x3d')]=_[_0xe946('0x40')](_0x4fb148[_0xe946('0x3d')],{'$or':_[_0xe946('0x2c')](_0x1bf6b1,function(_0x3da745){if(_0x3da745[_0xe946('0x30')]!==_0xe946('0x41')){var _0x234df1={};_0x234df1[_0x3da745[_0xe946('0x2a')]]={'$like':'%'+_0x5da043[_0xe946('0x32')]['filter']+'%'};return _0x234df1;}})});}_0x4fb148=_[_0xe946('0x40')]({},_0x4fb148,_0x5da043[_0xe946('0x42')]);var _0x3e1d67={'where':_0x4fb148[_0xe946('0x3d')]};return db['Attachment']['count'](_0x3e1d67)['then'](function(_0x22aaba){_0x50aee6[_0xe946('0x21')]=_0x22aaba;if(_0x5da043[_0xe946('0x32')][_0xe946('0x43')]){_0x4fb148[_0xe946('0x44')]=[{'all':!![]}];}return db[_0xe946('0x2d')][_0xe946('0x45')](_0x4fb148);})[_0xe946('0x27')](function(_0x486665){_0x50aee6['rows']=_0x486665;return _0x50aee6;})[_0xe946('0x27')](respondWithFilteredResult(_0x5cac72,_0x4fb148))[_0xe946('0x46')](handleError(_0x5cac72,null));};exports[_0xe946('0x47')]=function(_0x2c23f8,_0x110ff9){var _0x3aa609={'raw':!![],'where':{'id':_0x2c23f8[_0xe946('0x48')]['id']}},_0x1ac248={};_0x1ac248[_0xe946('0x36')]=_[_0xe946('0x33')](db[_0xe946('0x2d')][_0xe946('0x2e')]);_0x1ac248[_0xe946('0x32')]=_[_0xe946('0x33')](_0x2c23f8[_0xe946('0x32')]);_0x1ac248[_0xe946('0x34')]=_[_0xe946('0x35')](_0x1ac248[_0xe946('0x36')],_0x1ac248['query']);_0x3aa609[_0xe946('0x37')]=_[_0xe946('0x35')](_0x1ac248[_0xe946('0x36')],qs[_0xe946('0x38')](_0x2c23f8['query'][_0xe946('0x38')]));_0x3aa609[_0xe946('0x37')]=_0x3aa609[_0xe946('0x37')][_0xe946('0x49')]?_0x3aa609[_0xe946('0x37')]:_0x1ac248[_0xe946('0x36')];if(_0x2c23f8['query'][_0xe946('0x43')]){_0x3aa609[_0xe946('0x44')]=[{'all':!![]}];}_0x3aa609=_['merge']({},_0x3aa609,_0x2c23f8[_0xe946('0x42')]);return db[_0xe946('0x2d')][_0xe946('0x4a')](_0x3aa609)[_0xe946('0x27')](handleEntityNotFound(_0x110ff9,null))[_0xe946('0x27')](respondWithResult(_0x110ff9,null))[_0xe946('0x46')](handleError(_0x110ff9,null));};exports[_0xe946('0x4b')]=function(_0x17dad0,_0x21844f){var _0x8b1615={'where':{'id':_0x17dad0[_0xe946('0x48')]['id']}},_0x5487bc={};_0x5487bc[_0xe946('0x36')]=_[_0xe946('0x33')](db['Attachment'][_0xe946('0x2e')]);_0x8b1615[_0xe946('0x37')]=_[_0xe946('0x35')](_0x5487bc['model'],qs[_0xe946('0x38')](_0x17dad0[_0xe946('0x32')][_0xe946('0x38')]));_0x8b1615['attributes']=_0x8b1615[_0xe946('0x37')][_0xe946('0x49')]?_0x8b1615['attributes']:_0x5487bc[_0xe946('0x36')];if(_0x17dad0[_0xe946('0x32')]['includeAll']){_0x8b1615[_0xe946('0x44')]=[{'all':!![]}];}_0x8b1615=_[_0xe946('0x40')]({},_0x8b1615,_0x17dad0[_0xe946('0x42')]);return db[_0xe946('0x2d')][_0xe946('0x4a')](_0x8b1615)[_0xe946('0x27')](handleEntityNotFound(_0x21844f,null))[_0xe946('0x27')](function(_0x324140){if(_0x324140){var _0x5a8f62=_0x324140[_0xe946('0x4c')]({'plain':!![]});_0x5a8f62=qs['omit'](_0x5a8f62,['id','createdAt',_0xe946('0x4d')]);_0x17dad0[_0xe946('0x4e')]=_['omit'](_0x17dad0['body'],['id',_0xe946('0x4f'),_0xe946('0x4d')]);return db['Attachment'][_0xe946('0x50')](_[_0xe946('0x40')](_0x5a8f62,_0x17dad0[_0xe946('0x4e')]),{'include':_0x17dad0[_0xe946('0x32')][_0xe946('0x43')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x21844f,0xc9))[_0xe946('0x46')](handleError(_0x21844f,null));};exports[_0xe946('0x26')]=function(_0x126fab,_0x339ab2){if(_0x126fab['body']['id']){delete _0x126fab[_0xe946('0x4e')]['id'];}return db[_0xe946('0x2d')][_0xe946('0x4a')]({'where':{'id':_0x126fab[_0xe946('0x48')]['id']}})[_0xe946('0x27')](handleEntityNotFound(_0x339ab2,null))[_0xe946('0x27')](saveUpdates(_0x126fab[_0xe946('0x4e')],null))[_0xe946('0x27')](respondWithResult(_0x339ab2,null))[_0xe946('0x46')](handleError(_0x339ab2,null));};exports[_0xe946('0x28')]=function(_0xbac5c0,_0x5c832c){return db[_0xe946('0x2d')]['find']({'where':{'id':_0xbac5c0[_0xe946('0x48')]['id']}})[_0xe946('0x27')](handleEntityNotFound(_0x5c832c,null))['then'](removeEntity(_0x5c832c,null))['catch'](handleError(_0x5c832c,null));};exports[_0xe946('0x50')]=function(_0x26c754,_0xeb89e1,_0x2279a4){_0x26c754['body'][_0xe946('0x2a')]=_0x26c754[_0xe946('0x51')][_0xe946('0x52')];_0x26c754['body']['basename']=_0x26c754[_0xe946('0x51')][_0xe946('0x53')];_0x26c754['body'][_0xe946('0x30')]=_0x26c754[_0xe946('0x51')]['mimetype'];return db[_0xe946('0x2d')]['create'](_0x26c754[_0xe946('0x4e')])[_0xe946('0x27')](respondWithResult(_0xeb89e1,0xc9))[_0xe946('0x46')](handleError(_0xeb89e1,null));};exports[_0xe946('0x54')]=function(_0x369e02,_0x32333d,_0x34570e){return db[_0xe946('0x2d')][_0xe946('0x55')]({'where':{'id':_0x369e02[_0xe946('0x48')]['id']},'raw':!![]})[_0xe946('0x27')](handleEntityNotFound(_0x32333d,null))[_0xe946('0x27')](function(_0x24d6e7){if(_0x24d6e7){var _0x4825fc=_0x24d6e7[_0xe946('0x56')]!==null;var _0x61c191=path['join'](config[_0xe946('0x57')],_0xe946('0x58'));if(_0x4825fc){_0x61c191=path[_0xe946('0x59')](_0x61c191,'offline-chat/');}var _0xd6bc11=path[_0xe946('0x59')](_0x61c191,_0x24d6e7[_0xe946('0x5a')]);return _0x32333d['download'](_0xd6bc11);}})[_0xe946('0x46')](handleError(_0x32333d,null));};