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.Repo
|
||||||
alias Planner.Tasks.Task
|
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_all_tasks, do: Repo.all(Task)
|
||||||
|
|
||||||
def list_unfinished_tasks do
|
def list_unfinished_tasks do
|
||||||
|
@ -34,39 +24,32 @@ defmodule Planner.Tasks do
|
||||||
|> Repo.all()
|
|> Repo.all()
|
||||||
end
|
end
|
||||||
|
|
||||||
def change_task(%Task{} = task) do
|
def get_task!(id), do: Repo.get!(Task, id)
|
||||||
task
|
|
||||||
|> Task.changeset(%{})
|
|
||||||
end
|
|
||||||
|
|
||||||
def cast_finished_at(attrs) do
|
def create_task(attrs \\ %{}) do
|
||||||
attrs
|
%Task{}
|
||||||
|> Map.update("finished_at", nil, fn
|
|> Task.changeset(attrs)
|
||||||
"true" -> NaiveDateTime.utc_now()
|
|> Repo.insert()
|
||||||
"false" -> nil
|
|
||||||
val -> val
|
|
||||||
end)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_task(%Task{} = task, attrs) do
|
def update_task(%Task{} = task, attrs) do
|
||||||
attrs =
|
|
||||||
attrs
|
|
||||||
|> cast_finished_at()
|
|
||||||
|
|
||||||
task
|
task
|
||||||
|> Task.changeset(attrs)
|
|> Task.changeset(attrs)
|
||||||
|> Repo.update()
|
|> Repo.update()
|
||||||
end
|
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
|
def delete_task_by_id!(id) do
|
||||||
get_task!(id)
|
get_task!(id)
|
||||||
|> Repo.delete()
|
|> Repo.delete()
|
||||||
end
|
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
|
def finish_task_by_id!(id) do
|
||||||
get_task!(id)
|
get_task!(id)
|
||||||
|> Task.finish_task()
|
|> Task.finish_task()
|
||||||
|
@ -83,7 +66,7 @@ defmodule Planner.Tasks do
|
||||||
|
|
||||||
case task_id do
|
case task_id do
|
||||||
:error -> :error
|
:error -> :error
|
||||||
_ -> exists?(task_id)
|
_ -> task_exists?(task_id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -13,7 +13,6 @@ defmodule Planner.Tasks.Task do
|
||||||
timestamps()
|
timestamps()
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc false
|
|
||||||
def changeset(task, attrs) do
|
def changeset(task, attrs) do
|
||||||
task
|
task
|
||||||
|> cast(attrs, [:value, :filed_at, :finished_at, :due_at])
|
|> cast(attrs, [:value, :filed_at, :finished_at, :due_at])
|
||||||
|
@ -21,10 +20,10 @@ defmodule Planner.Tasks.Task do
|
||||||
|> validate_length(:value, min: 3)
|
|> validate_length(:value, min: 3)
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc false
|
|
||||||
def finish_task(task) do
|
def finish_task(task) do
|
||||||
now = NaiveDateTime.utc_now() |> NaiveDateTime.truncate(:second)
|
|
||||||
# TODO, this should check if `finished_at` is not nil, first
|
# TODO, this should check if `finished_at` is not nil, first
|
||||||
change(task, finished_at: now)
|
change(task, finished_at: now())
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp now(), do: NaiveDateTime.utc_now() |> NaiveDateTime.truncate(:second)
|
||||||
end
|
end
|
||||||
|
|
|
@ -214,18 +214,6 @@ defmodule TaskEditComponent do
|
||||||
<%= error_tag(f, :due_at) %>
|
<%= error_tag(f, :due_at) %>
|
||||||
</div>
|
</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">
|
<div class="control">
|
||||||
<%= submit("save", class: "button is-dark is-small") %>
|
<%= submit("save", class: "button is-dark is-small") %>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -12,7 +12,7 @@ defmodule PlannerWeb.TasksLive do
|
||||||
{:ok, socket}
|
{:ok, socket}
|
||||||
end
|
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
|
case Tasks.verify_task_id_from_url(task_id) do
|
||||||
true -> {:noreply, assign(socket, :active_task, task_id)}
|
true -> {:noreply, assign(socket, :active_task, task_id)}
|
||||||
_ -> {:noreply, push_patch(socket, to: Routes.tasks_path(socket, :index))}
|
_ -> {:noreply, push_patch(socket, to: Routes.tasks_path(socket, :index))}
|
||||||
|
@ -76,7 +76,7 @@ defmodule PlannerWeb.TasksLive do
|
||||||
end
|
end
|
||||||
|
|
||||||
def handle_event("new-task", %{"task" => task_params}, socket) do
|
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} ->
|
{:ok, task} ->
|
||||||
socket =
|
socket =
|
||||||
socket
|
socket
|
||||||
|
|
|
@ -53,8 +53,8 @@ defmodule PlannerWeb.Router do
|
||||||
pipe_through([:browser, :require_authenticated_user])
|
pipe_through([:browser, :require_authenticated_user])
|
||||||
|
|
||||||
live("/", TasksLive, :index)
|
live("/", TasksLive, :index)
|
||||||
live("/:id", TasksLive, :show)
|
live("/:task_id", TasksLive, :show)
|
||||||
live("/:id/edit", TasksLive, :edit)
|
live("/:task_id/edit", TasksLive, :edit)
|
||||||
|
|
||||||
get("/users/settings", UserSettingsController, :edit)
|
get("/users/settings", UserSettingsController, :edit)
|
||||||
put("/users/settings/update_password", UserSettingsController, :update_password)
|
put("/users/settings/update_password", UserSettingsController, :update_password)
|
||||||
|
|
Loading…
Add table
Reference in a new issue