Feature/request manage server load (#22)
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz> Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/22
This commit was merged in pull request #22.
This commit is contained in:
@@ -3,6 +3,11 @@ import {
|
||||
CreateRequestTypeInput,
|
||||
CreateTemplateRouteInput,
|
||||
CreateTemplateRouteStepInput,
|
||||
ManagedApprovalRow,
|
||||
ManagedApprovalRowApi,
|
||||
ManagedRequestMatrix,
|
||||
ManagedRequestMatrixApi,
|
||||
ManagedRequestPage,
|
||||
PatchRequestTypeInput,
|
||||
PatchTemplateRouteInput,
|
||||
PatchTemplateRouteStepInput,
|
||||
@@ -15,8 +20,26 @@ import {
|
||||
TemplateRouteStep,
|
||||
UpdateRequestTypeInput,
|
||||
UpdateTemplateRouteInput,
|
||||
UpdateTemplateRouteStepInput
|
||||
UpdateTemplateRouteStepInput,
|
||||
UserApprovalRow,
|
||||
UserApprovalRowApi
|
||||
} from '../models';
|
||||
import { formatDateIso } from '../utils/date';
|
||||
|
||||
// Api-формы (dateIso, без отформатированного date) → формы, которыми пользуются
|
||||
// экраны (ManageRequestsScreen/ManageByUserScreen) — см. requestManage.ts/
|
||||
// ManagedApprovalRowApi. Единственная разница — производное поле date.
|
||||
function toApprovalRow(r: ManagedApprovalRowApi): ManagedApprovalRow {
|
||||
return { ...r, date: formatDateIso(r.dateIso) };
|
||||
}
|
||||
|
||||
function toMatrix(m: ManagedRequestMatrixApi): ManagedRequestMatrix {
|
||||
return { ...m, rows: m.rows.map(toApprovalRow) };
|
||||
}
|
||||
|
||||
function toUserApprovalRow(r: UserApprovalRowApi): UserApprovalRow {
|
||||
return { ...r, date: formatDateIso(r.dateIso) };
|
||||
}
|
||||
|
||||
// Тонкий 1:1 фасад над контроллерами бэкенда:
|
||||
// backend/Tnsu.ApprovalRoute.Api/Controllers/{RequestTypes,TemplateRoutes,TemplateRouteSteps}Controller.cs
|
||||
@@ -107,4 +130,29 @@ export class ApprovalRouteApi {
|
||||
listByExecutorEmail: (executorEmail: string): Promise<TemplateRouteStep[]> =>
|
||||
this.http.get<TemplateRouteStep[]>('/api/template-route-steps', { executorEmail })
|
||||
};
|
||||
|
||||
// Чтение заявок и маршрутов согласования от имени ПРИЛОЖЕНИЯ (см.
|
||||
// backend/Tnsu.ApprovalRoute.Application/RequestManage/RequestManageService.cs) —
|
||||
// в отличие от остальных групп выше, это НЕ CRUD над сущностями самого API:
|
||||
// данные по-прежнему живут в списках SharePoint, которыми управляет
|
||||
// request-portal (см. requestManageService.ts), только читаются они теперь
|
||||
// не PnP-клиентом текущего пользователя, а этим бэкендом, поэтому видимость
|
||||
// заявок не зависит от прав администратора на списки SharePoint.
|
||||
public readonly requestManage = {
|
||||
search: (requestTypeId: number, query: string, page: number, pageSize = 20): Promise<ManagedRequestPage> =>
|
||||
this.http.get<ManagedRequestPage>('/api/request-manage/search', { requestTypeId, query, page, pageSize }),
|
||||
|
||||
matrix: (requestTypeId: number, listId: string, requestId: number): Promise<ManagedRequestMatrix> =>
|
||||
this.http
|
||||
.get<ManagedRequestMatrixApi>('/api/request-manage/matrix', { requestTypeId, listId, requestId })
|
||||
.then(toMatrix),
|
||||
|
||||
byApprover: (approverEmail: string, activeStatuses: string[]): Promise<UserApprovalRow[]> =>
|
||||
this.http
|
||||
.get<UserApprovalRowApi[]>('/api/request-manage/by-approver', {
|
||||
approverEmail,
|
||||
statuses: activeStatuses.join(',')
|
||||
})
|
||||
.then(rows => rows.map(toUserApprovalRow))
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user