# frozen_string_literal: true
class GuidanceGroupsController < ApplicationController
after_action :verify_authorized
respond_to :html
# GET /guidance_groups/1
def admin_show
@guidance_group = GuidanceGroup.find(params[:id])
authorize @guidance_group
end
# GET add new guidance groups
def admin_new
@guidance_group = GuidanceGroup.new
authorize @guidance_group
end
# POST /guidance_groups
# POST /guidance_groups.json
def admin_create
@guidance_group = GuidanceGroup.new(guidance_group_params)
authorize @guidance_group
@guidance_group.org_id = current_user.org_id
if params[:save_publish]
@guidance_group.published = true
end
if @guidance_group.save
flash.now[:notice] = success_message(@guidance_group, _("created"))
render :admin_edit
else
flash.now[:alert] = failure_message(@guidance_group, _("create"))
render :admin_new
end
end
# GET /guidance_groups/1/edit
def admin_edit
@guidance_group = GuidanceGroup.find(params[:id])
authorize @guidance_group
end
# PUT /guidance_groups/1
def admin_update
@guidance_group = GuidanceGroup.find(params[:id])
authorize @guidance_group
@guidance_group.org_id = current_user.org_id
@guidance_group.published = true unless params[:save_publish].nil?
if @guidance_group.update(guidance_group_params)
flash.now[:notice] = success_message(@guidance_group, _("saved"))
render :admin_edit
else
flash.now[:alert] = failure_message(@guidance_group, _("save"))
render :admin_edit
end
end
# PUT /guidance_groups/1
def admin_update_publish
@guidance_group = GuidanceGroup.find(params[:id])
authorize @guidance_group
@guidance_group.org.id = current_user.org.id
@guidance_group.published = true
if @guidance_group.save
# rubocop:disable Metrics/LineLength
flash[:notice] = _("Your guidance group has been published and is now available to users.")
# rubocop:enable Metrics/LineLength
else
flash[:alert] = failure_message(@guidance_group, _("publish"))
end
redirect_to admin_index_guidance_path
end
# PUT /guidance_groups/1
def admin_update_unpublish
@guidance_group = GuidanceGroup.find(params[:id])
authorize @guidance_group
@guidance_group.org.id = current_user.org.id
@guidance_group.published = false
if @guidance_group.save
# rubocop:disable Metrics/LineLength
flash[:notice] = _("Your guidance group is no longer published and will not be available to users.")
# rubocop:enable Metrics/LineLength
else
flash[:alert] = failure_message(@guidance_group, _("unpublish"))
end
redirect_to admin_index_guidance_path
end
# DELETE /guidance_groups/1
# DELETE /guidance_groups/1.json
def admin_destroy
@guidance_group = GuidanceGroup.find(params[:id])
authorize @guidance_group
if @guidance_group.destroy
flash[:notice] = success_message(@guidance_group, _("deleted"))
else
flash[:alert] = failure_message(@guidance_group, _("delete"))
end
redirect_to admin_index_guidance_path
end
private
def guidance_group_params
params.require(:guidance_group)
.permit(:org_id, :name, :optional_subset, :published, :org, :guidances)
end
end