Files
subtle-storm/app/controllers/project_admin/workflows/statuses_controller.rb
T
2026-04-25 15:37:07 +03:00

53 lines
1.6 KiB
Ruby

# frozen_string_literal: true
module ProjectAdmin
module Workflows
class StatusesController < ApplicationController
before_action :fetch_workflow
def edit
@form = ProjectAdmin::Workflows::Statuses::BatchUpdate.from_model(@workflow)
end
def batch_update
form_params = params.expect(workflow: { task_statuses_attributes: [%i[id _destroy name color icon]] })
if form_params[:task_statuses_attributes].respond_to?(:keys)
form_params[:task_statuses_attributes] = form_params[:task_statuses_attributes].values
end
@form = ProjectAdmin::Workflows::Statuses::BatchUpdate.new(form_params)
if @form.call(@workflow)
redirect_to(action: :edit_transitions)
else
render :edit
end
end
def edit_transitions
@form = ProjectAdmin::Workflows::Statuses::UpdateTransitions.from_model(@workflow)
end
def batch_update_transitions
form_params = params.expect(workflow: { task_statuses_attributes: [[:id, { next_status_ids: [] }]] })
if form_params[:task_statuses_attributes].respond_to?(:keys)
form_params[:task_statuses_attributes] = form_params[:task_statuses_attributes].values
end
@form = ProjectAdmin::Workflows::Statuses::UpdateTransitions.new(form_params)
if @form.call(@workflow)
redirect_to project_admin_workflow_path(@project, @workflow)
else
render :edit_transitions
end
end
private
def fetch_workflow
@workflow = @project.workflows.find(params[:workflow_id])
end
end
end
end