Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion workers/email/src/templates/emails/event/html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
{% set utmParams = 'utm_source=email&utm_medium=transactional&utm_campaign=event' %}

{% set event = events[0].event %}
{% set repetitionId = events[0].repetitionId %}
{% set daysRepeated = events[0].daysRepeated %}
{% set newCount = events[0].newCount %}
{% set usersAffected = events[0].usersAffected %}
Expand Down Expand Up @@ -56,7 +57,11 @@

<tr>
<td style="padding-top: 30px;padding-right: 20px;padding-left: 20px;padding-bottom: 40px;">
{% set eventURL = host ~ '/project/' ~ project._id ~ '/event/' ~ event._id ~ '?' ~ utmParams %}
{% if repetitionId %}
{% set eventURL = host ~ '/project/' ~ project._id ~ '/event/' ~ event._id ~ '/' ~ repetitionId ~ '/overview?' ~ utmParams %}
{% else %}
{% set eventURL = host ~ '/project/' ~ project._id ~ '/event/' ~ event._id ~ '?' ~ utmParams %}
{% endif %}
{% include '../../components/button.twig' with {href: eventURL, label: 'Смотреть детали'} %}
</td>
</tr>
Expand Down
7 changes: 6 additions & 1 deletion workers/email/src/templates/emails/event/text.twig
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{% set event = events[0].event %}
{% set repetitionId = events[0].repetitionId %}
{% set daysRepeated = events[0].daysRepeated %}
{% set newCount = events[0].newCount %}
{% set usersAffected = events[0].usersAffected %}
Expand All @@ -25,7 +26,11 @@

Это событие произошло {{ event.totalCount }} {{ pluralize_ru(event.totalCount, ['раз', 'раза', 'раз']) }} за {{ daysRepeated }} {{ pluralize_ru(daysRepeated, ['день', 'дня', 'дней']) }}.

Смотреть детали: {{ host }}/project/{{ project._id }}/event/{{ event._id }}?{{ utmParams }}
{% if repetitionId %}
Смотреть детали: {{ host }}/project/{{ project._id }}/event/{{ event._id }}/{{ repetitionId }}/overview?{{ utmParams }}
{% else %}
Смотреть детали: {{ host }}/project/{{ project._id }}/event/{{ event._id }}/overview?{{ utmParams }}
{% endif %}

***

Expand Down
1 change: 1 addition & 0 deletions workers/grouper/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,7 @@ export default class GrouperWorker extends Worker {
title: task.payload.title,
groupHash: uniqueEventHash,
isNew: isFirstOccurrence,
repetitionId: repetitionId ? repetitionId.toString() : null,
},
});
}
Expand Down
1 change: 1 addition & 0 deletions workers/grouper/tests/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -734,6 +734,7 @@ describe('GrouperWorker', () => {
title: task.payload.title,
groupHash: expect.any(String),
isNew: true,
repetitionId: null,
},
});

Expand Down
1 change: 1 addition & 0 deletions workers/notifier/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ export default class NotifierWorker extends Worker {
await this.sendToSenderWorker(channelKey, [ {
key: event.groupHash,
count: 1,
repetitionId: event.repetitionId,
} ]);
}
}
Expand Down
6 changes: 6 additions & 0 deletions workers/notifier/types/channel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,12 @@ export interface SenderData {
* Number of events received
*/
count: number;

/**
* ID of the repetition that triggered this notification
* null for first occurrence, ObjectId string for repetitions
*/
repetitionId: string | null;
}

/**
Expand Down
6 changes: 6 additions & 0 deletions workers/notifier/types/notifier-task.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ export type NotifierEvent = Pick<EventData<EventAddons>, 'title'> & {
* Flag to show if event is received first time
*/
isNew: boolean;

/**
* ID of the repetition that triggered this notification
* null for first occurrence, string for repetitions
*/
repetitionId: string | null;
};

/**
Expand Down
3 changes: 2 additions & 1 deletion workers/sender/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -171,13 +171,14 @@ export default abstract class SenderWorker extends Worker {

const eventsData = await Promise.all(
events.map(
async ({ key: groupHash, count }: { key: string; count: number }): Promise<TemplateEventData> => {
async ({ key: groupHash, count, repetitionId }: { key: string; count: number; repetitionId?: string | null }): Promise<TemplateEventData> => {
const [event, daysRepeated] = await this.getEventDataByGroupHash(projectId, groupHash);

return {
event,
newCount: count,
daysRepeated,
repetitionId: repetitionId ?? null,
};
}
)
Expand Down
5 changes: 5 additions & 0 deletions workers/sender/types/template-variables/event.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ export interface TemplateEventData {
* Number of affected users for this event
*/
usersAffected?: number;

/**
* ID of the particular repetition of occurred event
*/
repetitionId?: string | null;
}

/**
Expand Down
Loading