2018-08-27 17:46:33 -05:00
|
|
|
class TaskItemsController < ApplicationController
|
|
|
|
|
|
|
|
before_action :ensure_valid_user
|
|
|
|
before_action :set_task_list
|
2018-09-07 21:56:13 -05:00
|
|
|
before_action :set_task_item, only: [:update]
|
2018-08-27 17:46:33 -05:00
|
|
|
|
|
|
|
def create
|
|
|
|
@task_item = TaskItem.new(task_item_params)
|
|
|
|
@task_item.task_list = @task_list
|
|
|
|
|
|
|
|
if @task_item.save
|
2022-02-02 21:12:27 -06:00
|
|
|
TaskChannel.update_task_list(@task_list)
|
2020-08-11 11:05:19 -05:00
|
|
|
render json: TaskItemSerializer.for(@task_item), status: :created, location: [@task_list, @task_item]
|
2018-08-27 17:46:33 -05:00
|
|
|
else
|
|
|
|
render json: @task_item.errors, status: :unprocessable_entity
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def update
|
|
|
|
if @task_item.update(task_item_params)
|
2022-02-02 21:12:27 -06:00
|
|
|
TaskChannel.update_task_list(@task_list)
|
2020-08-11 11:05:19 -05:00
|
|
|
render json: TaskItemSerializer.for(@task_item), status: :ok, location: [@task_list, @task_item]
|
2018-08-27 17:46:33 -05:00
|
|
|
else
|
|
|
|
render json: @task_item.errors, status: :unprocessable_entity
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def destroy
|
2018-09-07 21:56:13 -05:00
|
|
|
ids = Array.wrap(params[:id]) + Array.wrap(params[:ids])
|
|
|
|
TaskItem.transaction do
|
|
|
|
@task_items = @task_list.task_items.find(ids)
|
|
|
|
@task_items.each { |i| i.destroy }
|
|
|
|
end
|
|
|
|
|
2022-02-02 21:12:27 -06:00
|
|
|
TaskChannel.update_task_list(@task_list)
|
|
|
|
|
2018-09-07 21:56:13 -05:00
|
|
|
head :no_content
|
|
|
|
end
|
|
|
|
|
|
|
|
def complete
|
|
|
|
ids = Array.wrap(params[:id]) + Array.wrap(params[:ids])
|
|
|
|
new_status = !params[:invert].present?
|
|
|
|
TaskItem.transaction do
|
|
|
|
@task_items = @task_list.task_items.find(ids)
|
|
|
|
@task_items.each { |i| i.update_attribute(:completed, new_status) }
|
|
|
|
end
|
|
|
|
|
2022-02-02 21:12:27 -06:00
|
|
|
TaskChannel.update_task_list(@task_list)
|
|
|
|
|
2018-08-27 17:46:33 -05:00
|
|
|
head :no_content
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def task_item_params
|
2018-09-06 18:16:13 -05:00
|
|
|
params.require(:task_item).permit(:name, :quantity, :completed)
|
2018-08-27 17:46:33 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def set_task_list
|
|
|
|
@task_list = TaskList.find(params[:task_list_id])
|
|
|
|
ensure_owner(@task_list)
|
|
|
|
end
|
|
|
|
|
|
|
|
def set_task_item
|
|
|
|
@task_item = @task_list.task_items.find(params[:id])
|
|
|
|
end
|
|
|
|
|
2022-02-02 21:12:27 -06:00
|
|
|
end
|