mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-27 22:30:55 +00:00
98 lines
2.8 KiB
TypeScript
98 lines
2.8 KiB
TypeScript
import {
|
|
Body,
|
|
Controller,
|
|
Delete,
|
|
Get,
|
|
Param,
|
|
Patch,
|
|
Post,
|
|
Put,
|
|
} from "@nestjs/common";
|
|
import { ApiOperation, ApiTags } from "@nestjs/swagger";
|
|
|
|
import { FreightAdmin } from "../../common/booking-guards";
|
|
import { ContractTemplatesService } from "./contract-templates.service";
|
|
import {
|
|
CreateArticleDto,
|
|
PreviewContractTemplateDto,
|
|
ReplaceArticlesDto,
|
|
UpdateArticleDto,
|
|
UpdateContractTemplateDto,
|
|
} from "./dto/contract-template.dto";
|
|
|
|
@ApiTags("contract-templates")
|
|
@Controller("contract-templates")
|
|
export class ContractTemplatesController {
|
|
constructor(private readonly service: ContractTemplatesService) {}
|
|
|
|
// Reads stay open to authenticated staff (the backoffice Templates tab);
|
|
// writes are admin-guarded like other freight configuration resources.
|
|
|
|
@Get()
|
|
@ApiOperation({ summary: "List the six contract document templates" })
|
|
list() {
|
|
return this.service.list();
|
|
}
|
|
|
|
@Get(":code")
|
|
@ApiOperation({ summary: "Get one contract template by code" })
|
|
getByCode(@Param("code") code: string) {
|
|
return this.service.getByCode(code);
|
|
}
|
|
|
|
@Patch(":code")
|
|
@FreightAdmin()
|
|
@ApiOperation({ summary: "Update template metadata (name, title, recitals, active flag)" })
|
|
update(@Param("code") code: string, @Body() dto: UpdateContractTemplateDto) {
|
|
return this.service.update(code, dto);
|
|
}
|
|
|
|
@Post(":code/preview")
|
|
@ApiOperation({
|
|
summary: "Render an HTML preview of the template against mock contract data",
|
|
})
|
|
preview(
|
|
@Param("code") code: string,
|
|
@Body() dto: PreviewContractTemplateDto,
|
|
) {
|
|
return this.service.preview(code, dto);
|
|
}
|
|
|
|
/* ------------------------- article routes ------------------------- */
|
|
|
|
@Put(":code/articles")
|
|
@FreightAdmin()
|
|
@ApiOperation({ summary: "Replace the full ordered article list (used for reorder)" })
|
|
replaceArticles(@Param("code") code: string, @Body() dto: ReplaceArticlesDto) {
|
|
return this.service.replaceArticles(code, dto.articles);
|
|
}
|
|
|
|
@Post(":code/articles")
|
|
@FreightAdmin()
|
|
@ApiOperation({ summary: "Add an article to the template" })
|
|
addArticle(@Param("code") code: string, @Body() dto: CreateArticleDto) {
|
|
return this.service.addArticle(code, dto);
|
|
}
|
|
|
|
@Patch(":code/articles/:articleId")
|
|
@FreightAdmin()
|
|
@ApiOperation({ summary: "Update an article's title or body" })
|
|
updateArticle(
|
|
@Param("code") code: string,
|
|
@Param("articleId") articleId: string,
|
|
@Body() dto: UpdateArticleDto,
|
|
) {
|
|
return this.service.updateArticle(code, articleId, dto);
|
|
}
|
|
|
|
@Delete(":code/articles/:articleId")
|
|
@FreightAdmin()
|
|
@ApiOperation({ summary: "Remove an article from the template" })
|
|
removeArticle(
|
|
@Param("code") code: string,
|
|
@Param("articleId") articleId: string,
|
|
) {
|
|
return this.service.removeArticle(code, articleId);
|
|
}
|
|
}
|