| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- const loggerFactory = require('@alias/logger');
- const logger = loggerFactory('growi:routes:apiv3:user-group-relation'); // eslint-disable-line no-unused-vars
- const express = require('express');
- const router = express.Router();
- /**
- * @swagger
- * tags:
- * name: UserGroupRelation
- */
- module.exports = (crowi) => {
- const loginRequiredStrictly = require('../../middleware/login-required')(crowi);
- const adminRequired = require('../../middleware/admin-required')(crowi);
- const { ErrorV3, UserGroup, UserGroupRelation } = crowi.models;
- /**
- * @swagger
- * paths:
- * /user-group-relations:
- * get:
- * tags: [UserGroupRelation]
- * description: Gets the user group relations
- * responses:
- * 200:
- * description: user group relations are fetched
- * content:
- * application/json:
- * schema:
- * properties:
- * userGroupRelations:
- * type: object
- * description: contains arrays user objects related
- */
- router.get('/', loginRequiredStrictly, adminRequired, async(req, res) => {
- // TODO: filter with querystring? or body
- try {
- const page = parseInt(req.query.page) || 1;
- const result = await UserGroup.findUserGroupsWithPagination({ page });
- // const pager = createPager(result.total, result.limit, result.page, result.pages, MAX_PAGE_LIST);
- const userGroups = result.docs;
- const userGroupRelationsObj = {};
- await Promise.all(userGroups.map(async(userGroup) => {
- const userGroupRelations = await UserGroupRelation.findAllRelationForUserGroup(userGroup);
- userGroupRelationsObj[userGroup._id] = userGroupRelations.map((userGroupRelation) => {
- return userGroupRelation.relatedUser;
- });
- }));
- const data = {
- userGroupRelations: userGroupRelationsObj,
- };
- return res.apiv3(data);
- }
- catch (err) {
- const msg = 'Error occurred in fetching user group relations';
- logger.error('Error', err);
- return res.apiv3Err(new ErrorV3(msg, 'user-group-relation-list-fetch-failed'));
- }
- });
- return router;
- };
- // const MAX_PAGE_LIST = 50;
- // function createPager(total, limit, page, pagesCount, maxPageList) {
- // const pager = {
- // page,
- // pagesCount,
- // pages: [],
- // total,
- // previous: null,
- // previousDots: false,
- // next: null,
- // nextDots: false,
- // };
- // if (page > 1) {
- // pager.previous = page - 1;
- // }
- // if (page < pagesCount) {
- // pager.next = page + 1;
- // }
- // let pagerMin = Math.max(1, Math.ceil(page - maxPageList / 2));
- // let pagerMax = Math.min(pagesCount, Math.floor(page + maxPageList / 2));
- // if (pagerMin === 1) {
- // if (MAX_PAGE_LIST < pagesCount) {
- // pagerMax = MAX_PAGE_LIST;
- // }
- // else {
- // pagerMax = pagesCount;
- // }
- // }
- // if (pagerMax === pagesCount) {
- // if ((pagerMax - MAX_PAGE_LIST) < 1) {
- // pagerMin = 1;
- // }
- // else {
- // pagerMin = pagerMax - MAX_PAGE_LIST;
- // }
- // }
- // pager.previousDots = null;
- // if (pagerMin > 1) {
- // pager.previousDots = true;
- // }
- // pager.nextDots = null;
- // if (pagerMax < pagesCount) {
- // pager.nextDots = true;
- // }
- // for (let i = pagerMin; i <= pagerMax; i++) {
- // pager.pages.push(i);
- // }
- // return pager;
- // }
|