001 /** 002 * Copyright 2004-2013 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.hr.lm.leaveblock.service; 017 018 import java.math.BigDecimal; 019 import java.sql.Timestamp; 020 import java.util.Date; 021 import java.util.List; 022 import java.util.Map; 023 024 import org.joda.time.DateTime; 025 import org.kuali.hr.lm.leaveblock.LeaveBlock; 026 import org.kuali.hr.time.assignment.Assignment; 027 import org.kuali.hr.time.calendar.CalendarEntries; 028 029 public interface LeaveBlockService { 030 public LeaveBlock getLeaveBlock(String leaveBlockId); 031 public List<LeaveBlock> getLeaveBlocksForDocumentId(String documentId); 032 public List<LeaveBlock> getLeaveBlocks(String principalId, Date beginDate, Date endDate); 033 public List<LeaveBlock> getLeaveBlocksWithType(String principalId, Date beginDate, Date endDate, String leaveBlockType); 034 public List<LeaveBlock> getLeaveBlocksWithAccrualCategory(String principalId, Date beginDate, Date endDate, String accrualCategory); 035 public List<LeaveBlock> getLeaveBlocksSinceCarryOver(String principalId, Map<String, LeaveBlock> carryOverBlocks, DateTime endDate, boolean includeAllAccrualCategories); 036 public Map<String, LeaveBlock> getLastCarryOverBlocks(String principalId, Date asOfDate); 037 public void saveLeaveBlocks(List<LeaveBlock> leaveBlocks); 038 039 public void saveLeaveBlock(LeaveBlock leaveBlock, String principalId); 040 041 /** 042 * The deletion marks the leave block inactive instead of removing the row from the database. 043 * @param leaveBlockId 044 * @param principalId 045 */ 046 public void deleteLeaveBlock(String leaveBlockId, String principalId); 047 048 public void addLeaveBlocks(DateTime beginDate, DateTime endDate, CalendarEntries ce, String selectedEarnCode, 049 BigDecimal hours, String description, Assignment selectedAssignment, String spanningWeeks, String leaveBlockType, String principalId); 050 051 public void updateLeaveBlock(LeaveBlock leaveBlock, String principalId); 052 /** 053 * 054 * @param principalId 055 * @param leaveBlockType 056 * @param requestStatus 057 * @param currentDate currentDate to get the records for the future date, pass null when not required 058 * @return List of LeaveBlocks 059 */ 060 public List<LeaveBlock> getLeaveBlocks(String principalId, String leaveBlockType, String requestStatus, Date currentDate); 061 /** 062 * Get the list of leave blocks from the given leaveDate for the principalId 063 * @param principalId 064 * @param leaveDate 065 * @return List of LeaveBlocks 066 */ 067 public List<LeaveBlock> getLeaveBlocksForDate(String principalId, Date leaveDate); 068 /** 069 * Get the list of not-accrual-generated leave blocks from the given leaveDate for the principalId 070 * @param principalId 071 * @param leaveDate 072 * @return List of LeaveBlocks 073 */ 074 public List<LeaveBlock> getNotAccrualGeneratedLeaveBlocksForDate(String principalId, Date leaveDate); 075 /** 076 * Get list of leave blocks to display on time sheet with given dates and principal id 077 * Only get leave blocks with type of leave calendar and time calendar 078 * the leave blocks should have assignments in the list of assignment keys 079 * @param principalId 080 * @param beginDate 081 * @param endDate 082 * @param assignmentKeys 083 * @return List of leave blocks 084 */ 085 public List<LeaveBlock> getLeaveBlocksForTimeCalendar(String principalId, Date beginDate, Date endDate, List<String> assignmentKeys); 086 /** 087 * Get list of leave blocks to display on leave calendar with given dates and principal id 088 * the leave blocks created from time calendar should have assignments in the list of assignment keys 089 * @param principalId 090 * @param beginDate 091 * @param endDate 092 * @param assignmentKeys 093 * @return List of leave blocks 094 */ 095 public List<LeaveBlock> getLeaveBlocksForLeaveCalendar(String principalId, Date beginDate, Date endDate, List<String> assignmentKeys); 096 097 /** 098 * Filter list of leave blocks with given list of assignmentKeys for Time Calendar 099 * @param lbs 100 * @param assignmentKeys 101 * @return List of leave blocks 102 */ 103 public List<LeaveBlock> filterLeaveBlocksForTimeCalendar(List<LeaveBlock> lbs, List<String> assignmentKeys); 104 /** 105 * Filter list of leave blocks with given list of assignmentKeys for Leave Calendar 106 * @param lbs 107 * @param assignmentKeys 108 * @return List of leave blocks 109 */ 110 public List<LeaveBlock> filterLeaveBlocksForLeaveCalendar(List<LeaveBlock> lbs, List<String> assignmentKeys); 111 /** 112 * Delete time blocks for a given document id 113 * @param documentId 114 */ 115 public void deleteLeaveBlocksForDocumentId(String documentId); 116 117 /** 118 * Retrieve list of accrual generated leave blocks for given Date range and User 119 * @param principalId 120 * @param beginDate 121 * @param endDate 122 * @return List of leave blocks 123 */ 124 public List<LeaveBlock> getAccrualGeneratedLeaveBlocks(String principalId, Date beginDate, Date endDate); 125 126 /** 127 * Retrieve list of leave blocks generated with given system scheduled time off id, date and user 128 * @param principalId 129 * @param sstoId 130 * @param accruledDate 131 * @return 132 */ 133 public List<LeaveBlock> getSSTOLeaveBlocks(String principalId, String sstoId, Date accruledDate); 134 135 /** 136 * gets list of leave blocks created for earn codes with eligible-for-accrual=no since the given timestamp 137 * @param principalId 138 * @param lastRanTime 139 * @return 140 */ 141 public List<LeaveBlock> getABELeaveBlocksSinceTime(String principalId, Timestamp lastRanTime); 142 }