import { api as client } from "../auth/http"; const BASE = "/contract-templates"; export interface ContractTemplateArticle { id: string; title: string; body: string; order: number; } export interface ContractTemplate { id: string; code: | "IMPORT_BULK" | "EXPORT_BULK" | "INTERCITY_BULK" | "IMPORT_CONTAINER" | "EXPORT_CONTAINER" | "INTERCITY_CONTAINER"; name: string; description?: string | null; documentTitle: string; whereasClauses: string[]; articles: ContractTemplateArticle[]; isActive: boolean; createdAt: string; updatedAt: string; } export interface UpdateContractTemplatePayload { name?: string; description?: string; documentTitle?: string; whereasClauses?: string[]; isActive?: boolean; } export interface ArticlePayload { title: string; body: string; position?: number; } export const contractTemplatesService = { async list(): Promise { const { data } = await client.get(BASE); return data; }, async getByCode(code: string): Promise { const { data } = await client.get(`${BASE}/${code}`); return data; }, async update( code: string, payload: UpdateContractTemplatePayload, ): Promise { const { data } = await client.patch( `${BASE}/${code}`, payload, ); return data; }, async preview(code: string): Promise<{ html: string }> { const { data } = await client.post<{ html: string }>( `${BASE}/${code}/preview`, {}, ); return data; }, async addArticle(code: string, payload: ArticlePayload): Promise { const { data } = await client.post( `${BASE}/${code}/articles`, payload, ); return data; }, async updateArticle( code: string, articleId: string, payload: Partial, ): Promise { const { data } = await client.patch( `${BASE}/${code}/articles/${articleId}`, payload, ); return data; }, async removeArticle(code: string, articleId: string): Promise { const { data } = await client.delete( `${BASE}/${code}/articles/${articleId}`, ); return data; }, async replaceArticles( code: string, articles: Array<{ id?: string; title: string; body: string }>, ): Promise { const { data } = await client.put( `${BASE}/${code}/articles`, { articles }, ); return data; }, };