1 /**
2 * Copyright 2004-2013 The Kuali Foundation
3 *
4 * Licensed under the Educational Community License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.opensource.org/licenses/ecl2.php
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.kuali.hr.time.roles;
17
18 import org.kuali.hr.core.document.calendar.CalendarDocumentContract;
19 import org.kuali.hr.time.timesheet.TimesheetDocument;
20
21 import java.util.Set;
22
23 /**
24 * Class to set the contract between Users and Roles.
25 */
26 public interface UserRoles {
27
28 public boolean isLocationAdmin();
29
30 public boolean isDepartmentAdmin();
31
32 public String getPrincipalId();
33
34 public boolean isTimesheetReviewer();
35
36 /**
37 * Is the current user a system administrator?
38 * @return true if yes, false otherwise
39 */
40 public boolean isSystemAdmin();
41
42 /**
43 * Does the current user have any active assignments?
44 * @return true if yes, false otherwise.
45 */
46 public boolean isActiveEmployee();
47
48 /**
49 * Does the current user have any active approver roles?
50 *
51 * Approver roles attach at the WorkArea level.
52 *
53 * @return true if yes, false otherwise.
54 */
55 public boolean isAnyApproverActive();
56
57
58 /**
59 * Does the current user have any role that grants permission to approve
60 * timesheets?
61 * @return true if yes, false otherwise.
62 */
63 public boolean isTimesheetApprover();
64
65 /**
66 * Does the current user have the Global View Only role?
67 *
68 * @return true if yes, false otherwise.
69 */
70 public boolean isGlobalViewOnly();
71
72 /**
73 * Does the current user have an assignment that is marked synchronous?
74 *
75 * @return true if yes, false otherwise.
76 */
77 public boolean isSynchronous();
78
79 /**
80 * Provides a set of WorkArea names that this user is an approver for.
81 * @return a Set<Long> of workarea names.
82 */
83 public Set<Long> getApproverWorkAreas();
84
85 /**
86 * Provides a Set of WorkArea names that this user is a reviewer for.
87 * @return a Set<Long> of workarea names.
88 */
89 public Set<Long> getReviewerWorkAreas();
90
91 /**
92 * Provides a Set of Assignment ids that this user is active under.
93 * @return a Set<Long> of assignment object ids.
94 */
95 public Set<String> getActiveAssignmentIds();
96
97 /**
98 * Provides a Set<String> of Department names that this user is a
99 * departmental view only for.
100 * @return a Set<String> of Department names.
101 */
102 public Set<String> getDepartmentViewOnlyDepartments();
103
104 /**
105 * Provides a Set<String> of Department names that this user is a chart
106 * administrator for.
107 * @return a Set<String> of Department names.
108 */
109 public Set<String> getOrgAdminDepartments();
110
111 /**
112 * Provides a Set<String> of chart names that this user is a chart
113 * administrator for.
114 * @return a Set<String> of Chart names.
115 */
116 public Set<String> getOrgAdminCharts();
117
118 public boolean isDeptViewOnly();
119
120 /**
121 * Indicates whether or not the current can approve the provided timesheet.
122 * @param doc The TimesheetDocument in question.
123 * @return true if the doc can be approved by the current user.
124 */
125 public boolean isApproverForTimesheet(CalendarDocumentContract doc);
126 public boolean isApproverForTimesheet(String docId);
127
128 public boolean canSubmitTimesheet(CalendarDocumentContract doc);
129 public boolean canSubmitTimesheet(String docId);
130
131 public boolean isDocumentReadable(CalendarDocumentContract document);
132 public boolean isDocumentReadable(String documentId);
133
134 public boolean isDocumentWritable(CalendarDocumentContract document);
135 public boolean isDocumentWritable(String documentId);
136
137 public boolean isApproverForPerson(String principalId);
138
139 boolean isDepartmentAdminForPerson(String principalId);
140
141 boolean isDeptViewOnlyForPerson(String principalId);
142
143 boolean isLocationAdminForPerson(String principalId);
144
145 boolean isTimesheetReviewerForPerson(String principalId);
146 }