add auth and payment api

This commit is contained in:
ItsMalma
2025-11-19 23:53:56 +07:00
parent 8f91994f29
commit 7e7a865368
64 changed files with 9067 additions and 2662 deletions

View File

@@ -1,7 +1,9 @@
import { Controller } from "@/common/controller";
import { ormMiddleware } from "@/common/middlewares/orm.middleware";
import { createOrmContextMiddleware } from "@/common/middlewares/create-orm-context.middleware";
import { isAdminMiddleware } from "@/common/middlewares/is-admin.middleware";
import { paginationQuerySchema } from "@/common/schemas";
import type { AbstractFileStorage } from "@/common/services/file-storage/abstract.file-storage";
import type { AbstractJwtService } from "@/common/services/jwt-service/abstract.jwt-service";
import type {
ErrorResponse,
ListResponse,
@@ -22,6 +24,7 @@ import {
import { PackageItinerary } from "@/database/entities/package-itinerary.entity";
import { Package } from "@/database/entities/package.entity";
import { TransportationClass } from "@/database/entities/transportation-class.entity";
import { AdminPermission } from "@/database/enums/admin-permission.enum";
import { PackageItineraryWidgetType } from "@/database/enums/package-itinerary-widget-type.enum";
import { orm } from "@/database/orm";
import type { PackageMapper } from "@/modules/package/package.mapper";
@@ -43,6 +46,7 @@ export class PackageController extends Controller {
public constructor(
private readonly mapper: PackageMapper,
private readonly fileStorage: AbstractFileStorage,
private readonly jwtService: AbstractJwtService,
) {
super();
}
@@ -61,8 +65,8 @@ export class PackageController extends Controller {
const package_ = orm.em.create(Package, {
id: ulid(),
name: body.name,
type: this.mapper.mapPackageType(body.type),
class: this.mapper.mapPackageClass(body.class),
type: body.type,
class: body.class,
thumbnail: thumbnailFile.name,
useFastTrain: body.use_fast_train,
createdAt: new Date(),
@@ -177,8 +181,8 @@ export class PackageController extends Controller {
);
package_.name = body.name;
package_.type = this.mapper.mapPackageType(body.type);
package_.class = this.mapper.mapPackageClass(body.class);
package_.type = body.type;
package_.class = body.class;
package_.useFastTrain = body.use_fast_train;
package_.updatedAt = new Date();
@@ -1330,26 +1334,52 @@ export class PackageController extends Controller {
public buildRouter(): Router {
const router = Router();
router.post("/", ormMiddleware, this.create.bind(this));
router.get("/", ormMiddleware, this.list.bind(this));
router.get("/:id", ormMiddleware, this.view.bind(this));
router.put("/:id", ormMiddleware, this.update.bind(this));
router.delete("/:id", ormMiddleware, this.delete.bind(this));
router.post("/:id/details", ormMiddleware, this.createDetail.bind(this));
router.get("/:id/details", ormMiddleware, this.listDetails.bind(this));
router.post(
"/",
createOrmContextMiddleware,
isAdminMiddleware(this.jwtService, [AdminPermission.createPackage]),
this.create.bind(this),
);
router.get("/", createOrmContextMiddleware, this.list.bind(this));
router.get("/:id", createOrmContextMiddleware, this.view.bind(this));
router.put(
"/:id",
createOrmContextMiddleware,
isAdminMiddleware(this.jwtService, [AdminPermission.updatePackage]),
this.update.bind(this),
);
router.delete(
"/:id",
createOrmContextMiddleware,
isAdminMiddleware(this.jwtService, [AdminPermission.deletePackage]),
this.delete.bind(this),
);
router.post(
"/:id/details",
createOrmContextMiddleware,
isAdminMiddleware(this.jwtService, [AdminPermission.createPackageDetail]),
this.createDetail.bind(this),
);
router.get(
"/:id/details",
createOrmContextMiddleware,
this.listDetails.bind(this),
);
router.get(
"/:package_id/details/:id",
ormMiddleware,
createOrmContextMiddleware,
this.viewDetail.bind(this),
);
router.put(
"/:package_id/details/:id",
ormMiddleware,
createOrmContextMiddleware,
isAdminMiddleware(this.jwtService, [AdminPermission.updatePackageDetail]),
this.updateDetail.bind(this),
);
router.delete(
"/:package_id/details/:id",
ormMiddleware,
createOrmContextMiddleware,
isAdminMiddleware(this.jwtService, [AdminPermission.deletePackageDetail]),
this.deleteDetail.bind(this),
);