diff --git a/server/src/sharepoint.ts b/server/src/sharepoint.ts index a5a78e4..a83f20c 100644 --- a/server/src/sharepoint.ts +++ b/server/src/sharepoint.ts @@ -55,7 +55,7 @@ function buildFields(data: IFeedbackSubmission): Record { console.warn(`Неизвестный id компании из формы, отправляю как есть: ${data.company}`); } - return { + const fields: Record = { Title: name ? `${typeLabel} — ${name}` : typeLabel, Company: companyName ?? data.company, Name: name, @@ -65,6 +65,17 @@ function buildFields(data: IFeedbackSubmission): Record { SuggestionText: data.suggestion, WantsFeedback: data.wantsFeedback }; + + // Состав полей зависит от вида обращения и анонимности, поэтому часть строк + // заведомо пустая (у предложения нет описания ситуации, у анонимного — ФИО). + // Такие поля не отправляем вовсе: пустая строка в списке выглядит как + // заполненное значение, а не как «поля не было». WantsFeedback при этом + // остаётся всегда — false здесь осмысленное значение, а не пустота. + return Object.fromEntries( + Object.entries(fields) + .map(([key, value]) => [key, typeof value === 'string' ? value.trim() : value]) + .filter(([, value]) => value !== '') + ); } export async function submitFeedback(data: IFeedbackSubmission): Promise {