/
user_leave_reports_controller.rb
85 lines (67 loc) · 2.29 KB
/
user_leave_reports_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
class UserLeaveReportsController < ApplicationController
unloadable
before_filter :require_login
include UserLeaveReportsHelper
def index
@all_users = User.all
@all_leaves = plugin_setting('leave_types')
end
def report
if params[:user_leave_report].nil?
flash.now[:error] = l(:error_no_params )
return
end
user_leaves = nil
where_statements = []
where_clause = ['']
selected_groups=params[:user_leave_report][:selected_groups]
unless (params[:user_leave_report][:selected_users].nil? && selected_groups.nil?)
where_statements << 'user_id IN (?)'
all_users=[]
all_users << params[:user_leave_report][:selected_users]
unless selected_groups.nil?
selected_groups.each do |selected_group|
group=Group.where(lastname: selected_group)
all_users << group.first.users unless group.first.users.nil?
end
end
where_clause << all_users.flatten.uniq
end
selected_leave_types = params[:user_leave_report][:selected_leave_types]
unless selected_leave_types.nil?
where_statements << 'leave_type IN (?)'
where_clause << selected_leave_types
end
unless params[:user_leave_report][:date_from].blank?
begin
where_statements << 'leave_date >= ?'
where_clause << params[:user_leave_report][:date_from].to_date
rescue StandardError
flash.now[:error] = l(:error_invalid_date)
return
end
end
unless params[:user_leave_report][:date_to].blank?
begin
where_statements << 'leave_date <= ?'
where_clause << params[:user_leave_report][:date_to].to_date
rescue StandardError
flash.now[:error] = l(:error_invalid_date)
return
end
end
where_clause[0] = where_statements.join(' AND ')
@user_leave = UserLeave.where(where_clause).order('leave_date desc')
if @user_leave .nil? || @user_leave .empty?
flash.now[:error] = l(:error_no_results)
end
@leaves_report_grid = initialize_grid(@user_leave,
:order => 'id',
:name => 'grid',
:order_direction => 'desc',
:enable_export_to_csv => true,
:csv_field_separator => ';',
:csv_file_name => 'LeavesReport')
export_grid_if_requested('grid' => 'grid')
end
end