defmodule TechRadarEditor.RadarController do use TechRadarEditor.Web, :controller alias TechRadarEditor.RadarDataPoint def _make_quadrants(radar_data_points) do List.foldl(radar_data_points, %{1 => [], 2 => [], 3 => [], 4 => []}, fn(p, acc) -> %{acc | p.quadrant => acc[p.quadrant] ++ [p]} end ) end # http://www.cultivatehq.com/posts/how-to-set-different-layouts-in-phoenix/ def index(conn, _params) do changeset = RadarDataPoint.changeset(%RadarDataPoint{}) radar_quadrants = _make_quadrants(Repo.all(RadarDataPoint)) render conn, "index.html", radar_quadrants: radar_quadrants, changeset: changeset, layout: {TechRadarEditor.LayoutView, "radar.html"} end def create(conn, %{"radar_data_point" => radar_data_point_params}) do changeset = RadarDataPoint.changeset(%RadarDataPoint{}, radar_data_point_params) case Repo.insert(changeset) do {:ok, _radar_data_point} -> conn |> put_flash(:info, "Radar data point created successfully.") |> redirect(to: radar_path(conn, :index), layout: {TechRadarEditor.LayoutView, "radar.html"} ) {:error, changeset} -> render(conn, "new.html", changeset: changeset) end end def delete(conn, %{"id" => id}) do radar_data_point = Repo.get!(RadarDataPoint, id) Repo.delete!(radar_data_point) conn |> put_flash(:info, "Radar data point " <> id <> " successfully deleted.") |> redirect(to: radar_path(conn, :index), layout: {TechRadarEditor.LayoutView, "radar.html"} ) end end