class Admin::MembersController < OrbitMemberController before_action :set_member_profile, only: [:show, :edit, :update] helper MemberHelper helper OrbitBackendHelper def index @roles = Role.excludes(disabled: true) page_num = params[:page] || 1 @filter = params[:filter] @mq = params[:mq] @new_filter = params[:new_filter] if @filter && params[:clear] @filter.delete(params[:type]) elsif @filter && @new_filter if @filter.has_key?(@new_filter[:type]) && @filter[@new_filter[:type]].include?(@new_filter[:id].to_s) @filter[@new_filter[:type]].delete(@new_filter[:id].to_s) elsif @filter.has_key?(@new_filter[:type]) @filter[@new_filter[:type]] << @new_filter[:id].to_s else @filter.merge!({@new_filter[:type] => [@new_filter[:id].to_s]}) end elsif @new_filter @filter = {@new_filter[:type] => [@new_filter[:id].to_s]} end if @filter.blank? and @mq.blank? render case params[:at] when 'summary' @members=MemberProfile.all.page(page_num).per(12).desc("_id") "index_summary" when 'thumbnail' @members=MemberProfile.all.page(page_num).per(36).desc("_id") "index_thumbnail" else @members=MemberProfile.all.page(page_num).per(10).desc("_id") "index" end elsif @filter.blank? and !@mq.blank? render case params[:at] when 'summary' @members=MemberProfile.all.any_of({:user_id => /#{@mq}/i}, {:first_name => /#{@mq}/i}, {:last_name => /#{@mq}/i}, {:email => /#{@mq}/i}, {:office_tel => /#{@mq}/i}).desc("_id") "index_summary" when 'thumbnail' @members=MemberProfile.all.any_of({:user_id => /#{@mq}/i}, {:first_name => /#{@mq}/i}, {:last_name => /#{@mq}/i}, {:email => /#{@mq}/i}, {:office_tel => /#{@mq}/i}).desc("_id") "index_thumbnail" else @members=MemberProfile.all.any_of({:user_id => /#{@mq}/i}, {:first_name => /#{@mq}/i}, {:last_name => /#{@mq}/i}, {:email => /#{@mq}/i}, {:office_tel => /#{@mq}/i}).desc("_id") "index" end elsif !@filter.blank? and @mq.blank? render case params[:at] when 'summary' @members=MemberProfile.all.any_in(:role_ids=>@filter['role']).page(page_num).per(12).desc("_id") "index_summary" when 'thumbnail' @members=MemberProfile.all.any_in(:role_ids=>@filter['role']).page(page_num).per(36).desc("_id") "index_thumbnail" else @members=MemberProfile.all.any_in(:role_ids=>@filter['role']).page(page_num).per(10).desc("_id") "index" end end end def show @custom_fields = @member.member_profile_field_values rescue nil @plugins = OrbitApp::Plugin::Registration.all rescue nil @ppname = Array.new @plugins.each do |aa| @ppname << [aa.sort_number.to_i, [aa.name, aa.app_name, aa.intro_app_name, aa.front_partial_path]] end @plugin_shows = @ppname.sort.collect {|v| {"name"=>v[1][0],"app_name"=>v[1][1],"intro_app_name"=>v[1][2],"front_partial_path"=>v[1][3]} } if(!params[:show_plugin_profile].nil?) @right_partial = OrbitApp::Plugin::Registration.find_by_app_name(params[:show_plugin_profile]).profile_partial_path rescue 'plugin_summary' @plugin_app_name = OrbitApp::Plugin::Registration.find_by_app_name(params[:show_plugin_profile]).name rescue nil else @right_partial = "plugin_summary" @plugin_app_name = '' end get_info_and_roles end def new @member = MemberProfile.new get_info_and_roles @user = User.new @form_index = 0 end def edit @form_index = 0 get_info_and_roles if @member.user.present? @user = @member.user else @user = User.new(member_profile_id: @member.id) end end def create @member = MemberProfile.new(member_profile_params) @user = User.new(user_params) rescue nil if @member.save @user.member_profile_id = @member.id if !params[:member_profile_field_value].nil? params[:member_profile_field_value].each_with_index do |m,i| @custom_field_value = @member.member_profile_field_values.new(value: m.second["value"], member_profile_field_id: m.second["member_profile_field_id"]) @custom_field_value.save end end @user.save redirect_to admin_members_path else redirect_to new_admin_member_path end end def update respond_to do |format| if @member.update(member_profile_params) if @member.user.present? @member.user.update(user_params) else @user = User.new(user_params) @user.save @user.update_attributes(member_profile_id: @member.id) end format.html { redirect_to admin_members_path, notice: 'Successfully Updated the User' } format.json { head :no_content } else format.html { render action: 'edit' } format.json { render json: @member.errors, status: :unprocessable_entity } end end end def destroy if params[:id].eql?(current_user.id.to_s) flash[:error] = t(:cant_delete_self) else @member_profile = MemberProfile.find(params[:id]) @member_profile.user.delete if @member_profile.user.present? @member_profile.delete end respond_to do |format| format.js end end def unapproved_members @member_query = params[:member_query] page_num = params[:page] || 1 if !@member_query.blank? members = MemberProfile.all.any_of({:user_id => /#{@member_query}/i}, {:first_name => /#{@member_query}/i}, {:last_name => /#{@member_query}/i}, {:email => /#{@member_query}/i}) @members = members.collect do |member| if !member.user.approved member.user end end else @members = User.unapproved.page(page_num).per(12) end end def accept_member user = User.find(params[:member_id]) user.approved = true user.save redirect_to admin_members_unapproved_members_path end def edit_passwd @member = MemberProfile.find(params[:member_id]) @user = @member.user if current_user.id == @user.id redirect_to :action => :index end end def edit_privilege @member = MemberProfile.find(params[:member_id]) @user = @member.user @workgroup = Workgroup.find_by(key: 'admin') if current_user.id == @user.id redirect_to :action => :index end end def edit_order_card @members = MemberProfile.order('created_at DESC') @type = 'card' render 'edit_order' end def edit_order_list @members = MemberProfile.order('created_at DESC') @type = 'list' render 'edit_order' end def update_order_card @error = false if params[:users].present? to_go = params[:users][:position].to_i member_at_position = MemberProfile.find_by(position: to_go + 1) member = MemberProfile.find(params[:users][:id]) if member_at_position if member.position > member_at_position.position member.move_above(member_at_position) else member.move_below(member_at_position) end end end render nothing: true, status: 200 end def update_order_list @error = [] if params[:users].present? params[:users].values.sort.each do |pair| to_go = pair[0].to_i if to_go > 0 member_at_position = MemberProfile.where(position: to_go).first member = MemberProfile.find(pair[1]) if member_at_position && !(member_at_position == member) if member.position > member_at_position.position member.move_above(member_at_position) else member.move_below(member_at_position) end elsif to_go > MemberProfile.count member.move_to_bottom end end end end @members = MemberProfile.asc(:position) end def setting_account if params[:member_id].blank? redirect_to action: :index else @user = MemberProfile.find(params[:member_id]) if current_user.id != @user.id redirect_to action: :index end end end private # Use callbacks to share common setup or constraints between actions. def set_member_profile @member = MemberProfile.find(params[:id]) end # Never trust parameters from the scary internet, only allow the white list through. def member_profile_params params.require(:member_profile).permit! end def user_params params.require(:user).permit! end protected def get_info_and_roles @roles = Role.excludes(disabled: true) @infos = MemberProfileField.excludes(disabled: true) end def set_attribute @class = 'users' end end