001    /*
002     * Copyright 2011 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    
017    package org.kuali.kfs.vnd.businessobject;
018    
019    import java.util.Collection;
020    import java.util.Collections;
021    import java.util.LinkedHashMap;
022    
023    import org.kuali.kfs.sys.context.SpringContext;
024    import org.kuali.kfs.sys.identity.KfsKimAttributes;
025    import org.kuali.kfs.sys.service.impl.KfsParameterConstants;
026    import org.kuali.kfs.vnd.identity.ContractManagerRoleTypeServiceImpl;
027    import org.kuali.rice.kim.bo.Person;
028    import org.kuali.rice.kim.bo.role.dto.RoleMembershipInfo;
029    import org.kuali.rice.kim.bo.types.dto.AttributeSet;
030    import org.kuali.rice.kim.service.PersonService;
031    import org.kuali.rice.kim.service.RoleManagementService;
032    import org.kuali.rice.kns.bo.Inactivateable;
033    import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
034    import org.kuali.rice.kns.util.KualiDecimal;
035    import org.kuali.rice.kns.util.ObjectUtils;
036    
037    /**
038     * Individuals who are assigned to manage a particular set of Contracts with Vendors, who must therefore look at associated Purchase
039     * Orders.
040     * 
041     * @see org.kuali.kfs.vnd.businessobject.VendorContract
042     */
043    public class ContractManager extends PersistableBusinessObjectBase implements Inactivateable{
044    
045        private Integer contractManagerCode;
046        private String contractManagerName;
047        private String contractManagerPhoneNumber;
048        private String contractManagerFaxNumber;
049        private KualiDecimal contractManagerDelegationDollarLimit;
050        private boolean active;
051        
052    
053        /**
054         * Default constructor.
055         */
056        public ContractManager() {
057        }
058    
059        public Integer getContractManagerCode() {
060            return contractManagerCode;
061        }
062    
063        public void setContractManagerCode(Integer contractManagerCode) {
064            this.contractManagerCode = contractManagerCode;
065        }
066    
067        public String getContractManagerName() {
068            return contractManagerName;
069        }
070    
071        public void setContractManagerName(String contractManagerName) {
072            this.contractManagerName = contractManagerName;
073        }
074    
075        public String getContractManagerPhoneNumber() {
076            return contractManagerPhoneNumber;
077        }
078    
079        public void setContractManagerPhoneNumber(String contractManagerPhoneNumber) {
080            this.contractManagerPhoneNumber = contractManagerPhoneNumber;
081        }
082    
083        public String getContractManagerFaxNumber() {
084            return contractManagerFaxNumber;
085        }
086    
087        public void setContractManagerFaxNumber(String contractManagerFaxNumber) {
088            this.contractManagerFaxNumber = contractManagerFaxNumber;
089        }
090    
091        public KualiDecimal getContractManagerDelegationDollarLimit() {
092            return contractManagerDelegationDollarLimit;
093        }
094    
095        public void setContractManagerDelegationDollarLimit(KualiDecimal contractManagerDelegationDollarLimit) {
096            this.contractManagerDelegationDollarLimit = contractManagerDelegationDollarLimit;
097        }
098        
099        /**
100         * This method gets the contract manager user identifier.
101         * @return contractManagerId
102         */
103        public String getContractManagerUserIdentifier() {
104            String contractManagerId = null;
105            AttributeSet qualification = new AttributeSet();
106            
107            RoleManagementService roleService = SpringContext.getBean(RoleManagementService.class);
108            String roleId = roleService.getRoleIdByName(KfsParameterConstants.PURCHASING_NAMESPACE, ContractManagerRoleTypeServiceImpl.CONTRACT_MANAGER_ROLE_NAME);
109    //        String roleId = roleService.getRoleIdByName(KFSConstants.ParameterNamespaces.PURCHASING, ContractManagerRoleTypeServiceImpl.CONTRACT_MANAGER_ROLE_NAME);
110            
111            qualification.put(KfsKimAttributes.CONTRACT_MANAGER_CODE, String.valueOf(contractManagerCode));
112            Collection<RoleMembershipInfo> roleMemberships = roleService.getRoleMembers(Collections.singletonList(roleId), qualification);
113    
114            for (RoleMembershipInfo membership : roleMemberships) {
115                contractManagerId = membership.getMemberId();
116                break;
117            }
118    
119            return contractManagerId;
120        }
121        
122        public Person getContractManagerPerson() {
123            Person contractManager = SpringContext.getBean(PersonService.class).getPerson(getContractManagerUserIdentifier());
124            if (ObjectUtils.isNotNull(contractManager)) {
125                return contractManager;
126            }
127            return null; 
128        }
129        
130        /**
131         * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
132         */
133        @SuppressWarnings({ "unchecked", "rawtypes" })
134        protected LinkedHashMap toStringMapper() {
135            LinkedHashMap m = new LinkedHashMap();
136            if (this.contractManagerCode != null) {
137                m.put("contractManagerCode", this.contractManagerCode.toString());
138            }
139    
140            return m;
141        }
142    
143        public boolean isActive() {
144            return active;
145        }
146    
147        public void setActive(boolean active) {
148            this.active = active;
149        }
150    }