/
users_controller.rb
99 lines (78 loc) · 2.68 KB
/
users_controller.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
class Admins::UsersController < Admins::ApplicationController
layout 'bootstrap'
before_filter :get_role, :except => [:list_groups]
before_filter :get_list_instructors
cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
caches_action :index,
:cache_path => proc { |c| c.send(:admins_users_path, :role => c.params[:role]) },
:if => proc { |c| c.send(:can_cache_action?) }
def index
@users = User.where(:role_code => @role).includes(:institution).order('last_name DESC').paginate(:page => params[:page], :per_page => 25)
end
def search
@users = User.search(@role, params[:q]).paginate(:page => params[:page], :per_page => 25)
render :action => :index
end
def filter
@users = User.filter(@role, params[:institution_id]).paginate(:page => params[:page], :per_page => 25)
render :action => :index
end
def show
@user = User.find(params[:id])
end
def new
@user = User.new
@user.role_code = @role
@groups = Group.all
end
def edit
@user = User.find(params[:id])
@instructors = User.instructor.to_a
@groups = Group.all
end
def create
@user = User.new(params[:user])
@user.role_code = params[:user][:role_code]
@user.enabled = params[:user][:enabled]
@user.group_code = params[:user][:group_code]
if @user.save
Group.find_by_code(@user.group_code).create_memberships(@user) if @user.has_role?(:student)
redirect_to(admins_user_path(@user, :role => params[:role], :group=>@groups, :anchor => "ui-tabs-1"), :notice => 'User was successfully created.')
else
render :action => "new"
end
end
def update
@user = User.find(params[:id])
@user.role_code = params[:user][:role_code] if params[:user][:role_code]
@user.enabled = params[:user][:enabled] if params[:user][:enabled]
if @user.update_attributes(params[:user])
redirect_to(admins_user_path(@user, :role => params[:role]), :notice => 'User was successfully updated.')
else
render :action => "edit"
end
end
def destroy
@user = User.find(params[:id])
role = @user.role
@user.destroy
redirect_to admins_users_path(:role => role)
end
def states
if params[:state]
country_code = Carmen::country_code(params[:state])
@states = Region.where(:country => country_code).order(:value)
render :partial => 'states'
else
render :nothing => true
end
end
def list_groups
@groups=User.find_by_id(params[:id]).managed_groups
end
private
def get_role
raise ArgumentError, "role parameter is required" unless params[:role]
@role = User::ROLES[params[:role].to_sym]
end
end