Skip to content

Commit 8edecff

Browse files
committed
CCM-11494 Update enum
1 parent 6caf062 commit 8edecff

File tree

3 files changed

+34
-32
lines changed

3 files changed

+34
-32
lines changed

frontend/src/app/message-plans/choose-templates/[routingConfigId]/actions.ts

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,32 @@
22

33
import { z } from 'zod';
44
import { getRoutingConfig, updateRoutingConfig } from '@utils/message-plans';
5-
import { $Channel } from 'nhs-notify-backend-client';
5+
import {
6+
removeTemplatesFromCascadeItem,
7+
updateCascadeGroupOverrides,
8+
} from '@utils/routing-utils';
69
import { redirect } from 'next/navigation';
710

811
export async function removeTemplateFromMessagePlan(formData: FormData) {
912
const parseResult = z
1013
.object({
1114
routingConfigId: z.uuidv4(),
12-
channel: $Channel,
15+
templateId: z.union([
16+
z.string().nonempty(),
17+
z.array(z.string().nonempty()),
18+
]),
1319
})
1420
.safeParse({
1521
routingConfigId: formData.get('routingConfigId'),
16-
channel: formData.get('channel'),
22+
templateId: formData.getAll('templateId'),
1723
});
1824

1925
if (!parseResult.success) {
2026
throw new Error('Invalid form data');
2127
}
2228

23-
const { routingConfigId, channel } = parseResult.data;
29+
const { routingConfigId, templateId } = parseResult.data;
30+
const templateIds = Array.isArray(templateId) ? templateId : [templateId];
2431

2532
const routingConfig = await getRoutingConfig(routingConfigId);
2633

@@ -30,13 +37,16 @@ export async function removeTemplateFromMessagePlan(formData: FormData) {
3037
const { cascade, cascadeGroupOverrides } = routingConfig;
3138

3239
const updatedCascade = cascade.map((cascadeItem) =>
33-
cascadeItem.channel === channel
34-
? { ...cascadeItem, defaultTemplateId: null }
35-
: cascadeItem
40+
removeTemplatesFromCascadeItem(cascadeItem, templateIds)
3641
);
3742

38-
const updatedConfig = {
43+
const updatedCascadeGroupOverrides = updateCascadeGroupOverrides(
3944
cascadeGroupOverrides,
45+
updatedCascade
46+
);
47+
48+
const updatedConfig = {
49+
cascadeGroupOverrides: updatedCascadeGroupOverrides,
4050
cascade: updatedCascade,
4151
};
4252

utils/utils/src/__tests__/enum.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -244,9 +244,9 @@ describe('messagePlanChooseTemplateUrl', () => {
244244

245245
describe('conditional letter templates', () => {
246246
test.each([
247-
['q4', 'choose-large-print-letter-template'],
248-
['x0', 'choose-audio-cd-letter-template'],
249-
['x1', 'choose-braille-letter-template'],
247+
['q4', 'choose-british-sign-language-letter-template'],
248+
['x0', 'choose-standard-english-letter-template'],
249+
['x1', 'choose-large-print-letter-template'],
250250
['language', 'choose-other-language-letter-template'],
251251
] as const)(
252252
'should map LETTER with conditionalType %s to "%s"',
@@ -417,7 +417,7 @@ describe('channelDisplayMappings', () => {
417417
['NHSAPP', 'NHS App'],
418418
['SMS', 'Text message (SMS)'],
419419
['EMAIL', 'Email'],
420-
['LETTER', 'Letter'],
420+
['LETTER', 'Standard English letter'],
421421
] as const)('should map %s to "%s"', (channel, expected) => {
422422
expect(channelDisplayMappings(channel)).toBe(expected);
423423
});

utils/utils/src/enum.ts

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -176,12 +176,20 @@ export const templateTypeToUrlTextMappings = (type: TemplateType) =>
176176
LETTER: 'letter',
177177
})[type];
178178

179-
export const cascadeTemplateTypeToUrlTextMappings = (type: TemplateType) =>
179+
export const cascadeTemplateTypeToUrlTextMappings = (
180+
type: TemplateType,
181+
conditionalType?: LetterType | 'language'
182+
) =>
180183
({
181184
NHS_APP: 'nhs-app',
182185
SMS: 'text-message',
183186
EMAIL: 'email',
184-
LETTER: 'standard-english-letter',
187+
LETTER: {
188+
q4: 'british-sign-language-letter',
189+
x0: 'standard-english-letter',
190+
x1: 'large-print-letter',
191+
language: 'other-language-letter',
192+
}[conditionalType || 'x0'],
185193
})[type];
186194

187195
const creationAction = (type: TemplateType) =>
@@ -200,27 +208,11 @@ export const previewTemplatePages = (type: TemplateType) =>
200208
export const previewSubmittedTemplatePages = (type: TemplateType) =>
201209
`preview-submitted-${templateTypeToUrlTextMappings(type)}-template`;
202210

203-
const conditionalLetterTemplateUrlSegments: Record<
204-
LetterType | 'language',
205-
string
206-
> = {
207-
q4: 'large-print-letter',
208-
x0: 'audio-cd-letter',
209-
x1: 'braille-letter',
210-
language: 'other-language-letter',
211-
};
212-
213211
export const messagePlanChooseTemplateUrl = (
214212
type: TemplateType,
215213
conditionalType?: LetterType | 'language'
216-
) => {
217-
const urlSegment =
218-
type === 'LETTER' && conditionalType
219-
? conditionalLetterTemplateUrlSegments[conditionalType]
220-
: cascadeTemplateTypeToUrlTextMappings(type);
221-
222-
return `choose-${urlSegment}-template`;
223-
};
214+
) =>
215+
`choose-${cascadeTemplateTypeToUrlTextMappings(type, conditionalType)}-template`;
224216

225217
const templateStatusCopyAction = (status: TemplateStatus) =>
226218
(

0 commit comments

Comments
 (0)