File: /var/dev/nowruzgan/rest/api/controllers/user/find.js
module.exports = {
friendlyName: 'FindUser',
description: 'List Users',
inputs: {
limit: {
type: 'number',
defaultsTo: 10
},
skip: {
type: 'number',
defaultsTo: 0
},
filter: {
type: 'string',
required: false
},
// role: {
// type: 'string',
// required: false
// },
sort: {
type: 'string',
defaultsTo: 'updatedAt DESC'
},
},
exits: {
forbidden: { statusCode: 403 },
dbError: { statusCode: 500 },
},
getActions: () => ({'user.find': 'فهرست کاربران'}),
fn: async function (inputs, exits) {
let session = this.req.sessionData;
let action = 'user.find';
await sails.helpers.permit(action, session).intercept('reject', 'forbidden');
sails.log.info({session, action, message: `listing users`});
let critiria = {where: {}};
// if(inputs.role) critiria.where.role = inputs.role;
if(inputs.filter) critiria.where.or = [
{firstName: {contains: inputs.filter}},
{lastName: {contains: inputs.filter}},
];
let sum = await User.count(JSON.parse(JSON.stringify(critiria)))
.intercept(sails.log.interceptError(session, action, `on counting users`, 'dbError'));
if(inputs.limit) critiria.limit = inputs.limit;
if(inputs.skip) critiria.skip = inputs.skip;
let list = await User
.find(critiria)
.populate('roles')
.sort(inputs.sort)
.intercept(sails.log.interceptError(session, action, `on listing users`, 'dbError'));
return exits.success({
sum: sum,
list: list
});
}
};