fix: persist specialist_id on event create; 402 commercial without active sub. Fixes EventHub/EventHubBack#61
CI / test (push) Failing after 6m52s
CI / deploy-ift (push) Has been skipped
CI / e2e-ift (push) Has been skipped
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped

This commit is contained in:
2026-07-27 21:17:15 +03:00
parent edb7c20f70
commit 81728301e2
9 changed files with 115 additions and 54 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
-module(logic_calendar).
-include("records.hrl").
-export([create_calendar/3, create_calendar/4, get_calendar/2, list_calendars/1,
-export([create_calendar/3, create_calendar/4, create_calendar/5, get_calendar/2, list_calendars/1,
update_calendar/3, delete_calendar/2, ensure_default_calendar/1]).
-export([can_access/2, can_edit/2, booking_open/1]).
-export([admin_list_all/0, admin_get_by_id/1, admin_update/2, admin_delete/1]).
+5 -22
View File
@@ -8,7 +8,7 @@
%% ============ Управление подписками ============
%% Начать пробный период (вызывается при первой попытке создать commercial календарь)
%% Начать пробный период (явно через POST /v1/subscription action=start_trial)
start_trial(UserId) ->
case core_subscription:get_active_by_user(UserId) of
{ok, _} ->
@@ -103,29 +103,12 @@ check_user_subscription(UserId) ->
{ok, free, free}
end.
%% Проверить, может ли пользователь создавать коммерческие календари
%% Если у пользователя нет активной подписки, но он ещё не использовал пробный период,
%% автоматически запускаем пробный период
%% Проверить, может ли пользователь создавать/апгрейдить commercial-календарь.
%% Только при уже активной подписке/trial; trial стартует явно через start_trial/1.
can_create_commercial_calendar(UserId) ->
case check_user_subscription(UserId) of
{ok, active, _} ->
true;
{ok, free, free} ->
% Пользователь без подписки - проверяем, не использовал ли он уже пробный период
{ok, AllSubs} = core_subscription:list_by_user(UserId),
TrialUsed = lists:any(fun(S) -> S#subscription.trial_used == true orelse S#subscription.plan == trial end, AllSubs),
case TrialUsed of
false ->
% Автоматически запускаем пробный период
case start_trial(UserId) of
{ok, _} -> true;
_ -> false
end;
true ->
false
end;
_ ->
false
{ok, active, _} -> true;
_ -> false
end.
%% ============ Обслуживание ============