mission count visbility by permissions
This commit is contained in:
parent
03e92ea0d4
commit
0220f468ac
2 changed files with 27 additions and 4 deletions
|
@ -1,9 +1,11 @@
|
|||
import { Request, Response } from "express";
|
||||
import MissionService from "../../../service/operation/missionService";
|
||||
import MissionFactory from "../../../factory/admin/operation/mission";
|
||||
import { DeleteMissionCommand, SyncMissionCommand } from "../../../command/operation/mission/missionCommand";
|
||||
import { DeleteMissionCommand } from "../../../command/operation/mission/missionCommand";
|
||||
import MissionCommandHandler from "../../../command/operation/mission/missionCommandHandler";
|
||||
import SocketServer from "../../../websocket";
|
||||
import PermissionHelper from "../../../helpers/permissionHelper";
|
||||
import moment from "moment";
|
||||
|
||||
/**
|
||||
* @description get all missions
|
||||
|
@ -16,7 +18,15 @@ export async function getAllMissions(req: Request, res: Response): Promise<any>
|
|||
let count = parseInt((req.query.count as string) ?? "25");
|
||||
let noLimit = req.query.noLimit === "true";
|
||||
|
||||
let [missions, total] = await MissionService.getAll({ offset, count, noLimit });
|
||||
let maxVisInDays = PermissionHelper.canValue(req.permissions, "maxVisInDays", true);
|
||||
let maxVisByMissions = PermissionHelper.canValue(req.permissions, "maxVisByMissions", true);
|
||||
|
||||
let [missions, total] = await MissionService.getAll({
|
||||
offset: maxVisByMissions != "" && parseInt(maxVisByMissions) <= 25 ? 0 : offset,
|
||||
count: maxVisByMissions != "" ? Math.min(parseInt(maxVisByMissions), (offset + 1) * count) : count,
|
||||
noLimit: maxVisByMissions != "" ? false : noLimit,
|
||||
laterThan: maxVisInDays != "" ? moment().subtract(parseInt(maxVisInDays), "days").toDate() : undefined,
|
||||
});
|
||||
|
||||
res.json({
|
||||
missions: MissionFactory.mapToBaseShort(missions),
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { Brackets, IsNull, MoreThanOrEqual } from "typeorm";
|
||||
import { dataSource } from "../../data-source";
|
||||
import { mission } from "../../entity/operation/mission";
|
||||
import DatabaseActionException from "../../exceptions/databaseActionException";
|
||||
|
@ -11,20 +12,32 @@ export default abstract class MissionService {
|
|||
offset = 0,
|
||||
count = 25,
|
||||
noLimit = false,
|
||||
laterThan = undefined,
|
||||
}: {
|
||||
offset?: number;
|
||||
count?: number;
|
||||
noLimit?: boolean;
|
||||
laterThan?: Date;
|
||||
}): Promise<[Array<mission>, number]> {
|
||||
let query = dataSource.getRepository(mission).createQueryBuilder("mission");
|
||||
|
||||
if (laterThan != undefined) {
|
||||
query = query
|
||||
.where(
|
||||
new Brackets((qb) => {
|
||||
qb.where({ mission_start: IsNull() }).andWhere({ createdAt: MoreThanOrEqual(laterThan) });
|
||||
})
|
||||
)
|
||||
.orWhere({ mission_start: MoreThanOrEqual(laterThan) });
|
||||
}
|
||||
|
||||
if (!noLimit) {
|
||||
query = query.offset(offset).limit(count);
|
||||
}
|
||||
|
||||
return await query
|
||||
.orderBy("mission.mission_start")
|
||||
.addOrderBy("mission.createdAt")
|
||||
.orderBy("mission.mission_start", "DESC")
|
||||
.addOrderBy("mission.createdAt", "DESC")
|
||||
.getManyAndCount()
|
||||
.then((res) => {
|
||||
return res;
|
||||
|
|
Loading…
Add table
Reference in a new issue