> For the complete documentation index, see [llms.txt](https://booka.gitbook.io/booka/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://booka.gitbook.io/booka/tekhnicheskaya-dokumentaciya/rekurentnost-zapisei.md).

# Рекурентность записей

```url
/api/v1/Booking/create-appointment-for-web
```

```json5
{
  "name": "Алина",
  "phone": "+996700000000",
  "masterId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "startTime": "10:00",
  "endTime": "11:00",
  "appointmentDate": "2025-03-22",
  "note": "Повторяющаяся запись",
  "serviceIds": ["3fa85f64-5717-4562-b3fc-2c963f66afa6"],
  "isRecurring": true,
  "frequency": 1,
  "interval": 1,
  "count": 5,
  "untilDate": null,
  "weekDays": [1, 3, 5]
}
```

Обьяснение полей и логики:\
frequency - int (частота повторений)

Daily = 1,\
Weekly = 2,\
Monthly = 3,\
Yearly = 4

interval - int (Как часто повторять запись)\
Это — интервал между повторениями, например:

* каждый день
* через день
* каждую неделю
* через 2 недели
* каждый месяц
* через 3 месяца\
  и т.д.

Значение interval работает в связке с frequency, которая определяет единицу измерения.

count - int (Сколько раз повторить запись)

Хочу записаться к мастеру каждую неделю (interval = 1) на 5 недель подряд (count = 5)

* interval — это **“шаг”** между повторениями
* frequency — это **“в чем шагать”**: в днях, неделях или месяцах
* count или untilDate — ограничение по количеству или дате

untilDate - DateOnly(2025-06-01 - До какой даты повторять (альтернатива count))

weekDays - (Только если frequency == 1 (недели)) Дни недели: 0=вс, 1=пн… 6=сб

{% hint style="danger" %}
Если frequency = Daily / Monthly / Yearly → weekDays игнорируется!!!!!
{% endhint %}

Условие остановки (только одно):

* Повторять N раз → count = N, untilDate = null
* До определенной даты → untilDate = "2025-04-15", count = 0

Пример:

Повторять: ✅\
Тип: Еженедельно\
Каждые: 1 неделя\
Дни недели: \[✔️] Пн, \[✔️] Ср\
Повторять 6 раз

```json5
"isRecurring": true,
  "frequency": 2,
  "interval": 1,
  "count": 6,
  "untilDate": null,
  "weekDays": [1, 3]
```

создает 6 записей в итоге

✅ 2025-03-26 (Ср)\
✅ 2025-03-31 (Пн)\
✅ 2025-04-02 (Ср)\
✅ 2025-04-07 (Пн)\
✅ 2025-04-09 (Ср)\
✅ 2025-04-14 (Пн)
