54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
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);
|
|
}
|
|
}
|