set user_selection_types [list"all""All""mine""Mine""direct_reports""Direct reports""employees""Employees""providers""Providers""customers""Customers"]
# Users can only see their own absences, unless they have a special permission
if{!$view_absences_all_p}{
set user_selection_types [list"mine""Mine"]
}
# ToDo: Users should _always_ see their absences
if {!$view_absences_all_p} { set user_selection_types [list"mine""Mine"] }
# Only 'direct' subordinates.
if {$view_absences_direct_reports_p} { append user_selection_types [list"direct_reports""Direct reports"] }
if {$add_hours_all_p} {
# Add employees to user_selection
...
...
@@ -141,6 +147,9 @@ foreach { value text } $user_selection_types {
@@ -256,26 +265,36 @@ if { ![empty_string_p $user_selection] } {
from group_approved_member_map m
where m.group_id = [im_customer_group_id]
)"
} default {
}
"direct_reports" {
lappend criteria "a.owner_id in (select employee_id from im_employees where supervisor_id = :current_user_id)"
}
default {
if {[string is integer $user_selection]} {
lappend criteria "a.owner_id = :user_selection"
} else {
ad_return_complaint 1 "Invalid User Selection:<br>Value '$user_selection' is not a user_id or one of {mine|all|employees|providers|customers}."
ad_return_complaint 1 "Invalid User Selection:<br>Value '$user_selection' is not a user_id or one of {mine|all|employees|providers|customers|direct reports}."
}
}
}
ns_set put $bind_vars user_selection $user_selection
} elseif { $view_absences_direct_reports_p } {
if { "direct_reports" == $user_selection } {
lappend criteria "a.owner_id in (select employee_id from im_employees where supervisor_id = :current_user_id)"
} else {
# Show always own absences
lappend criteria "a.owner_id=:user_id"
}
} else {
lappend criteria "a.owner_id=:user_id"
}
}
switch $user_selection {
"mine" {
# ns_set put $bind_vars user_selection $user_selection
# lappend criteria "a.owner_id=:user_id"
}
"all"{
"all" - "direct_reports" {
ns_set put $bind_vars user_selection $user_selection