import { IHttpClient } from './httpClient'; import { CreateRequestTypeInput, CreateTemplateRouteInput, CreateTemplateRouteStepInput, PatchRequestTypeInput, PatchTemplateRouteInput, PatchTemplateRouteStepInput, RequestType, RequestTypeListSeries, ResolveTemplateRouteQuery, ResolveTemplateRouteResult, TemplateRoute, TemplateRouteStep, UpdateRequestTypeInput, UpdateTemplateRouteInput, UpdateTemplateRouteStepInput } from '../models'; // Тонкий 1:1 фасад над контроллерами бэкенда: // backend/Tnsu.ApprovalRoute.Api/Controllers/{RequestTypes,TemplateRoutes,TemplateRouteSteps}Controller.cs export class ApprovalRouteApi { constructor(private readonly http: IHttpClient) {} public readonly requestTypes = { list: (): Promise => this.http.get('/api/request-types'), get: (id: number): Promise => this.http.get(`/api/request-types/${id}`), create: (body: CreateRequestTypeInput): Promise => this.http.post('/api/request-types', body), update: (id: number, body: UpdateRequestTypeInput): Promise => this.http.put(`/api/request-types/${id}`, body), patch: (id: number, body: PatchRequestTypeInput): Promise => this.http.patch(`/api/request-types/${id}`, body), remove: (id: number): Promise => this.http.delete(`/api/request-types/${id}`), // Серии партиций СРАЗУ по всем типам заявок (см. // ListPartitionService.ListAllAsync) — для дашборда (счётчик партиций) и // портала, которому нужен весь список адресов разом, а не по одному запросу // на тип. listsAll: (): Promise => this.http.get('/api/request-types/lists') }; public readonly templateRoutes = { list: (requestTypeId?: number): Promise => this.http.get('/api/template-routes', { requestTypeId }), get: (id: number): Promise => this.http.get(`/api/template-routes/${id}`), create: (body: CreateTemplateRouteInput): Promise => this.http.post('/api/template-routes', body), update: (id: number, body: UpdateTemplateRouteInput): Promise => this.http.put(`/api/template-routes/${id}`, body), patch: (id: number, body: PatchTemplateRouteInput): Promise => this.http.patch(`/api/template-routes/${id}`, body), remove: (id: number): Promise => this.http.delete(`/api/template-routes/${id}`), // POST, а не GET: запрос несёт список условий (fieldValues) переменной длины — // не ложится на плоскую query-строку (см. IHttpClient.QueryParams). resolve: (query: ResolveTemplateRouteQuery): Promise => this.http.post('/api/template-routes/resolve', query) }; public readonly templateRouteSteps = { list: (routeId: number): Promise => this.http.get(`/api/template-routes/${routeId}/steps`), get: (routeId: number, id: number): Promise => this.http.get(`/api/template-routes/${routeId}/steps/${id}`), create: (routeId: number, body: CreateTemplateRouteStepInput): Promise => this.http.post(`/api/template-routes/${routeId}/steps`, body), update: (routeId: number, id: number, body: UpdateTemplateRouteStepInput): Promise => this.http.put(`/api/template-routes/${routeId}/steps/${id}`, body), patch: (routeId: number, id: number, body: PatchTemplateRouteStepInput): Promise => this.http.patch(`/api/template-routes/${routeId}/steps/${id}`, body), remove: (routeId: number, id: number): Promise => this.http.delete(`/api/template-routes/${routeId}/steps/${id}`) }; }