diff --git a/server/src/sharepoint.ts b/server/src/sharepoint.ts index 2bd255e..9dfce49 100644 --- a/server/src/sharepoint.ts +++ b/server/src/sharepoint.ts @@ -24,8 +24,26 @@ export interface IFeedbackSubmission { suggestion: string; } +// 5 рабочих дней от текущей даты, выходные (сб/вс) не считаются днём срока — +// используется как крайний срок обработки обращения (AppealDueDate). +function addBusinessDays(from: Date, days: number): Date { + const result = new Date(from); + let remaining = days; + + while (remaining > 0) { + result.setDate(result.getDate() + 1); + const dayOfWeek = result.getDay(); // 0 = воскресенье, 6 = суббота + if (dayOfWeek !== 0 && dayOfWeek !== 6) { + remaining -= 1; + } + } + + return result; +} + // Имена полей — internal name столбцов списка SharePoint (Company/Name/Position/ -// Type/IssueDescription/SuggestionText/WantsFeedback), не отображаемые названия. +// Type/IssueDescription/SuggestionText/WantsFeedback/AppealDueDate), не +// отображаемые названия. async function buildFields(data: IFeedbackSubmission): Promise> { const typeLabel = data.kind === 'other' ? data.kindOther : KIND_LABELS[data.kind]; const name = data.isAnonymous ? '' : data.fullName; @@ -38,7 +56,8 @@ async function buildFields(data: IFeedbackSubmission): Promise