Misc cleanup to tasks (#37)
This commit is contained in:
parent
aa02a8441b
commit
177067ab00
5 changed files with 20 additions and 50 deletions
|
@ -4,16 +4,6 @@ defmodule Planner.Tasks do
|
|||
alias Planner.Repo
|
||||
alias Planner.Tasks.Task
|
||||
|
||||
def add_task(attrs) do
|
||||
attrs =
|
||||
attrs
|
||||
|> cast_finished_at()
|
||||
|
||||
%Task{}
|
||||
|> Task.changeset(attrs)
|
||||
|> Repo.insert()
|
||||
end
|
||||
|
||||
def list_all_tasks, do: Repo.all(Task)
|
||||
|
||||
def list_unfinished_tasks do
|
||||
|
@ -34,39 +24,32 @@ defmodule Planner.Tasks do
|
|||
|> Repo.all()
|
||||
end
|
||||
|
||||
def change_task(%Task{} = task) do
|
||||
task
|
||||
|> Task.changeset(%{})
|
||||
end
|
||||
def get_task!(id), do: Repo.get!(Task, id)
|
||||
|
||||
def cast_finished_at(attrs) do
|
||||
attrs
|
||||
|> Map.update("finished_at", nil, fn
|
||||
"true" -> NaiveDateTime.utc_now()
|
||||
"false" -> nil
|
||||
val -> val
|
||||
end)
|
||||
def create_task(attrs \\ %{}) do
|
||||
%Task{}
|
||||
|> Task.changeset(attrs)
|
||||
|> Repo.insert()
|
||||
end
|
||||
|
||||
def update_task(%Task{} = task, attrs) do
|
||||
attrs =
|
||||
attrs
|
||||
|> cast_finished_at()
|
||||
|
||||
task
|
||||
|> Task.changeset(attrs)
|
||||
|> Repo.update()
|
||||
end
|
||||
|
||||
def get_task!(id), do: Repo.get!(Task, id)
|
||||
|
||||
def exists?(id), do: Repo.exists?(from(t in Task, where: t.id == ^id))
|
||||
|
||||
def delete_task_by_id!(id) do
|
||||
get_task!(id)
|
||||
|> Repo.delete()
|
||||
end
|
||||
|
||||
def change_task(%Task{} = task) do
|
||||
task
|
||||
|> Task.changeset(%{})
|
||||
end
|
||||
|
||||
def task_exists?(id), do: Repo.exists?(from(t in Task, where: t.id == ^id))
|
||||
|
||||
def finish_task_by_id!(id) do
|
||||
get_task!(id)
|
||||
|> Task.finish_task()
|
||||
|
@ -83,7 +66,7 @@ defmodule Planner.Tasks do
|
|||
|
||||
case task_id do
|
||||
:error -> :error
|
||||
_ -> exists?(task_id)
|
||||
_ -> task_exists?(task_id)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -13,7 +13,6 @@ defmodule Planner.Tasks.Task do
|
|||
timestamps()
|
||||
end
|
||||
|
||||
@doc false
|
||||
def changeset(task, attrs) do
|
||||
task
|
||||
|> cast(attrs, [:value, :filed_at, :finished_at, :due_at])
|
||||
|
@ -21,10 +20,10 @@ defmodule Planner.Tasks.Task do
|
|||
|> validate_length(:value, min: 3)
|
||||
end
|
||||
|
||||
@doc false
|
||||
def finish_task(task) do
|
||||
now = NaiveDateTime.utc_now() |> NaiveDateTime.truncate(:second)
|
||||
# TODO, this should check if `finished_at` is not nil, first
|
||||
change(task, finished_at: now)
|
||||
change(task, finished_at: now())
|
||||
end
|
||||
|
||||
defp now(), do: NaiveDateTime.utc_now() |> NaiveDateTime.truncate(:second)
|
||||
end
|
||||
|
|
|
@ -214,18 +214,6 @@ defmodule TaskEditComponent do
|
|||
<%= error_tag(f, :due_at) %>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= label(f, :finished_at, class: "label") do %>
|
||||
<%= if(is_nil(@task.finished_at)) do %>
|
||||
<%= checkbox(f, :finished_at) %>
|
||||
<% else %>
|
||||
<%= checkbox(f, :finished_at, checked_value: @task.finished_at) %>
|
||||
<% end %>
|
||||
finished
|
||||
<% end %>
|
||||
<%= error_tag(f, :finished_at) %>
|
||||
</div>
|
||||
|
||||
<div class="control">
|
||||
<%= submit("save", class: "button is-dark is-small") %>
|
||||
</div>
|
||||
|
|
|
@ -12,7 +12,7 @@ defmodule PlannerWeb.TasksLive do
|
|||
{:ok, socket}
|
||||
end
|
||||
|
||||
def handle_params(%{"id" => task_id}, _, socket) do
|
||||
def handle_params(%{"task_id" => task_id}, _, socket) do
|
||||
case Tasks.verify_task_id_from_url(task_id) do
|
||||
true -> {:noreply, assign(socket, :active_task, task_id)}
|
||||
_ -> {:noreply, push_patch(socket, to: Routes.tasks_path(socket, :index))}
|
||||
|
@ -76,7 +76,7 @@ defmodule PlannerWeb.TasksLive do
|
|||
end
|
||||
|
||||
def handle_event("new-task", %{"task" => task_params}, socket) do
|
||||
case Tasks.add_task(task_params) do
|
||||
case Tasks.create_task(task_params) do
|
||||
{:ok, task} ->
|
||||
socket =
|
||||
socket
|
||||
|
|
|
@ -53,8 +53,8 @@ defmodule PlannerWeb.Router do
|
|||
pipe_through([:browser, :require_authenticated_user])
|
||||
|
||||
live("/", TasksLive, :index)
|
||||
live("/:id", TasksLive, :show)
|
||||
live("/:id/edit", TasksLive, :edit)
|
||||
live("/:task_id", TasksLive, :show)
|
||||
live("/:task_id/edit", TasksLive, :edit)
|
||||
|
||||
get("/users/settings", UserSettingsController, :edit)
|
||||
put("/users/settings/update_password", UserSettingsController, :update_password)
|
||||
|
|
Loading…
Add table
Reference in a new issue