1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.hr.time.clock.web;
17
18 import org.joda.time.DateTime;
19 import org.joda.time.DateTimeZone;
20 import org.kuali.hr.time.assignment.Assignment;
21 import org.kuali.hr.time.clocklog.ClockLog;
22 import org.kuali.hr.time.collection.rule.TimeCollectionRule;
23 import org.kuali.hr.time.service.base.TkServiceLocator;
24 import org.kuali.hr.time.timeblock.TimeBlock;
25 import org.kuali.hr.time.timesheet.TimesheetDocument;
26 import org.kuali.hr.time.timesheet.web.TimesheetActionForm;
27 import org.kuali.hr.time.util.TKUser;
28 import org.kuali.hr.time.util.TKUtils;
29 import org.kuali.hr.time.util.TkConstants;
30
31 import java.sql.Timestamp;
32 import java.util.*;
33
34 public class ClockActionForm extends TimesheetActionForm {
35
36
37
38
39 private static final long serialVersionUID = -3843074202863670372L;
40
41 private String currentServerTime;
42 private String currentClockAction;
43 private String lastClockAction;
44
45 private String nextClockAction;
46 private Timestamp lastClockTimestamp;
47 private Date lastClockTimeWithZone;
48
49 private String lastClockHours;
50 private ClockLog clockLog;
51 private TimeBlock timeBlock;
52 private boolean showLunchButton;
53 private boolean showDistributeButton;
54 private boolean showMissedPunchButton;
55 private Map<String, List<TimeBlock>> timeBlocksMap;
56 private List<String> assignDescriptionsList;
57
58 private List<String> distributeAssignList;
59 private LinkedHashMap<String, String> desList;
60
61 private String editTimeBlockId;
62 private TimeBlock currentTimeBlock;
63 private String currentAssignmentDescription;
64 private String currentAssignmentKey;
65 private String tbId;
66 private String tsDocId;
67
68 private String newAssignDesCol;
69 private String newBDCol;
70 private String newBTCol;
71 private String newEDCol;
72 private String newETCol;
73 private String newHrsCol;
74 private String errorMessage;
75
76
77
78 private String outputString;
79
80 public String getTargetUserTimezone() {
81 return TkServiceLocator.getTimezoneService().getUserTimezone(TKUser.getCurrentTargetPerson().getPrincipalId());
82 }
83
84 public Date getLastClockTimeWithZone() {
85 return lastClockTimeWithZone;
86 }
87
88 public void setLastClockTimeWithZone(Date lastClockTimeWithZone) {
89 this.lastClockTimeWithZone = lastClockTimeWithZone;
90 }
91
92 public String getErrorMessage() {
93 return errorMessage;
94 }
95
96 public void setErrorMessage(String errorMessage) {
97 this.errorMessage = errorMessage;
98 }
99
100 public String getOutputString() {
101 return outputString;
102 }
103
104 public void setOutputString(String outputString) {
105 this.outputString = outputString;
106 }
107
108
109
110 private Map<String,Boolean> assignmentLunchMap;
111
112 public Map<String, Boolean> getAssignmentLunchMap() {
113 return assignmentLunchMap;
114 }
115
116 public void setAssignmentLunchMap(Map<String,Boolean> assignmentLunchMap) {
117 this.assignmentLunchMap = assignmentLunchMap;
118 }
119
120 public String getCurrentServerTime() {
121 return currentServerTime;
122 }
123
124 public void setCurrentServerTime(String currentServerTime) {
125 this.currentServerTime = currentServerTime;
126 }
127
128 public String getUserSystemOffsetServerTime(){
129 DateTime dt = new DateTime(TKUtils.getCurrentDate().getTime()+getUserTimezoneOffset());
130 return String.valueOf(dt.getMillis());
131 }
132
133 public Long getUserTimezoneOffset(){
134 DateTimeZone dtz = TkServiceLocator.getTimezoneService().getUserTimezoneWithFallback();
135 return TkServiceLocator.getTimezoneService().getTimezoneOffsetFromServerTime(dtz);
136 }
137
138 public String getCurrentClockAction() {
139 return currentClockAction;
140 }
141
142 public void setCurrentClockAction(String currentClockAction) {
143 this.currentClockAction = currentClockAction;
144 }
145
146 public String getNextClockAction() {
147 return nextClockAction;
148 }
149
150 public void setNextClockAction(String nextClockAction) {
151 this.nextClockAction = nextClockAction;
152 }
153
154 public Timestamp getLastClockTimestamp() {
155 return lastClockTimestamp;
156 }
157
158 public void setLastClockTimestamp(Timestamp lastClockTimestamp) {
159 this.lastClockTimestamp = lastClockTimestamp;
160 }
161
162 public ClockLog getClockLog() {
163 return clockLog;
164 }
165
166 public void setClockLog(ClockLog clockLog) {
167 this.clockLog = clockLog;
168 }
169
170 public String getLastClockHours() {
171 return lastClockHours;
172 }
173
174 public void setLastClockHours(String lastClockHours) {
175 this.lastClockHours = lastClockHours;
176 }
177
178 public TimeBlock getTimeBlock() {
179 return timeBlock;
180 }
181
182 public void setTimeBlock(TimeBlock timeBlock) {
183 this.timeBlock = timeBlock;
184 }
185
186 public String getLastClockAction() {
187 return lastClockAction;
188 }
189
190 public void setLastClockAction(String lastClockAction) {
191 this.lastClockAction = lastClockAction;
192 }
193
194 public TimeBlock getCurrentTimeBlock() {
195 if(currentTimeBlock == null && this.getEditTimeBlockId() != null) {
196 this.setCurrentTimeBlock(TkServiceLocator.getTimeBlockService().getTimeBlock(this.getEditTimeBlockId()));
197 }
198 return currentTimeBlock;
199 }
200
201 public void setCurrentTimeBlock(TimeBlock currentTimeBlock) {
202 this.currentTimeBlock = currentTimeBlock;
203 }
204
205 public String getCurrentAssignmentDescription() {
206 if(currentAssignmentDescription == null && this.getCurrentTimeBlock() != null) {
207 Assignment assignment = TkServiceLocator.getAssignmentService().getAssignment(this.getTimesheetDocument(), this.getCurrentTimeBlock().getAssignmentKey());
208 if(assignment != null) {
209 this.setCurrentAssignmentDescription(assignment.getAssignmentDescription());
210 }
211 }
212 return currentAssignmentDescription;
213 }
214
215 public void setCurrentAssignmentDescription(String currentAssignmentDescription) {
216 this.currentAssignmentDescription = currentAssignmentDescription;
217 }
218
219
220
221
222
223
224
225
226
227 public boolean isShowLunchButton() {
228 if (showLunchButton) {
229 if (this.assignmentLunchMap != null) {
230 Boolean val = this.assignmentLunchMap.get(this.getSelectedAssignment());
231 return (showLunchButton && val != null && !val);
232 } else {
233 return showLunchButton;
234 }
235 } else {
236 return false;
237 }
238 }
239
240
241
242
243 public void setShowLunchButton(boolean showLunchButton) {
244 this.showLunchButton = showLunchButton;
245 }
246
247
248
249
250
251
252
253 public boolean isShowDistributeButton() {
254 return showDistributeButton;
255 }
256
257 public void setShowDistrubuteButton(boolean showDistrubuteButton) {
258 this.showDistributeButton = showDistrubuteButton;
259 }
260
261 public void setSelectedAssignment(String selectedAssignment) {
262 super.setSelectedAssignment(selectedAssignment);
263 this.isShowDistributeButton();
264 }
265
266 public List<String> getAssignDescriptionsList() {
267 if(assignDescriptionsList == null && this.getTimeBlocksMap() != null) {
268 List<String> list1= new ArrayList<String>();
269 for(String aString : getTimeBlocksMap().keySet()) {
270 list1.add(aString);
271 }
272 this.setAssignDescriptionsList(list1);
273 }
274 return assignDescriptionsList;
275 }
276
277 public void setAssignDescriptionsList(List<String> assignDescriptionsList) {
278 this.assignDescriptionsList = assignDescriptionsList;
279 }
280
281 public String getEditTimeBlockId() {
282 return editTimeBlockId;
283 }
284
285 public void setEditTimeBlockId(String editTimeBlockId) {
286 this.editTimeBlockId = editTimeBlockId;
287 }
288
289 public void findTimeBlocksToDistribute() {
290 String pId = this.getPrincipalId();
291 if(pId != null) {
292 TimesheetDocument td = this.getTimesheetDocument();
293 if(td != null && !td.getDocumentHeader().getDocumentStatus().equals(TkConstants.ROUTE_STATUS.FINAL)) {
294 List<TimeBlock> tbList = new ArrayList<TimeBlock>();
295 if(td != null) {
296 for(TimeBlock tbTemp : td.getTimeBlocks()) {
297 if(tbTemp.getClockLogCreated()) {
298 tbList.add(tbTemp);
299 }
300 }
301 }
302 List<Assignment> assignmentList = TkServiceLocator.getAssignmentService().getAssignments(pId, null);
303 List<String> aList = new ArrayList<String>();
304 Map<String, List<TimeBlock>> tbMap = new HashMap<String, List<TimeBlock>>();
305 Map<String, String> map2 = new HashMap<String, String>();
306 LinkedHashMap<String, String> desMap = new LinkedHashMap<String, String>();
307
308 for(Assignment assignment : assignmentList) {
309 TimeCollectionRule rule = TkServiceLocator.getTimeCollectionRuleService().getTimeCollectionRule(assignment.getJob().getDept(), assignment.getWorkArea(), assignment.getEffectiveDate());
310 if(rule.isHrsDistributionF() && rule.isClockUserFl()) {
311 aList.add(assignment.getAssignmentDescription()+ "=" + assignment.getTkAssignmentId().toString());
312 desMap.put(assignment.getTkAssignmentId().toString(), assignment.getAssignmentDescription());
313
314 for(TimeBlock tb: tbList){
315 if(assignment.getWorkArea().equals(tb.getWorkArea())) {
316 List<TimeBlock> tempList = tbMap.get(assignment.getAssignmentDescription());
317 if(tempList == null) {
318 tempList = new ArrayList<TimeBlock>();
319 }
320 tempList.add(tb);
321 Collections.sort(tempList);
322 tbMap.put(assignment.getAssignmentDescription(), tempList);
323 map2.put(assignment.getAssignmentDescription(),assignment.getTkAssignmentId().toString() );
324 }
325 }
326 }
327 }
328
329 this.setTimeBlocksMap(tbMap);
330 this.setDesList(desMap);
331
332 List<String> list1= new ArrayList<String>();
333 for(String aString : tbMap.keySet()) {
334 list1.add(aString);
335 }
336
337
338 HashSet h = new HashSet(aList);
339 aList.clear();
340 aList.addAll(h);
341 Collections.sort(aList);
342 this.setAssignDescriptionsList(list1);
343 this.setDistributeAssignList(aList);
344 }
345 }
346
347 }
348
349 public String getCurrentAssignmentKey() {
350 return currentAssignmentKey;
351 }
352
353 public void setCurrentAssignmentKey(String currentAssignmentKey) {
354 this.currentAssignmentKey = currentAssignmentKey;
355 }
356
357 public String getTbId() {
358 return tbId;
359 }
360
361 public void setTbId(String tbId) {
362 this.tbId = tbId;
363 }
364 public String getNewAssignDesCol() {
365 return newAssignDesCol;
366 }
367
368 public void setNewAssignDesCol(String newAssignDesCol) {
369 this.newAssignDesCol = newAssignDesCol;
370 }
371
372 public String getNewBDCol() {
373 return newBDCol;
374 }
375
376 public void setNewBDCol(String newBDCol) {
377 this.newBDCol = newBDCol;
378 }
379
380 public String getNewBTCol() {
381 return newBTCol;
382 }
383
384 public void setNewBTCol(String newBTCol) {
385 this.newBTCol = newBTCol;
386 }
387
388 public String getNewEDCol() {
389 return newEDCol;
390 }
391
392 public void setNewEDCol(String newEDCol) {
393 this.newEDCol = newEDCol;
394 }
395
396 public String getNewETCol() {
397 return newETCol;
398 }
399
400 public void setNewETCol(String newETCol) {
401 this.newETCol = newETCol;
402 }
403
404 public String getNewHrsCol() {
405 return newHrsCol;
406 }
407
408 public void setNewHrsCol(String newHrsCol) {
409 this.newHrsCol = newHrsCol;
410 }
411
412 public Map<String, List<TimeBlock>> getTimeBlocksMap() {
413 if(timeBlocksMap == null ) {
414 this.findTimeBlocksToDistribute();
415 }
416 return timeBlocksMap;
417 }
418
419 public void setTimeBlocksMap(Map<String, List<TimeBlock>> timeBlocksMap) {
420 this.timeBlocksMap = timeBlocksMap;
421 }
422
423 public List<String> getDistributeAssignList() {
424 return distributeAssignList;
425 }
426
427 public void setDistributeAssignList(List<String> distributeAssignList) {
428 this.distributeAssignList = distributeAssignList;
429 }
430
431 public LinkedHashMap<String, String> getDesList() {
432 return desList;
433 }
434
435 public void setDesList(LinkedHashMap<String, String> desList) {
436 this.desList = desList;
437 }
438
439 public String getTsDocId() {
440 return tsDocId;
441 }
442
443 public void setTsDocId(String tsDocId) {
444 this.tsDocId = tsDocId;
445 }
446
447 public boolean isShowMissedPunchButton() {
448 return showMissedPunchButton;
449 }
450
451 public void setShowMissedPunchButton(boolean showMissedPunchButton) {
452 this.showMissedPunchButton = showMissedPunchButton;
453 }
454
455 }