add list all flight class and transportation class

This commit is contained in:
ItsMalma
2025-11-29 11:47:55 +07:00
parent caa463c68f
commit 1fd90fdeab
2 changed files with 74 additions and 0 deletions

View File

@@ -397,6 +397,38 @@ export class FlightController extends Controller {
} satisfies SingleResponse<FlightClassResponse>);
}
async listAllClasses(req: Request, res: Response) {
const parseQueryResult = paginationQuerySchema.safeParse(req.query);
if (!parseQueryResult.success) {
return this.handleZodError(parseQueryResult.error, res, "query");
}
const query = parseQueryResult.data;
const count = await orm.em.count(FlightClass);
const classes = await orm.em.find(
FlightClass,
{},
{
limit: query.per_page,
offset: (query.page - 1) * query.per_page,
orderBy: { createdAt: "DESC" },
populate: ["*"],
},
);
return res.status(200).json({
data: classes.map(this.mapper.mapClassEntityToResponse.bind(this.mapper)),
errors: null,
meta: {
page: query.page,
per_page: query.per_page,
total_pages: Math.ceil(count / query.per_page),
total_items: count,
},
} satisfies ListResponse<FlightClassResponse>);
}
async listClasses(req: Request, res: Response) {
const parseQueryResult = paginationQuerySchema.safeParse(req.query);
if (!parseQueryResult.success) {
@@ -654,6 +686,11 @@ export class FlightController extends Controller {
isAdminMiddleware(this.jwtService, [AdminPermission.createFlightClass]),
this.createClass.bind(this),
);
router.get(
"/classes",
createOrmContextMiddleware,
this.listAllClasses.bind(this),
);
router.get(
"/:id/classes",
createOrmContextMiddleware,

View File

@@ -268,6 +268,38 @@ export class TransportationController extends Controller {
} satisfies SingleResponse<TransportationClassResponse>);
}
async listAllClasses(req: Request, res: Response) {
const parseQueryResult = paginationQuerySchema.safeParse(req.query);
if (!parseQueryResult.success) {
return this.handleZodError(parseQueryResult.error, res, "query");
}
const query = parseQueryResult.data;
const count = await orm.em.count(TransportationClass);
const classes = await orm.em.find(
TransportationClass,
{},
{
limit: query.per_page,
offset: (query.page - 1) * query.per_page,
orderBy: { createdAt: "DESC" },
populate: ["*"],
},
);
return res.status(200).json({
data: classes.map(this.mapper.mapClassEntityToResponse.bind(this.mapper)),
errors: null,
meta: {
page: query.page,
per_page: query.per_page,
total_pages: Math.ceil(count / query.per_page),
total_items: count,
},
} satisfies ListResponse<TransportationClassResponse>);
}
async listClasses(req: Request, res: Response) {
const parseQueryResult = paginationQuerySchema.safeParse(req.query);
if (!parseQueryResult.success) {
@@ -564,6 +596,11 @@ export class TransportationController extends Controller {
]),
this.createClass.bind(this),
);
router.get(
"/classes",
createOrmContextMiddleware,
this.listAllClasses.bind(this),
);
router.get(
"/:id/classes",
createOrmContextMiddleware,