Skip to content

Commit a3bf83f

Browse files
Wong-ZZangelsl
authored andcommitted
Changed how group overviews are sent to frontend
1 parent e018806 commit a3bf83f

File tree

3 files changed

+29
-17
lines changed

3 files changed

+29
-17
lines changed

lib/cadet/course/groups.ex

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,18 @@ defmodule Cadet.Course.Groups do
33

44
alias Cadet.Course.Group
55
import Cadet.Accounts
6-
7-
# Returns a map where the group names are the key and the value is
8-
# another map with "avengerName" and "id" as the key
9-
def get_group_info() do
6+
7+
def get_group_overviews() do
108
Group
119
|> Repo.all()
12-
|> Enum.reduce(%{}, fn group, map -> Map.put(map, group.name, map_group_info(group))end)
10+
|> Enum.map(fn group_info -> get_group_info(group_info) end)
1311
end
1412

15-
defp map_group_info(group) do
16-
%{"avengerName" => get_user(group.leader_id).name, "id" => group.id}
13+
defp get_group_info(group_info) do
14+
%{
15+
id: group_info.id,
16+
avenger_name: get_user(group_info.leader_id).name,
17+
name: group_info.name
18+
}
1719
end
1820
end
Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
11
defmodule CadetWeb.GroupController do
2-
@moduledoc """
3-
Provides information about groups.
4-
"""
5-
62
use CadetWeb, :controller
3+
74
use PhoenixSwagger
85

9-
import Cadet.Course.Groups
6+
alias Cadet.Course.Groups
107

118
def index(conn, _) do
12-
group_info = get_group_info()
9+
groups = Groups.get_group_overviews()
1310

14-
json(
15-
conn,
16-
group_info
17-
)
11+
render(conn, "index.json", groups: groups)
1812
end
1913
end

lib/cadet_web/views/group_view.ex

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
defmodule CadetWeb.GroupView do
2+
use CadetWeb, :view
3+
use Timex
4+
5+
def render("index.json", %{groups: groups}) do
6+
render_many(groups, CadetWeb.GroupView, "overview.json", as: :group)
7+
end
8+
9+
def render("overview.json", %{group: group}) do
10+
transform_map_for_view(group, %{
11+
id: :id,
12+
groupName: :name,
13+
avengerName: :avenger_name
14+
})
15+
end
16+
end

0 commit comments

Comments
 (0)