Skip to content
This repository has been archived by the owner on Aug 11, 2024. It is now read-only.

Commit

Permalink
Merge branch 'master' into feat/917-response-validation
Browse files Browse the repository at this point in the history
  • Loading branch information
wpf500 committed Jan 17, 2024
2 parents cbab324 + 2c55e4d commit 935b4c8
Show file tree
Hide file tree
Showing 15 changed files with 4,740 additions and 226 deletions.
8 changes: 5 additions & 3 deletions src/api/controllers/SegmentController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,12 @@ export class SegmentController {
): Promise<GetSegmentDto> {
// Default to inserting new segment at the bottom
if (data.order === undefined) {
const bottomSegment = await getRepository(Segment).findOne({
order: { order: "DESC" }
const segments = await getRepository(Segment).find({
select: { order: true },
order: { order: "DESC" },
take: 1
});
data.order = bottomSegment ? bottomSegment.order + 1 : 0;
data.order = segments.length > 0 ? segments[0].order + 1 : 0;
}
const segment = await getRepository(Segment).save(data);

Expand Down
11 changes: 11 additions & 0 deletions src/api/transformers/BaseTransformer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -252,4 +252,15 @@ export abstract class BaseTransformer<
}
return result;
}

/**
* Fetch the number of items that match the query
*
* @param caller The contact who is requesting the results
* @param query The query
* @returns The number of items that match the query
*/
async count(caller: Contact | undefined, query: Query): Promise<number> {
return (await this.fetch(caller, { ...query, limit: 0 })).total;
}
}
4 changes: 1 addition & 3 deletions src/apps/members/apps/segments/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,11 +97,9 @@ app.get(
hasNewModel(Segment, "id"),
wrapAsync(async (req, res) => {
const segment = req.model as Segment;
const result = await ContactTransformer.fetch(req.user, {
limit: 0,
segment.contactCount = await ContactTransformer.count(req.user, {
rules: segment.ruleGroup
});
segment.contactCount = result.total;

res.render("email", {
segment,
Expand Down
21 changes: 21 additions & 0 deletions src/core/data/email/confirm-email_ru.yfm
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
subject: Пожалуйста, подтвердите вашу почту
---

<p>Здравствуйте, *|FNAME|*,</p>
<p><br /></p>
<p>
Пожалуйста, подтвердите ваш почтовый адрес — для этого нужно пройти по этой
ссылке:
</p>
<p><br /></p>
<p>
<a href="*|CONFIRMLINK|*"><b>Подтвердить e-mail</b></a>
</p>
<p><br /></p>
<p>
<b>Примечание:</b> если это письмо попало к вам случайно, просто
проигнорируйте его — мы не будем хранить ваши контактные данные.
</p>
<p><br /></p>
<p>Желаем отличного дня</p>
24 changes: 24 additions & 0 deletions src/core/data/email/email-exists-login_ru.yfm
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
subject: У вас уже есть аккаунт
---

<p>Здравствуйте, *|FNAME|*,</p>
<p><br /></p>
<p>
Вы попытались создать новый аккаунт — на всякий случай напоминаем, что вы уже
зарегистрированы с этой почтой.
<b>Вы можете войти в аккаунт по этой ссылке:</b>
</p>
<p><br /></p>
<p>
<a href="*|LOGINLINK|*"><b>Login</b></a>
</p>
<p><br /></p>
<p>Если вы забыли пароль, можете сбросить его на той же странице.</p>
<p><br /></p>
<p>
<b>Примечание:</b> Платёжные данные, которые вы только что ввели, не
сохранились. Вы сможете добавить их, когда зайдёте в ваш кабинет.
</p>
<p><br /></p>
<p>Желаем отличного дня</p>
22 changes: 22 additions & 0 deletions src/core/data/email/email-exists-set-password_ru.yfm
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
subject: У вас уже есть аккаунт
---

<p>Здравствуйте, *|FNAME|*,</p>
<p><br /></p>
<p>
Вы попытались создать новый аккаунт — на всякий случай напоминаем, что вы уже
зарегистрированы с этой почтой.
<b>Пройдите по ссылке, чтобы установить логин и пароль:</b>
</p>
<p><br /></p>
<p>
<a href="*|SPLINK|*"><b>Установить пароль</b></a>
</p>
<p><br /></p>
<p>
<b>Примечание:</b>Платёжные данные, которые вы только что ввели, не
сохранились. Вы сможете добавить их, когда зайдёте в ваш кабинет.
</p>
<p><br /></p>
<p>Желаем отличного дня</p>
21 changes: 21 additions & 0 deletions src/core/data/email/manual-to-automatic_ru.yfm
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
subject: Ваша подписка обновлена
---

<p>Здравствуйте, *|FNAME|*,</p>
<p><br /></p>
<p>
Спасибо, что перешли на автоматические платежи через нашу собственную систему!
</p>
<p><br /></p>
<p>
<b>
Мы начнём автоматически списывать ваш взнос в начале следующего отчётного
периода. Если вы настраивали автоматические платежи через другие системы, не
забудьте их отключить, чтобы не платить дважды.
</b>
</p>
<p><br /></p>
<p>Если у вас есть вопросы, будем рады на них ответить.</p>
<p><br /></p>
<p>Желаем отличного дня</p>
29 changes: 29 additions & 0 deletions src/core/data/email/reset-device_ru.yfm
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
subject: Сброс системы двухфакторной аутентификации
---

<p>Здравствуйте, *|FNAME|*,</p>
<p><br /></p>
<p>
Вы отправили запрос смену устройства для двухфакторной аутентификации. Чтобы
сбросить ваше текущее устройство, воспользуйтесь ссылкой ниже:
</p>
<p><br /></p>
<p>
<a href="*|RPLINK|*"
><strong>Сбросить двухфакторную аутентификацию</strong></a
>
</p>
<p><br /></p>
<p>
<b>Примечание:</b> Если вы не отправляли запрос или сделали это случайно,
просто проигнорируйте это письмо. Если у вас есть вопросы, свяжитесь со
службой поддержки, мы поможем.
</p>
<p><br /></p>
<p>
Ссылка имеет ограниченный срок действия — лучше воспользуйтесь ею прямо
сейчас.
</p>
<p><br /></p>
<p>Желаем отличного дня</p>
21 changes: 21 additions & 0 deletions src/core/data/email/reset-password_ru.yfm
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
subject: Сброс пароля
---

<p>Здравствуйте, *|FNAME|*,</p>
<p><br /></p>
<p>
Вы забыли пароль от вашего аккаунта? Ничего страшного.
<b>Сбросьте пароль и установите новый по этой ссылке:</b>
</p>
<p><br /></p>
<p>
<a href="*|RPLINK|*"><b>Сбросить пароль</b></a>
</p>
<p><br /></p>
<p>
<b>Примечание:</b>Если вы не отправляли запрос или сделали это случайно,
просто проигнорируйте это письмо.
</p>
<p><br /></p>
<p>Желаем отличного дня</p>
4 changes: 3 additions & 1 deletion src/locales/current.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@ import OptionsService from "@core/services/OptionsService";
import localeDe from "./de.json";
import localeDeInformal from "./[email protected]";
import localeEn from "./en.json";
import localeRu from "./ru.json";

const locales = {
de: localeDe,
"de@informal": localeDeInformal,
en: localeEn,
nl: localeEn // CNR only
nl: localeEn, // CNR only
ru: localeRu
} as const;

export type Locale = keyof typeof locales;
Expand Down
Loading

0 comments on commit 935b4c8

Please sign in to comment.