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.lm.leaveblock.service;
17
18 import java.math.BigDecimal;
19 import java.sql.Timestamp;
20 import java.util.Date;
21 import java.util.List;
22 import java.util.Map;
23
24 import org.joda.time.DateTime;
25 import org.kuali.hr.lm.leaveblock.LeaveBlock;
26 import org.kuali.hr.time.assignment.Assignment;
27 import org.kuali.hr.time.calendar.CalendarEntries;
28
29 public interface LeaveBlockService {
30 public LeaveBlock getLeaveBlock(String leaveBlockId);
31 public List<LeaveBlock> getLeaveBlocksForDocumentId(String documentId);
32 public List<LeaveBlock> getLeaveBlocks(String principalId, Date beginDate, Date endDate);
33 public List<LeaveBlock> getLeaveBlocksWithType(String principalId, Date beginDate, Date endDate, String leaveBlockType);
34 public List<LeaveBlock> getLeaveBlocksWithAccrualCategory(String principalId, Date beginDate, Date endDate, String accrualCategory);
35 public List<LeaveBlock> getLeaveBlocksSinceCarryOver(String principalId, Map<String, LeaveBlock> carryOverBlocks, DateTime endDate, boolean includeAllAccrualCategories);
36 public Map<String, LeaveBlock> getLastCarryOverBlocks(String principalId, Date asOfDate);
37 public void saveLeaveBlocks(List<LeaveBlock> leaveBlocks);
38
39 public void saveLeaveBlock(LeaveBlock leaveBlock, String principalId);
40
41 /**
42 * The deletion marks the leave block inactive instead of removing the row from the database.
43 * @param leaveBlockId
44 * @param principalId
45 */
46 public void deleteLeaveBlock(String leaveBlockId, String principalId);
47
48 public void addLeaveBlocks(DateTime beginDate, DateTime endDate, CalendarEntries ce, String selectedEarnCode,
49 BigDecimal hours, String description, Assignment selectedAssignment, String spanningWeeks, String leaveBlockType, String principalId);
50
51 public void updateLeaveBlock(LeaveBlock leaveBlock, String principalId);
52 /**
53 *
54 * @param principalId
55 * @param leaveBlockType
56 * @param requestStatus
57 * @param currentDate currentDate to get the records for the future date, pass null when not required
58 * @return List of LeaveBlocks
59 */
60 public List<LeaveBlock> getLeaveBlocks(String principalId, String leaveBlockType, String requestStatus, Date currentDate);
61
62 /**
63 *
64 * @param principalId
65 * @param leaveBlockType
66 * @param requestStatus
67 * @param beginDate
68 * @param endDate
69 * @return List of LeaveBlocks
70 */
71 public List<LeaveBlock> getLeaveBlocks(String principalId, String leaveBlockType, String requestStatus, Date beginDate, Date endDate);
72
73 /**
74 * Get the list of leave blocks from the given leaveDate for the principalId
75 * @param principalId
76 * @param leaveDate
77 * @return List of LeaveBlocks
78 */
79 public List<LeaveBlock> getLeaveBlocksForDate(String principalId, Date leaveDate);
80 /**
81 * Get the list of not-accrual-generated leave blocks from the given leaveDate for the principalId
82 * @param principalId
83 * @param leaveDate
84 * @return List of LeaveBlocks
85 */
86 public List<LeaveBlock> getNotAccrualGeneratedLeaveBlocksForDate(String principalId, Date leaveDate);
87 /**
88 * Get list of leave blocks to display on time sheet with given dates and principal id
89 * Only get leave blocks with type of leave calendar and time calendar
90 * the leave blocks should have assignments in the list of assignment keys
91 * @param principalId
92 * @param beginDate
93 * @param endDate
94 * @param assignmentKeys
95 * @return List of leave blocks
96 */
97 public List<LeaveBlock> getLeaveBlocksForTimeCalendar(String principalId, Date beginDate, Date endDate, List<String> assignmentKeys);
98 /**
99 * Get list of leave blocks to display on leave calendar with given dates and principal id
100 * the leave blocks created from time calendar should have assignments in the list of assignment keys
101 * @param principalId
102 * @param beginDate
103 * @param endDate
104 * @param assignmentKeys
105 * @return List of leave blocks
106 */
107 public List<LeaveBlock> getLeaveBlocksForLeaveCalendar(String principalId, Date beginDate, Date endDate, List<String> assignmentKeys);
108
109 /**
110 * Filter list of leave blocks with given list of assignmentKeys for Time Calendar
111 * @param lbs
112 * @param assignmentKeys
113 * @return List of leave blocks
114 */
115 public List<LeaveBlock> filterLeaveBlocksForTimeCalendar(List<LeaveBlock> lbs, List<String> assignmentKeys);
116 /**
117 * Filter list of leave blocks with given list of assignmentKeys for Leave Calendar
118 * @param lbs
119 * @param assignmentKeys
120 * @return List of leave blocks
121 */
122 public List<LeaveBlock> filterLeaveBlocksForLeaveCalendar(List<LeaveBlock> lbs, List<String> assignmentKeys);
123 /**
124 * Delete time blocks for a given document id
125 * @param documentId
126 */
127 public void deleteLeaveBlocksForDocumentId(String documentId);
128
129 /**
130 * Retrieve list of accrual generated leave blocks for given Date range and User
131 * @param principalId
132 * @param beginDate
133 * @param endDate
134 * @return List of leave blocks
135 */
136 public List<LeaveBlock> getAccrualGeneratedLeaveBlocks(String principalId, Date beginDate, Date endDate);
137
138 /**
139 * Retrieve list of leave blocks generated with given system scheduled time off id, date and user
140 * @param principalId
141 * @param sstoId
142 * @param accruledDate
143 * @return
144 */
145 public List<LeaveBlock> getSSTOLeaveBlocks(String principalId, String sstoId, Date accruledDate);
146
147 /**
148 * gets list of leave blocks created for earn codes with eligible-for-accrual=no since the given timestamp
149 * @param principalId
150 * @param lastRanTime
151 * @return
152 */
153 public List<LeaveBlock> getABELeaveBlocksSinceTime(String principalId, Timestamp lastRanTime);
154 }