mirror of
https://github.com/astuto/astuto.git
synced 2025-12-14 18:57:51 +01:00
76 lines
1.7 KiB
Ruby
76 lines
1.7 KiB
Ruby
class PostStatusesController < ApplicationController
|
|
include ApplicationHelper
|
|
|
|
before_action :authenticate_admin, only: [:create, :update, :update_order, :destroy]
|
|
|
|
def index
|
|
post_statuses = PostStatus.order(order: :asc)
|
|
|
|
render json: post_statuses
|
|
end
|
|
|
|
def create
|
|
post_status = PostStatus.new(post_status_params)
|
|
|
|
if post_status.save
|
|
render json: post_status, status: :created
|
|
else
|
|
render json: {
|
|
error: post_status.errors.full_messages
|
|
}, status: :unprocessable_entity
|
|
end
|
|
end
|
|
|
|
def update
|
|
post_status = PostStatus.find(params[:id])
|
|
post_status.assign_attributes(post_status_params)
|
|
|
|
if post_status.save
|
|
render json: post_status, status: :ok
|
|
else
|
|
render json: {
|
|
error: post_status.errors.full_messages
|
|
}, status: :unprocessable_entity
|
|
end
|
|
end
|
|
|
|
def destroy
|
|
post_status = PostStatus.find(params[:id])
|
|
|
|
if post_status.destroy
|
|
render json: {
|
|
id: params[:id]
|
|
}, status: :accepted
|
|
else
|
|
render json: {
|
|
error: post_status.errors.full_messages
|
|
}, status: :unprocessable_entity
|
|
end
|
|
end
|
|
|
|
def update_order
|
|
workflow_output = ReorderWorkflow.new(
|
|
entity_classname: PostStatus,
|
|
column_name: 'order',
|
|
entity_id: params[:post_status][:id],
|
|
src_index: params[:post_status][:src_index],
|
|
dst_index: params[:post_status][:dst_index]
|
|
).run
|
|
|
|
if workflow_output
|
|
render json: workflow_output
|
|
else
|
|
render json: {
|
|
error: t("backend.errors.post_status.update_order")
|
|
}, status: :unprocessable_entity
|
|
end
|
|
end
|
|
|
|
private
|
|
def post_status_params
|
|
params
|
|
.require(:post_status)
|
|
.permit(:name, :color)
|
|
end
|
|
end
|