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.detail.web;
017
018 import org.apache.commons.lang.StringUtils;
019 import org.joda.time.DateTime;
020 import org.joda.time.format.DateTimeFormat;
021 import org.joda.time.format.DateTimeFormatter;
022 import org.kuali.hr.lm.balancetransfer.BalanceTransfer;
023 import org.kuali.hr.time.calendar.TkCalendar;
024 import org.kuali.hr.time.service.base.TkServiceLocator;
025 import org.kuali.hr.time.timeblock.TimeBlock;
026 import org.kuali.hr.time.timesummary.TimeSummary;
027 import org.kuali.hr.time.util.TKUtils;
028 import org.kuali.hr.time.util.TkConstants;
029
030 import java.text.SimpleDateFormat;
031 import java.util.*;
032
033 public class TimeDetailActionForm extends TimeDetailActionFormBase {
034
035 private static DateTimeFormatter SDF_NO_TZ = DateTimeFormat.forPattern("EEE MMM d HH:mm:ss yyyy");
036
037 /**
038 *
039 */
040 private static final long serialVersionUID = 5277197287612035236L;
041
042
043 private TimeBlock timeBlock;
044 private String clockAction;
045 private String serverTimezone;
046 private String userTimezone;
047 private TimeSummary timeSummary;
048 private Map<String, String> assignStyleClassMap = new HashMap<String, String>();
049 private String timeBlockString;
050 private String leaveBlockString;
051 private TkCalendar calendar;
052 private String docEditable;
053 private String workingOnItsOwn; // true if the user is working on its own timesheet
054 private List<String> overtimeEarnCodes = new ArrayList<String>();
055 private String tkTimeHourDetailId;
056 private String isLunchDeleted;
057 private boolean canAddTimeblock;
058
059 public TkCalendar getTkCalendar() {
060 return calendar;
061 }
062
063 public void setTkCalendar(TkCalendar calendar) {
064 this.calendar = calendar;
065 }
066
067 public List<TimeBlock> getTimeBlockList() {
068 return this.getTimesheetDocument().getTimeBlocks();
069 }
070
071 // for Actual Time Inquiry display only
072 public List<TimeBlock> getClockLogTimeBlockList() {
073 List<TimeBlock> clockList = new ArrayList<TimeBlock>();
074 for(TimeBlock tb : this.getTimeBlockList()){
075 if(tb.getClockLogCreated()) {
076 clockList.add(tb);
077 }
078 }
079 return clockList;
080 }
081
082 public TimeBlock getTimeBlock() {
083 return timeBlock;
084 }
085
086 public void setTimeBlock(TimeBlock timeBlock) {
087 this.timeBlock = timeBlock;
088 }
089
090 public String getClockAction() {
091 return clockAction;
092 }
093
094 public void setClockAction(String clockAction) {
095 this.clockAction = clockAction;
096 }
097
098 public String getIsVirtualWorkDay() {
099 Calendar cal = Calendar.getInstance();
100 cal.setTime(getBeginPeriodDateTime());
101 return Boolean.toString(TKUtils.isVirtualWorkDay(cal));
102 }
103
104 public TimeSummary getTimeSummary() {
105 return timeSummary;
106 }
107
108 public void setTimeSummary(TimeSummary timeSummary) {
109 this.timeSummary = timeSummary;
110 }
111
112 public String getServerTimezone() {
113 return TKUtils.getSystemTimeZone();
114 }
115
116 public String getUserTimezone() {
117 return TkServiceLocator.getTimezoneService().getUserTimezone();
118 }
119
120 public Map<String, String> getAssignStyleClassMap() {
121 return assignStyleClassMap;
122 }
123
124 public void setAssignStyleClassMap(Map<String, String> assignStyleClassMap) {
125 this.assignStyleClassMap = assignStyleClassMap;
126 }
127
128 public String getTimeBlockString() {
129 return timeBlockString;
130 }
131
132 public void setTimeBlockString(String timeBlockString) {
133 this.timeBlockString = timeBlockString;
134 }
135
136 public String getBeginPeriodDTNoTZ() {
137 return SDF_NO_TZ.print(new DateTime(this.getBeginPeriodDateTime()));
138 }
139
140 public String getEndPeriodDTNoTZ() {
141 return SDF_NO_TZ.print(new DateTime(this.getEndPeriodDateTime()));
142 }
143
144
145 public boolean isCurrentTimesheet() {
146 return (TKUtils.getCurrentDate().compareTo(this.getBeginPeriodDateTime()) >= 0 && TKUtils.getCurrentDate().compareTo(this.getEndPeriodDateTime()) < 0 );
147 }
148
149 public String getDocEditable() {
150 if(StringUtils.isEmpty(docEditable)) {
151 docEditable="false";
152 }
153 return docEditable;
154 }
155
156 public void setDocEditable(String docEditable) {
157 this.docEditable = docEditable;
158 }
159
160 public List<String> getOvertimeEarnCodes() {
161 return overtimeEarnCodes;
162 }
163
164 public void setOvertimeEarnCodes(List<String> overtimeEarnCodes) {
165 this.overtimeEarnCodes = overtimeEarnCodes;
166 }
167
168 public String getTkTimeHourDetailId() {
169 return tkTimeHourDetailId;
170 }
171
172 public void setTkTimeHourDetailId(String tkTimeHourDetailId) {
173 this.tkTimeHourDetailId = tkTimeHourDetailId;
174 }
175
176 public String getLunchDeleted() {
177 return isLunchDeleted;
178 }
179
180 public void setLunchDeleted(String lunchDeleted) {
181 isLunchDeleted = lunchDeleted;
182 }
183
184 public boolean isCanAddTimeblock() {
185 return TkServiceLocator.getPermissionsService().canAddTimeBlock();
186 }
187
188 public String getWorkingOnItsOwn() {
189 if(StringUtils.isEmpty(workingOnItsOwn)) {
190 workingOnItsOwn="false";
191 }
192 return workingOnItsOwn;
193 }
194
195 public void setWorkingOnItsOwn(String workingOnItsOwn) {
196 this.workingOnItsOwn = workingOnItsOwn;
197 }
198
199 public String getLeaveBlockString() {
200 return leaveBlockString;
201 }
202
203 public void setLeaveBlockString(String leaveBlockString) {
204 this.leaveBlockString = leaveBlockString;
205 }
206
207 }