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.time.timeblock.service; 017 018 import org.kuali.hr.time.assignment.Assignment; 019 import org.kuali.hr.time.timeblock.TimeBlock; 020 import org.kuali.hr.time.timeblock.TimeBlockHistory; 021 import org.kuali.hr.time.timesheet.TimesheetDocument; 022 023 import java.math.BigDecimal; 024 import java.sql.Date; 025 import java.sql.Timestamp; 026 import java.util.List; 027 028 public interface TimeBlockService { 029 /** 030 * Fetch a TimeBlock by a given ID 031 * @param timeBlockId 032 * @return 033 */ 034 public TimeBlock getTimeBlock(String timeBlockId); 035 036 /** 037 * Delete a given TimeBlock 038 * @param timeBlock 039 */ 040 public void deleteTimeBlock(TimeBlock timeBlock); 041 /** 042 * Build a TimeBlock with the given criteria 043 * @param assignment 044 * @param earnCode 045 * @param timesheetDocument 046 * @param beginTimestamp 047 * @param endTimestamp 048 * @param hours 049 * @param amount 050 * @param isClockLogCreated 051 * @param isLunchDeleted 052 * @return 053 */ 054 public List<TimeBlock> buildTimeBlocks(Assignment assignment, String earnCode, TimesheetDocument timesheetDocument, 055 Timestamp beginTimestamp, Timestamp endTimestamp, BigDecimal hours, BigDecimal amount, 056 Boolean isClockLogCreated, Boolean isLunchDeleted, String userPrincipalId); 057 /** 058 * Save a list of new TimeBlocks 059 * does a comparison for the old versus the new and only saves changed/new/deleted TimeBlocks 060 * @param oldTimeBlocks 061 * @param newTimeBlocks 062 */ 063 public void saveTimeBlocks(List<TimeBlock> oldTimeBlocks, List<TimeBlock> newTimeBlocks, String userPrincipalId); 064 065 /** 066 * Save a list of new TimeBlocks 067 * @param tbList 068 */ 069 public void saveTimeBlocks(List<TimeBlock> tbList); 070 /** 071 * Reset the TimeHourDetail object associated with the TimeBlock object on a List of TimeBlocks 072 * @param origTimeBlocks 073 */ 074 public void resetTimeHourDetail(List<TimeBlock> origTimeBlocks); 075 /** 076 * Get the List of TimeBlock of a given document id 077 * @param documentId 078 * @return 079 */ 080 public List<TimeBlock> getTimeBlocks(String documentId); 081 /** 082 * Get the List of TimeBlock of a given Assignment 083 * @param assign 084 * @return List<TimeBlock> 085 */ 086 public List<TimeBlock> getTimeBlocksForAssignment(Assignment assign); 087 /** 088 * Build a List of TimeBlocks over a span of multiple days 089 * @param assignment 090 * @param earnCode 091 * @param timesheetDocument 092 * @param beginTimestamp 093 * @param endTimestamp 094 * @param hours 095 * @param amount 096 * @param isClockLogCreated 097 * @param isLunchDeleted 098 * @param spanningWeeks 099 * @return 100 */ 101 public List<TimeBlock> buildTimeBlocksSpanDates(Assignment assignment, String earnCode, TimesheetDocument timesheetDocument, 102 Timestamp beginTimestamp, Timestamp endTimestamp, BigDecimal hours, BigDecimal amount, 103 Boolean isClockLogCreated, Boolean isLunchDeleted, String spanningWeeks, String userPrincipalId); 104 /** 105 * Create a TimeBlock for the given criteria 106 * @param timesheetDocument 107 * @param beginTime 108 * @param endTime 109 * @param assignment 110 * @param earnCode 111 * @param hours 112 * @param amount 113 * @param isClockLogCreated 114 * @param isLunchDeleted 115 * @return 116 */ 117 public TimeBlock createTimeBlock(TimesheetDocument timesheetDocument, Timestamp beginTime, Timestamp endTime, 118 Assignment assignment, String earnCode, BigDecimal hours, BigDecimal amount, 119 Boolean isClockLogCreated, Boolean isLunchDeleted, String userPrincipalId); 120 121 public void deleteTimeBlocksAssociatedWithDocumentId(String documentId); 122 123 public Boolean isTimeBlockEditable(TimeBlock tb); 124 125 /* 126 * Get all the time blocks with the given Clock Log id as the clockLogEndId 127 * @param tkClockLogId 128 * @return List<TimeBlock> * 129 */ 130 public List<TimeBlock> getTimeBlocksForClockLogEndId(String tkClockLogId); 131 /* 132 * Get all the time blocks with the given Clock Log id as the clockLogBeginId 133 * @param tkClockLogId 134 * @return List<TimeBlock> * 135 */ 136 public List<TimeBlock> getTimeBlocksForClockLogBeginId(String tkClockLogId); 137 138 public List<TimeBlock> getLatestEndTimestampForEarnCode(String earnCode); 139 140 /** 141 * Get overnight timeblocks by the clock log begin id 142 * @param clockLogBeginId 143 * @return 144 */ 145 public List<TimeBlock> getOvernightTimeBlocks(String clockLogEndId); 146 147 public void updateTimeBlock(TimeBlock tb); 148 149 public List<TimeBlockHistory> createTimeBlockHistories(TimeBlock tb, String actionHistory); 150 151 void deleteLunchDeduction(String tkTimeHourDetailId); 152 /* 153 * Get all the active time blocks with the given earn code and effectiveDate 154 * @param earnCode 155 * @param effDate 156 * @return List<TimeBlock> * 157 */ 158 public List<TimeBlock> getTimeBlocksWithEarnCode(String earnCode, Date effDate); 159 }