Files
mono/components/notifications/src/workflows/meet-reminder-start/index.ts
T
2026-04-04 00:13:22 +05:00

53 lines
2.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { WorkflowDefinition } from '../../types';
import { WorkflowBuilder } from '../../base/workflow-builder';
import { z } from 'zod';
import { BaseWorkflowPayload } from '../../types';
import { createEmailStep, createInAppStep, createPushStep } from '../../base/defaults';
import { slugify } from '../../utils';
// Схема для meet-reminder-start воркфлоу
export const meetReminderStartPayloadSchema = z.object({
coopShortName: z.string(),
meetId: z.number(),
meetDate: z.string(),
meetTime: z.string(),
timeDescription: z.string(),
meetUrl: z.string(),
details: z.string().optional(),
});
export type IPayload = z.infer<typeof meetReminderStartPayloadSchema>;
export interface IWorkflow extends BaseWorkflowPayload, IPayload {}
export const name = 'Напоминание о предстоящем собрании';
export const id = slugify(name);
export const workflow: WorkflowDefinition<IWorkflow> = WorkflowBuilder
.create<IWorkflow>()
.name(name)
.workflowId(id)
.description('Напоминание пайщикам о скором начале общего собрания')
.payloadSchema(meetReminderStartPayloadSchema)
.tags(['user']) // Для всех пользователей
.addSteps([
createEmailStep(
'meet-reminder-start-email',
'Напоминание о предстоящем общем собрании №{{payload.meetId}} в {{payload.coopShortName}}',
'Уважаемый пайщик!<br><br>Напоминаем, что {{payload.timeDescription}} состоится общее собрание пайщиков №{{payload.meetId}} ({{payload.meetDate}} в {{payload.meetTime}}).<br><br>Для ознакомления с повесткой и подписи уведомления, пожалуйста, перейдите по ссылке:<br><a href="{{payload.meetUrl}}">{{payload.meetUrl}}</a>{{#if payload.details}}<br><br>Дополнительная информация:<div style="white-space:pre-wrap;">{{payload.details}}</div>{{/if}}<br><br>С уважением, Совет {{payload.coopShortName}}.'
),
createInAppStep(
'meet-reminder-start-notification',
'Напоминание о собрании №{{payload.meetId}}',
'Собрание начнется {{payload.timeDescription}}{{#if payload.details}}. {{payload.details}}{{/if}}'
),
createPushStep(
'meet-reminder-start-push',
'Напоминание о собрании №{{payload.meetId}}',
'Собрание начнется {{payload.timeDescription}}'
),
])
.build();