gamification_plugin_badges_controller.rb 1.89 KB
class GamificationPluginBadgesController < PluginAdminController

  def index
    @gamification_plugin_badges = environment.gamification_plugin_badges.group_by(&:owner)
  end

  def show
    @gamification_plugin_badge = environment.gamification_plugin_badges.find(params[:id])
  end

  def new
    @gamification_plugin_badge = GamificationPlugin::Badge.new
  end

  def edit
    @gamification_plugin_badge = environment.gamification_plugin_badges.find(params[:id])
  end

  def create
    owner_id = params[:gamification_plugin_badge].delete(:owner_id)
    @gamification_plugin_badge = GamificationPlugin::Badge.new(params[:gamification_plugin_badge])
    if owner_id.present?
      @gamification_plugin_badge.owner = environment.organizations.find(owner_id)
    else
      @gamification_plugin_badge.owner = environment
    end

    if @gamification_plugin_badge.save
      session[:notice] = _('Badge was successfully created.')
      redirect_to :action => :index
    else
      render action: "new"
    end
  end

  def update
    @gamification_plugin_badge = environment.gamification_plugin_badges.find(params[:id])

    # FIXME avoid code duplication
    owner_id = params[:gamification_plugin_badge].delete(:owner_id)
    if owner_id.present?
      @gamification_plugin_badge.owner = environment.organizations.find(owner_id)
    else
      @gamification_plugin_badge.owner = environment
    end

    if @gamification_plugin_badge.update_attributes(params[:gamification_plugin_badge])
      session[:notice] = _('Badge was successfully updated.')
      redirect_to :action => :index
    else
      render action: "edit"
    end
  end

  def search_owners
    render :text => prepare_to_token_input(environment.organizations).to_json
  end

  def destroy
    @gamification_plugin_badge = environment.gamification_plugin_badges.find(params[:id])
    @gamification_plugin_badge.destroy

    redirect_to :action => :index
  end
end