Show related events

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2019-04-12 17:00:55 +02:00
parent a877e4d7d9
commit f5b02ed154
8 changed files with 89 additions and 42 deletions

View File

@@ -49,7 +49,7 @@ defmodule MobilizonWeb.Resolvers.Event do
List related events
"""
def list_related_events(
%Event{tags: tags, organizer_actor: organizer_actor},
%Event{tags: tags, organizer_actor: organizer_actor, uuid: uuid},
_args,
_resolution
) do
@@ -57,12 +57,13 @@ defmodule MobilizonWeb.Resolvers.Event do
events =
[Events.get_actor_upcoming_public_event(organizer_actor, uuid)] |> Enum.filter(&is_map/1)
# We find similar events with the same tags
# uniq_by : It's possible event_from_same_actor is inside events_from_tags
events =
(events ++
Events.find_similar_events_by_common_tags(
tags,
@number_of_related_events - length(events)
@number_of_related_events
))
|> uniq_events()
@@ -85,10 +86,11 @@ defmodule MobilizonWeb.Resolvers.Event do
# We return only @number_of_related_events right now
|> Enum.take(@number_of_related_events)
# TODO: We should use tag_relations to find more events
{:ok, events}
end
defp uniq_events(events), do: Enum.uniq_by(events, fn event -> event.uuid end)
@doc """
Join an event for an actor
"""