class Ajax::GroupController < ApplicationController rescue_from(ActionController::ParameterMissing) do |param_miss_ex| @status = :parameter_error @message = I18n.t('messages.parameter_error', parameter: param_miss_ex.param.capitalize) @success = false render partial: "ajax/shared/status" end def create @status = :err @success = false unless user_signed_in? @status = :noauth @message = I18n.t('messages.noauth') return end begin params.require :name rescue ActionController::ParameterMissing @status = :toolong @message = I18n.t('messages.group.create.noname') return end params.require :user begin target_user = User.find_by_screen_name(params[:user]) group = Group.create! user: current_user, display_name: params[:name] rescue ActiveRecord::RecordInvalid @status = :toolong @message = I18n.t('messages.group.create.toolong') return rescue ActiveRecord::RecordNotFound @status = :notfound @message = I18n.t('messages.group.create.notfound') return rescue ActiveRecord::RecordNotUnique @status = :exists @message = I18n.t('messages.group.create.exists') return end @status = :okay @success = true @message = I18n.t('messages.group.create.okay') @render = render_to_string(partial: 'user/modal_group_item', locals: { group: group, user: target_user }) end def destroy @status = :err @success = false unless user_signed_in? @status = :noauth @message = I18n.t('messages.noauth') return end params.require :group begin Group.where(user: current_user, name: params[:group]).first.destroy! rescue ActiveRecord::RecordNotFound @status = :notfound @message = I18n.t('messages.group.destroy.notfound') return end @status = :okay @success = true @message = I18n.t('messages.group.destroy.okay') end def membership @status = :err @success = false unless user_signed_in? @status = :noauth @message = I18n.t('messages.noauth') return end params.require :user params.require :group params.require :add add = params[:add] == 'true' begin group = current_user.groups.find_by_name(params[:group]) rescue ActiveRecord::RecordNotFound @status = :notfound @message = I18n.t('messages.group.membership.notfound') return end target_user = User.find_by_screen_name(params[:user]) if add group.add_member target_user if group.members.find_by_user_id(target_user.id).nil? @checked = true @message = I18n.t('messages.group.membership.add') else group.remove_member target_user unless group.members.find_by_user_id(target_user.id).nil? @checked = false @message = I18n.t('messages.group.membership.remove') end @status = :okay @success = true end end