UNPKG

irest-app-test

Version:

iRest simulator application tooling and scripts - Backend

4 lines 5.01 kB
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:!0}),exports["default"]=void 0;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")),_defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty")),_sqliteConf=_interopRequireDefault(require("../../../sqliteConf")),_responseHelper=_interopRequireDefault(require("../../../helpers/responseHelper")),_messages=require("../../../constants/messages"),_logger=_interopRequireDefault(require("../../../logger")),_httpStatus=_interopRequireDefault(require("../../../constants/httpStatus")),_util=require("../../../helpers/util"),_schemaDefaults=require("../../../constants/schemaDefaults"),_require=require("sequelize"),Op=_require.Op;function list(a,b){var c,d,e,f=_sqliteConf["default"].User,g=_sqliteConf["default"].Company,h=a.query,i=h.limit,j=h.page,k=h.search,l=h.sortBy,m=h.order,n=h.companyId,o=h.departments,p=(0,_util.getHighestRole)(null===a||void 0===a||null===(c=a.body)||void 0===c?void 0:c.roles),q={where:{}};/* eslint-enable global-require */if(q.order=l&&m?[[l,m]]:[["updatedAt","DESC"]],k&&(q.where=(0,_defineProperty2["default"])({},Op.or,[{name:(0,_defineProperty2["default"])({},Op.like,"%".concat(k,"%"))},{email:(0,_defineProperty2["default"])({},Op.like,"%".concat(k,"%"))}])),i&&(q.limit=i,q.offset=j*i),j||(delete q.limit,delete q.offset),q.include=[{model:g,required:!0,attributes:["name"]}],q.attributes=["id","name","role","email","companyId","status"],p===_schemaDefaults.ROLES.SUB_USER||p===_schemaDefaults.ROLES.INDIVIDUAL||null===p)return a.responseMessage=_messages.userListMessage,a.statusCode=_httpStatus["default"].SuccessOK,a.responseData={userList:{count:0,rows:[]}},(0,_responseHelper["default"])(a,b);if(p===_schemaDefaults.ROLES.SUPER_ADMIN&&(q.where.companyId=n),p===_schemaDefaults.ROLES.COMPANY_ADMIN){var r;q.where.companyId=null===a||void 0===a||null===(r=a.body)||void 0===r?void 0:r.companyId}if(p!==_schemaDefaults.ROLES.POC)f.findAndCountAll(q).then(function(c){return _logger["default"].debug(c),Array.prototype.forEach.call(c.rows,function(a){var b,c;a.dataValues.company=null===a||void 0===a||null===(b=a.dataValues)||void 0===b||null===(b=b.Company)||void 0===b?void 0:b.name,null===a||void 0===a||null===(c=a.dataValues)||void 0===c||delete c.Company}),a.statusCode=_httpStatus["default"].SuccessOK,a.responseMessage=_messages.userListMessage,a.responseData={userList:c},(0,_responseHelper["default"])(a,b)})["catch"](function(c){return _logger["default"].error(JSON.stringify(c)),a.statusCode=c.code,a.responseMessage=c.message,(0,_responseHelper["default"])(a,b)});else{var s="";if(o&&1<o.length)o.forEach(function(a,b){var c;s+=" ".concat(0===b?"":"OR"," UserDepartments.departmentId = \"").concat(null===(c=JSON.parse(a))||void 0===c?void 0:c._id,"\"")});else{var t;s="UserDepartments.departmentId = \"".concat(null===(t=o[0])||void 0===t?void 0:t._id,"\"")}// let where = `Users.companyId = "${req?.body?.companyId}"`; // need to check fix on this as this is taking departmentId from token // const countQuery = `SELECT count(DISTINCT(email)) FROM (SELECT Users.name, Users.status, Users.email from "Users" INNER JOIN "UserDepartments" ON Users.id = UserDepartments.userId WHERE ${where})`; var u="SELECT count(DISTINCT(email)) FROM (SELECT Users.name, Users.status, Users.email from \"Users\" INNER JOIN \"UserDepartments\" ON Users.id = UserDepartments.userId WHERE ".concat(s,")");_sqliteConf["default"].sequelize.query(u).then(function(c){var f=(0,_slicedToArray2["default"])(c,1),g=f[0],h=(0,_slicedToArray2["default"])(g,1),i=h[0],j=i["count(DISTINCT(email))"];return 0===j?(a.responseMessage=_messages.userListMessage,a.statusCode=_httpStatus["default"].SuccessOK,a.responseData={userList:{count:j,rows:[]}},(0,_responseHelper["default"])(a,b)):void(s+=l&&m&&"updatedAt"!==l?" ORDER BY ".concat(l," ").concat(m):" ORDER BY Users.updatedAt DESC",d&&(s+=" LIMIT ".concat(parseInt(d,10)," OFFSET ").concat(parseInt(e,10))),_sqliteConf["default"].sequelize.query("SELECT DISTINCT Users.id, Users.name, Users.status, Users.email, Users.role, Users.status from \"Users\" INNER JOIN \"UserDepartments\" ON UserDepartments.userId = Users.id WHERE ".concat(s)).then(function(c){Array.prototype.forEach.call(c[0],function(b){b.company=a.body.company,b.companyId=a.body.companyId});var d=(0,_slicedToArray2["default"])(c,1),e=d[0];return _logger["default"].debug(e),a.responseMessage=_messages.userListMessage,a.statusCode=_httpStatus["default"].SuccessOK,a.responseData={userList:{count:j,rows:e}},(0,_responseHelper["default"])(a,b)})["catch"](function(c){return _logger["default"].error(JSON.stringify(c)),(0,_responseHelper["default"])(a,b)}))})["catch"](function(c){return _logger["default"].error(JSON.stringify(c)),a.responseMessage=_messages.badRequestMessage,(0,_responseHelper["default"])(a,b)})}}var _default=exports["default"]=list;