2d7152b57a16c067429108ea4da333dcfea7e33f
[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 _0xbb06=['ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','reject','save','update','then','error','stack','name','send','index','map','Attachment','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','sort','where','filters','pick','filter','merge','type','VIRTUAL','includeAll','show','params','include','options','catch','clone','find','get','omit','updatedAt','body','file','basename','filename','mimetype','create','findOne','root','server/files/attachments/','join','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv'];(function(_0x1a1a0f,_0x43e154){var _0x2c752c=function(_0x315785){while(--_0x315785){_0x1a1a0f['push'](_0x1a1a0f['shift']());}};_0x2c752c(++_0x43e154);}(_0xbb06,0xa0));var _0x6bb0=function(_0x46361e,_0x243aaf){_0x46361e=_0x46361e-0x0;var _0x14e302=_0xbb06[_0x46361e];return _0x14e302;};'use strict';var emlformat=require(_0x6bb0('0x0'));var rimraf=require(_0x6bb0('0x1'));var zipdir=require(_0x6bb0('0x2'));var jsonpatch=require(_0x6bb0('0x3'));var rp=require(_0x6bb0('0x4'));var moment=require('moment');var BPromise=require(_0x6bb0('0x5'));var Mustache=require(_0x6bb0('0x6'));var util=require('util');var path=require(_0x6bb0('0x7'));var sox=require(_0x6bb0('0x8'));var csv=require(_0x6bb0('0x9'));var ejs=require(_0x6bb0('0xa'));var fs=require('fs');var fs_extra=require(_0x6bb0('0xb'));var _=require(_0x6bb0('0xc'));var squel=require(_0x6bb0('0xd'));var crypto=require(_0x6bb0('0xe'));var jsforce=require(_0x6bb0('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x6bb0('0x9'));var querystring=require(_0x6bb0('0x10'));var Papa=require(_0x6bb0('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6bb0('0x12'))('api');var utils=require(_0x6bb0('0x13'));var config=require(_0x6bb0('0x14'));var licenseUtil=require(_0x6bb0('0x15'));var db=require(_0x6bb0('0x16'))['db'];function respondWithStatusCode(_0x3cef06,_0x3c383e){_0x3c383e=_0x3c383e||0xcc;return function(_0x5eb025){if(_0x5eb025){return _0x3cef06[_0x6bb0('0x17')](_0x3c383e);}return _0x3cef06[_0x6bb0('0x18')](_0x3c383e)[_0x6bb0('0x19')]();};}function respondWithResult(_0x54b620,_0x5c8f2a){_0x5c8f2a=_0x5c8f2a||0xc8;return function(_0x3d1a27){if(_0x3d1a27){return _0x54b620[_0x6bb0('0x18')](_0x5c8f2a)[_0x6bb0('0x1a')](_0x3d1a27);}};}function respondWithFilteredResult(_0x29d897,_0x460982){return function(_0x519d8c){if(_0x519d8c){var _0x490182=typeof _0x460982[_0x6bb0('0x1b')]===_0x6bb0('0x1c')&&typeof _0x460982['limit']===_0x6bb0('0x1c');var _0x53572c=_0x519d8c[_0x6bb0('0x1d')];var _0x4eb8f4=_0x490182?0x0:_0x460982[_0x6bb0('0x1b')];var _0x4da14e=_0x490182?_0x519d8c[_0x6bb0('0x1d')]:_0x460982['offset']+_0x460982[_0x6bb0('0x1e')];var _0x2dd59c;if(_0x4da14e>=_0x53572c){_0x4da14e=_0x53572c;_0x2dd59c=0xc8;}else{_0x2dd59c=0xce;}_0x29d897[_0x6bb0('0x18')](_0x2dd59c);return _0x29d897[_0x6bb0('0x1f')]('Content-Range',_0x4eb8f4+'-'+_0x4da14e+'/'+_0x53572c)[_0x6bb0('0x1a')](_0x519d8c);}return null;};}function patchUpdates(_0x12bafa){return function(_0x382770){try{jsonpatch[_0x6bb0('0x20')](_0x382770,_0x12bafa,!![]);}catch(_0x513df7){return BPromise[_0x6bb0('0x21')](_0x513df7);}return _0x382770[_0x6bb0('0x22')]();};}function saveUpdates(_0x4e3dcb,_0x46344b){return function(_0x332307){if(_0x332307){return _0x332307[_0x6bb0('0x23')](_0x4e3dcb)[_0x6bb0('0x24')](function(_0x30498d){return _0x30498d;});}return null;};}function removeEntity(_0x5c5379,_0x270611){return function(_0x42498a){if(_0x42498a){return _0x42498a['destroy']()[_0x6bb0('0x24')](function(){_0x5c5379[_0x6bb0('0x18')](0xcc)[_0x6bb0('0x19')]();});}};}function handleEntityNotFound(_0x290003,_0x5abe44){return function(_0x23526b){if(!_0x23526b){_0x290003[_0x6bb0('0x17')](0x194);}return _0x23526b;};}function handleError(_0x17e578,_0x18995b){_0x18995b=_0x18995b||0x1f4;return function(_0x34db11){logger[_0x6bb0('0x25')](_0x34db11[_0x6bb0('0x26')]);if(_0x34db11[_0x6bb0('0x27')]){delete _0x34db11[_0x6bb0('0x27')];}_0x17e578[_0x6bb0('0x18')](_0x18995b)[_0x6bb0('0x28')](_0x34db11);};}exports[_0x6bb0('0x29')]=function(_0x2c5294,_0x4061d6){var _0x8ec559={},_0x5afc25={},_0x308cdd={'count':0x0,'rows':[]};var _0x1b662d=_[_0x6bb0('0x2a')](db[_0x6bb0('0x2b')][_0x6bb0('0x2c')],function(_0x4237d9){return{'name':_0x4237d9[_0x6bb0('0x2d')],'type':_0x4237d9['type'][_0x6bb0('0x2e')]};});_0x5afc25[_0x6bb0('0x2f')]=_[_0x6bb0('0x2a')](_0x1b662d,_0x6bb0('0x27'));_0x5afc25[_0x6bb0('0x30')]=_[_0x6bb0('0x31')](_0x2c5294[_0x6bb0('0x30')]);_0x5afc25['filters']=_[_0x6bb0('0x32')](_0x5afc25['model'],_0x5afc25['query']);_0x8ec559['attributes']=_['intersection'](_0x5afc25[_0x6bb0('0x2f')],qs[_0x6bb0('0x33')](_0x2c5294[_0x6bb0('0x30')][_0x6bb0('0x33')]));_0x8ec559[_0x6bb0('0x34')]=_0x8ec559['attributes'][_0x6bb0('0x35')]?_0x8ec559[_0x6bb0('0x34')]:_0x5afc25[_0x6bb0('0x2f')];if(!_0x2c5294['query'][_0x6bb0('0x36')]('nolimit')){_0x8ec559[_0x6bb0('0x1e')]=qs[_0x6bb0('0x1e')](_0x2c5294['query']['limit']);_0x8ec559[_0x6bb0('0x1b')]=qs[_0x6bb0('0x1b')](_0x2c5294[_0x6bb0('0x30')][_0x6bb0('0x1b')]);}_0x8ec559['order']=qs[_0x6bb0('0x37')](_0x2c5294[_0x6bb0('0x30')][_0x6bb0('0x37')]);_0x8ec559[_0x6bb0('0x38')]=qs[_0x6bb0('0x39')](_[_0x6bb0('0x3a')](_0x2c5294['query'],_0x5afc25['filters']),_0x1b662d);if(_0x2c5294[_0x6bb0('0x30')][_0x6bb0('0x3b')]){_0x8ec559['where']=_[_0x6bb0('0x3c')](_0x8ec559[_0x6bb0('0x38')],{'$or':_[_0x6bb0('0x2a')](_0x1b662d,function(_0x3c9350){if(_0x3c9350[_0x6bb0('0x3d')]!==_0x6bb0('0x3e')){var _0x120f20={};_0x120f20[_0x3c9350[_0x6bb0('0x27')]]={'$like':'%'+_0x2c5294[_0x6bb0('0x30')][_0x6bb0('0x3b')]+'%'};return _0x120f20;}})});}_0x8ec559=_[_0x6bb0('0x3c')]({},_0x8ec559,_0x2c5294['options']);var _0x18296b={'where':_0x8ec559[_0x6bb0('0x38')]};return db[_0x6bb0('0x2b')][_0x6bb0('0x1d')](_0x18296b)['then'](function(_0x1e7793){_0x308cdd[_0x6bb0('0x1d')]=_0x1e7793;if(_0x2c5294['query'][_0x6bb0('0x3f')]){_0x8ec559['include']=[{'all':!![]}];}return db[_0x6bb0('0x2b')]['findAll'](_0x8ec559);})['then'](function(_0x281232){_0x308cdd['rows']=_0x281232;return _0x308cdd;})[_0x6bb0('0x24')](respondWithFilteredResult(_0x4061d6,_0x8ec559))['catch'](handleError(_0x4061d6,null));};exports[_0x6bb0('0x40')]=function(_0x181eb0,_0x42154d){var _0x158b27={'raw':!![],'where':{'id':_0x181eb0[_0x6bb0('0x41')]['id']}},_0x2e76fd={};_0x2e76fd[_0x6bb0('0x2f')]=_[_0x6bb0('0x31')](db[_0x6bb0('0x2b')][_0x6bb0('0x2c')]);_0x2e76fd[_0x6bb0('0x30')]=_[_0x6bb0('0x31')](_0x181eb0[_0x6bb0('0x30')]);_0x2e76fd[_0x6bb0('0x39')]=_[_0x6bb0('0x32')](_0x2e76fd['model'],_0x2e76fd['query']);_0x158b27['attributes']=_[_0x6bb0('0x32')](_0x2e76fd[_0x6bb0('0x2f')],qs[_0x6bb0('0x33')](_0x181eb0[_0x6bb0('0x30')][_0x6bb0('0x33')]));_0x158b27[_0x6bb0('0x34')]=_0x158b27[_0x6bb0('0x34')][_0x6bb0('0x35')]?_0x158b27[_0x6bb0('0x34')]:_0x2e76fd[_0x6bb0('0x2f')];if(_0x181eb0[_0x6bb0('0x30')][_0x6bb0('0x3f')]){_0x158b27[_0x6bb0('0x42')]=[{'all':!![]}];}_0x158b27=_['merge']({},_0x158b27,_0x181eb0[_0x6bb0('0x43')]);return db[_0x6bb0('0x2b')]['find'](_0x158b27)[_0x6bb0('0x24')](handleEntityNotFound(_0x42154d,null))[_0x6bb0('0x24')](respondWithResult(_0x42154d,null))[_0x6bb0('0x44')](handleError(_0x42154d,null));};exports[_0x6bb0('0x45')]=function(_0x4bafc0,_0x2d1ca8){var _0x1b924a={'where':{'id':_0x4bafc0[_0x6bb0('0x41')]['id']}},_0x911183={};_0x911183['model']=_['keys'](db['Attachment'][_0x6bb0('0x2c')]);_0x1b924a[_0x6bb0('0x34')]=_[_0x6bb0('0x32')](_0x911183[_0x6bb0('0x2f')],qs[_0x6bb0('0x33')](_0x4bafc0[_0x6bb0('0x30')]['fields']));_0x1b924a['attributes']=_0x1b924a['attributes']['length']?_0x1b924a[_0x6bb0('0x34')]:_0x911183['model'];if(_0x4bafc0[_0x6bb0('0x30')][_0x6bb0('0x3f')]){_0x1b924a[_0x6bb0('0x42')]=[{'all':!![]}];}_0x1b924a=_[_0x6bb0('0x3c')]({},_0x1b924a,_0x4bafc0[_0x6bb0('0x43')]);return db[_0x6bb0('0x2b')][_0x6bb0('0x46')](_0x1b924a)[_0x6bb0('0x24')](handleEntityNotFound(_0x2d1ca8,null))[_0x6bb0('0x24')](function(_0x2ff237){if(_0x2ff237){var _0x4965aa=_0x2ff237[_0x6bb0('0x47')]({'plain':!![]});_0x4965aa=qs[_0x6bb0('0x48')](_0x4965aa,['id','createdAt',_0x6bb0('0x49')]);_0x4bafc0[_0x6bb0('0x4a')]=_['omit'](_0x4bafc0['body'],['id','createdAt',_0x6bb0('0x49')]);return db[_0x6bb0('0x2b')]['create'](_[_0x6bb0('0x3c')](_0x4965aa,_0x4bafc0[_0x6bb0('0x4a')]),{'include':_0x4bafc0[_0x6bb0('0x30')][_0x6bb0('0x3f')]?[{'all':!![]}]:undefined});}})[_0x6bb0('0x24')](respondWithResult(_0x2d1ca8,0xc9))['catch'](handleError(_0x2d1ca8,null));};exports[_0x6bb0('0x23')]=function(_0x6950a4,_0x53771e){if(_0x6950a4[_0x6bb0('0x4a')]['id']){delete _0x6950a4[_0x6bb0('0x4a')]['id'];}return db[_0x6bb0('0x2b')][_0x6bb0('0x46')]({'where':{'id':_0x6950a4[_0x6bb0('0x41')]['id']}})[_0x6bb0('0x24')](handleEntityNotFound(_0x53771e,null))[_0x6bb0('0x24')](saveUpdates(_0x6950a4[_0x6bb0('0x4a')],null))[_0x6bb0('0x24')](respondWithResult(_0x53771e,null))['catch'](handleError(_0x53771e,null));};exports['destroy']=function(_0x57caf0,_0xd1b185){return db['Attachment'][_0x6bb0('0x46')]({'where':{'id':_0x57caf0[_0x6bb0('0x41')]['id']}})[_0x6bb0('0x24')](handleEntityNotFound(_0xd1b185,null))['then'](removeEntity(_0xd1b185,null))['catch'](handleError(_0xd1b185,null));};exports['create']=function(_0x4cb78c,_0x54440d,_0x14df2c){_0x4cb78c[_0x6bb0('0x4a')][_0x6bb0('0x27')]=_0x4cb78c[_0x6bb0('0x4b')]['originalname'];_0x4cb78c[_0x6bb0('0x4a')][_0x6bb0('0x4c')]=_0x4cb78c['file'][_0x6bb0('0x4d')];_0x4cb78c[_0x6bb0('0x4a')][_0x6bb0('0x3d')]=_0x4cb78c['file'][_0x6bb0('0x4e')];return db[_0x6bb0('0x2b')][_0x6bb0('0x4f')](_0x4cb78c['body'])[_0x6bb0('0x24')](respondWithResult(_0x54440d,0xc9))['catch'](handleError(_0x54440d,null));};exports['download']=function(_0x30b3ad,_0x5373fd,_0x1696f3){return db[_0x6bb0('0x2b')][_0x6bb0('0x50')]({'where':{'id':_0x30b3ad['params']['id']},'raw':!![]})[_0x6bb0('0x24')](handleEntityNotFound(_0x5373fd,null))[_0x6bb0('0x24')](function(_0xdcb4e7){if(_0xdcb4e7){var _0x32bc76=_0xdcb4e7['ChatOfflineMessageId']!==null;var _0x55679b=path['join'](config[_0x6bb0('0x51')],_0x6bb0('0x52'));if(_0x32bc76){_0x55679b=path[_0x6bb0('0x53')](_0x55679b,'offline-chat/');}var _0x42c7fe=path[_0x6bb0('0x53')](_0x55679b,_0xdcb4e7['basename']);return _0x5373fd[_0x6bb0('0x54')](_0x42c7fe);}})[_0x6bb0('0x44')](handleError(_0x5373fd,null));};