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.calendar;
017    
018    import java.math.BigDecimal;
019    
020    import org.apache.commons.lang.StringUtils;
021    import org.joda.time.DateTime;
022    import org.kuali.hr.lm.LMConstants;
023    import org.kuali.hr.lm.leaveblock.LeaveBlock;
024    import org.kuali.hr.time.service.base.TkServiceLocator;
025    import org.kuali.hr.time.util.TkConstants;
026    import org.kuali.rice.krad.util.ObjectUtils;
027    
028    import static org.kuali.hr.time.service.base.TkServiceLocator.*;
029    
030    public class LeaveBlockRenderer {
031        private LeaveBlock leaveBlock;
032        private String assignmentClass;
033        //private boolean readOnly;
034    
035        public  LeaveBlockRenderer(LeaveBlock leaveBlock) {
036            this.leaveBlock = leaveBlock;
037        }
038     
039        public LeaveBlock getLeaveBlock() {
040            return leaveBlock;
041        }
042    
043        public BigDecimal getHours() {
044            return leaveBlock.getLeaveAmount();
045        }
046    
047        public String getEarnCode() {
048            return leaveBlock.getEarnCode();
049        }
050    
051        public String getLeaveBlockId() {
052            return leaveBlock.getLmLeaveBlockId();
053        }
054    
055        public String getDocumentId() {
056            return leaveBlock.getDocumentId();
057        }
058    
059            public String getAssignmentTitle() {
060                    return leaveBlock.getAssignmentTitle();
061            }
062    
063        public boolean getEditable() {
064            return leaveBlock.isEditable();
065        }
066    
067        public boolean getDeletable() {
068            return leaveBlock.isDeletable();
069        }
070    
071            public String getAssignmentClass() {
072                    return assignmentClass;
073            }
074    
075            public void setAssignmentClass(String assignmentClass) {
076                    this.assignmentClass = assignmentClass;
077            }
078    
079        public String getRequestStatusClass() {
080            return this.leaveBlock.getRequestStatusString().toLowerCase();
081        }
082    
083        public String getLeaveBlockDetails() {
084            if (this.leaveBlock.getLeaveBlockType().equals(LMConstants.LEAVE_BLOCK_TYPE.ACCRUAL_SERVICE)) {
085    //            return "accrual";
086                    if(ObjectUtils.isNotNull(leaveBlock.getScheduleTimeOffId()))
087                            return TkServiceLocator.getSysSchTimeOffService().getSystemScheduledTimeOff(this.leaveBlock.getScheduleTimeOffId()).getDescr();
088                    else
089                            return "accrual";
090            }
091            else if(this.leaveBlock.getLeaveBlockType().equals(LMConstants.LEAVE_BLOCK_TYPE.CARRY_OVER_ADJUSTMENT)) {
092                    if(this.leaveBlock.getDescription().equals(LMConstants.MAX_CARRY_OVER_ADJUSTMENT))
093                            return "carryover adjustment";
094                    else
095                            return "adjustment";
096            }
097            else if(this.leaveBlock.getLeaveBlockType().equals(LMConstants.LEAVE_BLOCK_TYPE.BALANCE_TRANSFER)) {
098                    if(this.leaveBlock.getDescription().contains("Forfeited"))
099                            return "transfer forfeiture";
100                    else if(this.leaveBlock.getDescription().contains("Amount transferred"))
101                            return "amount transferred";
102                    else if(this.leaveBlock.getDescription().contains("Transferred amount"))
103                            return "transferred amount";
104                    else
105                            return "balance transfer";
106            }
107            else if(this.leaveBlock.getLeaveBlockType().equals(LMConstants.LEAVE_BLOCK_TYPE.LEAVE_PAYOUT)) {
108                    if(this.leaveBlock.getDescription().contains("Forfeited"))
109                            return "payout forfeiture";
110                    else if(this.leaveBlock.getDescription().contains("Amount paid out"))
111                            return "amount paid out";
112                    else if(this.leaveBlock.getDescription().contains("Payout amount"))
113                            return "payout amount";
114                    else
115                            return "leave payout";
116            }
117            else
118                    if(!this.leaveBlock.getLeaveBlockType().equals(LMConstants.LEAVE_BLOCK_TYPE.LEAVE_CALENDAR) &&
119                                    !this.leaveBlock.getLeaveBlockType().equals(LMConstants.LEAVE_BLOCK_TYPE.TIME_CALENDAR))
120                            return LMConstants.LEAVE_BLOCK_TYPE_MAP.get(this.leaveBlock.getLeaveBlockType()).toLowerCase();
121                    else
122                            return getRequestStatusClass();
123            
124        }
125        
126        public String getDescription() {
127            return leaveBlock.getDescription();
128        }
129    
130           
131        public String getTimeRange() {
132            StringBuilder b = new StringBuilder();
133    
134            if(leaveBlock.getBeginTimestamp() != null && leaveBlock.getEndTimestamp() != null) {
135                    String earnCodeType = TkServiceLocator.getEarnCodeService().getEarnCodeType(leaveBlock.getEarnCode(), new java.sql.Date(leaveBlock.getBeginTimestamp().getTime()));
136                    if(StringUtils.equals(earnCodeType, TkConstants.EARN_CODE_TIME)) {
137                            DateTime start = new DateTime(leaveBlock.getBeginTimestamp().getTime());
138                            DateTime end = new DateTime(leaveBlock.getEndTimestamp().getTime());
139                        b.append(start.toString(TkConstants.DT_BASIC_TIME_FORMAT));
140                        b.append(" - ");
141                        b.append(end.toString(TkConstants.DT_BASIC_TIME_FORMAT));
142                    }
143            }
144            return b.toString();
145        }
146    }