orbit4-5/app/controllers/admin/members_controller.rb

182 lines
5.0 KiB
Ruby
Raw Normal View History

class Admin::MembersController < OrbitMemberController
before_action :set_member_profile, only: [:show, :edit, :update]
2014-05-09 06:03:55 +00:00
def index
2014-05-26 10:52:15 +00:00
@roles = Role.where(disabled: false).asc("_id")
2014-05-09 06:03:55 +00:00
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
2014-05-09 06:03:55 +00:00
def show
end
def new
@member = MemberProfile.new
get_info_and_roles
@user = User.new
2014-05-26 10:52:15 +00:00
@form_index = 0
end
def edit
2014-05-26 10:52:15 +00:00
@form_index = 0
2014-05-27 10:37:59 +00:00
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)
if @member.save
@user.member_profile_id = @member.id
@user.save
redirect_to admin_members_path
else
redirect_to new_admin_member_path
end
end
def update
2014-05-09 06:03:55 +00:00
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
2014-05-09 06:03:55 +00:00
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
2014-05-09 06:03:55 +00:00
end
render action: "index"
end
2014-05-09 06:03:55 +00:00
2014-05-27 10:37:59 +00:00
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
2014-05-09 06:03:55 +00:00
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
2014-05-09 06:03:55 +00:00
protected
def get_info_and_roles
@roles = Role.excludes('disabled' => true)
end
2014-05-09 06:03:55 +00:00
def set_attribute
@class = 'users'
end
end