checkpoint: create/delete working now / existing tests passing / need moar tests
[tech-radar-editor.git] / web / controllers / radar_controller.ex
1 defmodule TechRadarEditor.RadarController do
2 use TechRadarEditor.Web, :controller
3
4 alias TechRadarEditor.RadarDataPoint
5
6 def _make_quadrants(radar_data_points) do
7 List.foldl(radar_data_points,
8 %{1 => [], 2 => [], 3 => [], 4 => []},
9 fn(p, acc) -> %{acc | p.quadrant => acc[p.quadrant] ++ [p]} end
10 )
11 end
12
13 # http://www.cultivatehq.com/posts/how-to-set-different-layouts-in-phoenix/
14 def index(conn, _params) do
15 changeset = RadarDataPoint.changeset(%RadarDataPoint{})
16 radar_quadrants = _make_quadrants(Repo.all(RadarDataPoint))
17 render conn, "index.html", radar_quadrants: radar_quadrants, changeset: changeset, layout: {TechRadarEditor.LayoutView, "radar.html"}
18 end
19
20 def create(conn, %{"radar_data_point" => radar_data_point_params}) do
21 changeset = RadarDataPoint.changeset(%RadarDataPoint{}, radar_data_point_params)
22
23 case Repo.insert(changeset) do
24 {:ok, _radar_data_point} ->
25 conn
26 |> put_flash(:info, "Radar data point created successfully.")
27 |> redirect(to: radar_path(conn, :index), layout: {TechRadarEditor.LayoutView, "radar.html"} )
28 {:error, changeset} ->
29 render(conn, "new.html", changeset: changeset)
30 end
31 end
32
33 def delete(conn, %{"id" => id}) do
34 radar_data_point = Repo.get!(RadarDataPoint, id)
35 Repo.delete!(radar_data_point)
36
37 conn
38 |> put_flash(:info, "Radar data point " <> id <> " successfully deleted.")
39 |> redirect(to: radar_path(conn, :index), layout: {TechRadarEditor.LayoutView, "radar.html"} )
40 end
41
42 end