feat: добавляет крайний срок обработки обращения (AppealDueDate) #4
@@ -24,8 +24,26 @@ export interface IFeedbackSubmission {
|
|||||||
suggestion: string;
|
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/
|
// Имена полей — internal name столбцов списка SharePoint (Company/Name/Position/
|
||||||
// Type/IssueDescription/SuggestionText/WantsFeedback), не отображаемые названия.
|
// Type/IssueDescription/SuggestionText/WantsFeedback/AppealDueDate), не
|
||||||
|
// отображаемые названия.
|
||||||
async function buildFields(data: IFeedbackSubmission): Promise<Record<string, unknown>> {
|
async function buildFields(data: IFeedbackSubmission): Promise<Record<string, unknown>> {
|
||||||
const typeLabel = data.kind === 'other' ? data.kindOther : KIND_LABELS[data.kind];
|
const typeLabel = data.kind === 'other' ? data.kindOther : KIND_LABELS[data.kind];
|
||||||
const name = data.isAnonymous ? '' : data.fullName;
|
const name = data.isAnonymous ? '' : data.fullName;
|
||||||
@@ -38,7 +56,8 @@ async function buildFields(data: IFeedbackSubmission): Promise<Record<string, un
|
|||||||
Type: typeLabel,
|
Type: typeLabel,
|
||||||
IssueDescription: data.situation,
|
IssueDescription: data.situation,
|
||||||
SuggestionText: data.suggestion,
|
SuggestionText: data.suggestion,
|
||||||
WantsFeedback: data.wantsFeedback
|
WantsFeedback: data.wantsFeedback,
|
||||||
|
AppealDueDate: addBusinessDays(new Date(), 5).toISOString()
|
||||||
};
|
};
|
||||||
|
|
||||||
// Состав полей зависит от вида обращения и анонимности, поэтому часть строк
|
// Состав полей зависит от вида обращения и анонимности, поэтому часть строк
|
||||||
|
|||||||
Reference in New Issue
Block a user