import { Body, Controller, Delete, Get, Param, Put, Req } from '@nestjs/common'; import { CurrentAuth } from '../auth/decorators/current-auth.decorator'; import { RequirePermissions } from '../authorization/decorators/require-permissions.decorator'; import type { AuthPrincipal, RequestWithContext } from '../common/http/request-context'; import { UpdateDeadlinePolicyDto, UpsertBusinessCalendarDayDto } from './dto/update-deadline-policy.dto'; import { InspectionDeadlineAdminService } from './inspection-deadline-admin.service'; @Controller('inspection-deadlines') export class InspectionDeadlineAdminController { constructor(private readonly deadlines: InspectionDeadlineAdminService) {} @Get('policy') @RequirePermissions('inspections.read') policy() { return this.deadlines.policy(); } @Put('policy') @RequirePermissions('inspections.manage') updatePolicy( @Body() dto: UpdateDeadlinePolicyDto, @CurrentAuth() principal: AuthPrincipal, @Req() request: RequestWithContext, ) { return this.deadlines.updatePolicy(dto, principal, request); } @Get('calendar') @RequirePermissions('inspections.read') calendar() { return this.deadlines.calendar(); } @Put('calendar') @RequirePermissions('inspections.manage') upsertDay( @Body() dto: UpsertBusinessCalendarDayDto, @CurrentAuth() principal: AuthPrincipal, @Req() request: RequestWithContext, ) { return this.deadlines.upsertCalendarDay(dto, principal, request); } @Delete('calendar/:date') @RequirePermissions('inspections.manage') removeDay( @Param('date') date: string, @CurrentAuth() principal: AuthPrincipal, @Req() request: RequestWithContext, ) { return this.deadlines.removeCalendarDay(date, principal, request); } }