import { inject } from "inversify"; import { controller, httpPost, requestBody } from "inversify-express-utils"; import { HttpStatus } from "../../../common"; import { BaseController } from "../../../common/base/controller"; import { ApiAuth, ApiModel, ApiOperation, ApiResponse, ApiTags } from "../../../common/decorator/swggerDocs"; import { Guard } from "../../../core/middlewares/guard.middleware"; import { ValidationMiddleware } from "../../../core/middlewares/validator.middleware"; import { IOCTYPES } from "../../../IOC/ioc.types"; import { CreateSiteSettingDTO, UpdateSiteSettingDTO } from "../../site-setting/DTO/siteSetting.dto"; import { SiteSettingService } from "../../site-setting/siteSetting.service"; import { PermissionEnum } from "../models/Abstraction/IPermission"; @ApiTags("Admin Site Setting") @controller("/admin/site-setting") export class AdminSiteSettingController extends BaseController { @inject(IOCTYPES.SiteSettingService) private siteSettingService: SiteSettingService; @ApiOperation("create a setting for site") @ApiResponse("successful", HttpStatus.Created) @ApiModel(CreateSiteSettingDTO) @ApiAuth() @httpPost( "", Guard.authAdmin(), Guard.checkAdminPermissions([PermissionEnum.ADMIN]), ValidationMiddleware.validateInput(CreateSiteSettingDTO), ) public async createSiteSetting(@requestBody() createDto: CreateSiteSettingDTO) { const data = await this.siteSettingService.createSiteSetting(createDto); return this.response(data, HttpStatus.Created); } //==> @ApiOperation("update a setting for site") @ApiResponse("successful", HttpStatus.Created) @ApiModel(UpdateSiteSettingDTO) @ApiAuth() @httpPost( "/update", Guard.authAdmin(), Guard.checkAdminPermissions([PermissionEnum.ADMIN]), ValidationMiddleware.validateInput(UpdateSiteSettingDTO), ) public async updateSiteSetting(@requestBody() updateDto: UpdateSiteSettingDTO) { const data = await this.siteSettingService.updateSiteSetting(updateDto); return this.response(data, HttpStatus.Created); } }