1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.kpme.tklm.time.rules;
17
18 import java.util.List;
19
20 import org.apache.commons.lang.StringUtils;
21 import org.kuali.kpme.core.calendar.entry.CalendarEntry;
22 import org.kuali.kpme.tklm.common.TkConstants;
23 import org.kuali.kpme.tklm.leave.block.LeaveBlock;
24 import org.kuali.kpme.tklm.time.service.TkServiceLocator;
25 import org.kuali.kpme.tklm.time.timeblock.TimeBlock;
26 import org.kuali.kpme.tklm.time.timesheet.TimesheetDocument;
27 import org.kuali.kpme.tklm.time.util.TkContext;
28 import org.kuali.kpme.tklm.time.util.TkTimeBlockAggregate;
29 import org.kuali.rice.krad.util.GlobalVariables;
30
31 public class TkRuleControllerServiceImpl implements TkRuleControllerService {
32
33
34 public void applyRules(String action, List<TimeBlock> timeBlocks, List<LeaveBlock> leaveBlocks, CalendarEntry payEntry, TimesheetDocument timesheetDocument, String principalId){
35
36 if(StringUtils.equals(action, TkConstants.ACTIONS.ADD_TIME_BLOCK) || StringUtils.equals(action, TkConstants.ACTIONS.CLOCK_OUT)){
37 TkTimeBlockAggregate timeBlockAggregate = new TkTimeBlockAggregate(timeBlocks, leaveBlocks, payEntry, payEntry.getCalendarObj(), true);
38
39
40
41
42
43 if (GlobalVariables.getUserSession() != null && TkContext.isTargetSynchronous()) {
44 TkServiceLocator.getDepartmentLunchRuleService().applyDepartmentLunchRule(timeBlockAggregate.getFlattenedTimeBlockList());
45 }
46 TkServiceLocator.getShiftDifferentialRuleService().processShiftDifferentialRules(timesheetDocument, timeBlockAggregate);
47 TkServiceLocator.getDailyOvertimeRuleService().processDailyOvertimeRules(timesheetDocument, timeBlockAggregate);
48 TkServiceLocator.getWeeklyOvertimeRuleService().processWeeklyOvertimeRule(timesheetDocument, timeBlockAggregate);
49 }
50 }
51
52
53 }