View Javadoc

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 }