Добавлены эндпойнты admin/v1/events и admin/v1/events/:id #20
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
update_event/3, delete_event/2]).
|
||||
-export([validate_event_time/1, validate_event_time/2, get_occurrences/3, cancel_occurrence/3]).
|
||||
-export([materialize_for_booking/3]).
|
||||
-export([list_all_events/1, get_event_admin/1, update_event_admin/2, delete_event_admin/1]).
|
||||
|
||||
%% Создание одиночного события
|
||||
create_event(UserId, CalendarId, Title, StartTime, Duration) ->
|
||||
@@ -234,4 +235,42 @@ merge_materialized(MasterId, Occurrences) ->
|
||||
false -> {virtual, Occ};
|
||||
Event -> {materialized, Event}
|
||||
end
|
||||
end, Occurrences).
|
||||
end, Occurrences).
|
||||
|
||||
%% ─── Административные функции (без проверки прав) ─────────────────
|
||||
|
||||
list_all_events(Filters) ->
|
||||
Events = core_event:list_all(), % возвращает список, а не {ok, List}
|
||||
Filtered = apply_filters(Events, Filters),
|
||||
{ok, Filtered}.
|
||||
|
||||
get_event_admin(EventId) ->
|
||||
core_event:get_by_id(EventId).
|
||||
|
||||
update_event_admin(EventId, Updates) ->
|
||||
case core_event:get_by_id(EventId) of
|
||||
{ok, _Event} ->
|
||||
ValidUpdates = validate_updates(Updates, undefined),
|
||||
core_event:update(EventId, ValidUpdates);
|
||||
Error ->
|
||||
Error
|
||||
end.
|
||||
|
||||
delete_event_admin(EventId) ->
|
||||
core_event:delete(EventId).
|
||||
|
||||
%% Применяет фильтры from/to к списку событий
|
||||
apply_filters(Events, []) ->
|
||||
Events;
|
||||
apply_filters(Events, [{from, From} | Rest]) ->
|
||||
apply_filters(
|
||||
[E || E <- Events, E#event.start_time >= From],
|
||||
Rest
|
||||
);
|
||||
apply_filters(Events, [{to, To} | Rest]) ->
|
||||
apply_filters(
|
||||
[E || E <- Events, E#event.start_time =< To],
|
||||
Rest
|
||||
);
|
||||
apply_filters(Events, [_ | Rest]) ->
|
||||
apply_filters(Events, Rest).
|
||||
Reference in New Issue
Block a user