diff --git a/api-v3/src/inspection-reports/inspection-deadline-admin.controller.ts b/api-v3/src/inspection-reports/inspection-deadline-admin.controller.ts new file mode 100644 index 0000000..4869ec6 --- /dev/null +++ b/api-v3/src/inspection-reports/inspection-deadline-admin.controller.ts @@ -0,0 +1,53 @@ +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); + } +}