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.time.timesheet.TimesheetDocument; 19 20 import java.util.Set; 21 22 /** 23 * Class to set the contract between Users and Roles. 24 */ 25 public interface UserRoles { 26 27 public boolean isLocationAdmin(); 28 29 public boolean isDepartmentAdmin(); 30 31 public String getPrincipalId(); 32 33 public boolean isTimesheetReviewer(); 34 35 /** 36 * Is the current user a system administrator? 37 * @return true if yes, false otherwise 38 */ 39 public boolean isSystemAdmin(); 40 41 /** 42 * Does the current user have any active assignments? 43 * @return true if yes, false otherwise. 44 */ 45 public boolean isActiveEmployee(); 46 47 /** 48 * Does the current user have any active approver roles? 49 * 50 * Approver roles attach at the WorkArea level. 51 * 52 * @return true if yes, false otherwise. 53 */ 54 public boolean isAnyApproverActive(); 55 56 57 /** 58 * Does the current user have any role that grants permission to approve 59 * timesheets? 60 * @return true if yes, false otherwise. 61 */ 62 public boolean isTimesheetApprover(); 63 64 /** 65 * Does the current user have the Global View Only role? 66 * 67 * @return true if yes, false otherwise. 68 */ 69 public boolean isGlobalViewOnly(); 70 71 /** 72 * Does the current user have an assignment that is marked synchronous? 73 * 74 * @return true if yes, false otherwise. 75 */ 76 public boolean isSynchronous(); 77 78 /** 79 * Provides a set of WorkArea names that this user is an approver for. 80 * @return a Set<Long> of workarea names. 81 */ 82 public Set<Long> getApproverWorkAreas(); 83 84 /** 85 * Provides a Set of WorkArea names that this user is a reviewer for. 86 * @return a Set<Long> of workarea names. 87 */ 88 public Set<Long> getReviewerWorkAreas(); 89 90 /** 91 * Provides a Set of Assignment ids that this user is active under. 92 * @return a Set<Long> of assignment object ids. 93 */ 94 public Set<String> getActiveAssignmentIds(); 95 96 /** 97 * Provides a Set<String> of Department names that this user is a 98 * departmental view only for. 99 * @return a Set<String> of Department names. 100 */ 101 public Set<String> getDepartmentViewOnlyDepartments(); 102 103 /** 104 * Provides a Set<String> of Department names that this user is a chart 105 * administrator for. 106 * @return a Set<String> of Department names. 107 */ 108 public Set<String> getOrgAdminDepartments(); 109 110 /** 111 * Provides a Set<String> of chart names that this user is a chart 112 * administrator for. 113 * @return a Set<String> of Chart names. 114 */ 115 public Set<String> getOrgAdminCharts(); 116 117 public boolean isDeptViewOnly(); 118 119 /** 120 * Indicates whether or not the current can approve the provided timesheet. 121 * @param doc The TimesheetDocument in question. 122 * @return true if the doc can be approved by the current user. 123 */ 124 public boolean isApproverForTimesheet(TimesheetDocument doc); 125 public boolean isApproverForTimesheet(String docId); 126 127 public boolean canSubmitTimesheet(TimesheetDocument doc); 128 public boolean canSubmitTimesheet(String docId); 129 130 public boolean isDocumentReadable(TimesheetDocument document); 131 public boolean isDocumentReadable(String documentId); 132 133 public boolean isDocumentWritable(TimesheetDocument document); 134 public boolean isDocumentWritable(String documentId); 135 136 public boolean isApproverForPerson(String principalId); 137 138 boolean isDepartmentAdminForPerson(String principalId); 139 140 boolean isDeptViewOnlyForPerson(String principalId); 141 142 boolean isLocationAdminForPerson(String principalId); 143 144 boolean isTimesheetReviewerForPerson(String principalId); 145 }