forked from Yara724/api
Fix 404 for invalid email of actors, added APIs for client settings
This commit is contained in:
71
src/client/client-panel.controller.ts
Normal file
71
src/client/client-panel.controller.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
Get,
|
||||
Patch,
|
||||
UnauthorizedException,
|
||||
UseGuards,
|
||||
} from "@nestjs/common";
|
||||
import {
|
||||
ApiBearerAuth,
|
||||
ApiOperation,
|
||||
ApiResponse,
|
||||
ApiTags,
|
||||
} from "@nestjs/swagger";
|
||||
import { LocalActorAuthGuard } from "src/auth/guards/actor-local.guard";
|
||||
import { RolesGuard } from "src/auth/guards/role.guard";
|
||||
import { Roles } from "src/decorators/roles.decorator";
|
||||
import { CurrentUser } from "src/decorators/user.decorator";
|
||||
import { RoleEnum } from "src/Types&Enums/role.enum";
|
||||
import { ClientService } from "./client.service";
|
||||
import {
|
||||
ClientSettingsPanelResponseDto,
|
||||
UpdateClientSettingsDto,
|
||||
} from "./dto/client-settings.dto";
|
||||
|
||||
/**
|
||||
* Insurer (company) panel: per-tenant upload limits and CAR_BODY accident window.
|
||||
* Scoped to the JWT `clientKey` — tenants cannot edit other clients.
|
||||
*/
|
||||
@Controller("client-panel")
|
||||
@ApiTags("insurer-client-panel")
|
||||
@ApiBearerAuth()
|
||||
@UseGuards(LocalActorAuthGuard, RolesGuard)
|
||||
@Roles(RoleEnum.COMPANY)
|
||||
export class ClientPanelController {
|
||||
constructor(private readonly clientService: ClientService) {}
|
||||
|
||||
@Get("settings")
|
||||
@ApiOperation({
|
||||
summary: "Get tenant settings (media limits & CAR_BODY accident window)",
|
||||
description:
|
||||
"Returns configured overrides, effective values (with system defaults), and route upload ceilings for the authenticated insurer's client.",
|
||||
})
|
||||
@ApiResponse({ status: 200, type: ClientSettingsPanelResponseDto })
|
||||
async getSettings(
|
||||
@CurrentUser() insurer: { clientKey?: string },
|
||||
): Promise<ClientSettingsPanelResponseDto> {
|
||||
if (!insurer?.clientKey) {
|
||||
throw new UnauthorizedException("Insurer client key is missing.");
|
||||
}
|
||||
return this.clientService.getPanelSettings(insurer.clientKey);
|
||||
}
|
||||
|
||||
@Patch("settings")
|
||||
@ApiOperation({
|
||||
summary: "Update tenant settings",
|
||||
description:
|
||||
"Partial update of `settings.carBodyAccidentMaxAgeDays` and/or `settings.media` (video, image, voice). " +
|
||||
"Only fields sent in the body are changed. `maxBytes` cannot exceed the route ceiling returned by GET.",
|
||||
})
|
||||
@ApiResponse({ status: 200, type: ClientSettingsPanelResponseDto })
|
||||
async updateSettings(
|
||||
@CurrentUser() insurer: { clientKey?: string },
|
||||
@Body() body: UpdateClientSettingsDto,
|
||||
): Promise<ClientSettingsPanelResponseDto> {
|
||||
if (!insurer?.clientKey) {
|
||||
throw new UnauthorizedException("Insurer client key is missing.");
|
||||
}
|
||||
return this.clientService.updatePanelSettings(insurer.clientKey, body);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user