blob: 82f98c3378ac0ebdf0f925ca9de502858ee6fdd0 [file] [log] [blame]
/*******************************************************************************
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*******************************************************************************/
package org.apache.ofbiz.humanres;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.ofbiz.base.util.Debug;
import org.apache.ofbiz.base.util.UtilValidate;
import org.apache.ofbiz.entity.Delegator;
import org.apache.ofbiz.entity.GenericEntityException;
import org.apache.ofbiz.entity.GenericValue;
import org.apache.ofbiz.entity.condition.EntityCondition;
import org.apache.ofbiz.entity.condition.EntityOperator;
import org.apache.ofbiz.entity.util.EntityQuery;
public class HumanResEvents {
public static final String module = HumanResEvents.class.getName();
public static final String resourceError = "HumanResErrorUiLabels";
// Please note : the structure of map in this function is according to the JSON data map of the jsTree
public static String getChildHRCategoryTree(HttpServletRequest request, HttpServletResponse response){
Delegator delegator = (Delegator) request.getAttribute("delegator");
String partyId = request.getParameter("partyId");
String onclickFunction = request.getParameter("onclickFunction");
String additionParam = request.getParameter("additionParam");
String hrefString = request.getParameter("hrefString");
String hrefString2 = request.getParameter("hrefString2");
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("delegator", delegator);
paramMap.put("partyId", partyId);
paramMap.put("onclickFunction", onclickFunction);
paramMap.put("additionParam", additionParam);
paramMap.put("hrefString", hrefString);
paramMap.put("hrefString2", hrefString2);
List<Map<String,Object>> categoryList = new ArrayList<Map<String,Object>>();
//check employee position
try {
categoryList.addAll(getCurrentEmployeeDetails(paramMap));
} catch (GenericEntityException e) {
e.printStackTrace();
return "error";
}
try {
GenericValue partyGroup = EntityQuery.use(delegator).from("PartyGroup").where("partyId", partyId).queryOne();
if (partyGroup != null) {
paramMap.put("partyGroup", partyGroup);
/* get the child departments of company or party */
categoryList.addAll(getChildComps(paramMap));
/* get employee which are working in company or party */
categoryList.addAll(getEmployeeInComp(paramMap));
}
} catch (GenericEntityException e) {
e.printStackTrace();
return "error";
}
request.setAttribute("hrTree", categoryList);
return "success";
}
private static List<Map<String, Object>> getCurrentEmployeeDetails(Map<String, Object> params) throws GenericEntityException{
Delegator delegator = (Delegator) params.get("delegator");
String partyId = (String) params.get("partyId");
String onclickFunction = (String) params.get("onclickFunction");
String additionParam = (String) params.get("additionParam");
String hrefString = (String) params.get("hrefString");
String hrefString2 = (String) params.get("hrefString2");
List<Map<String, Object>> responseList = new ArrayList<>();
long emplPosCount;
try {
emplPosCount = EntityQuery.use(delegator).from("EmplPosition")
.where("emplPositionId", partyId).queryCount();
if (emplPosCount > 0) {
String emplId = partyId;
List<GenericValue> emlpfillCtxs = EntityQuery.use(delegator).from("EmplPositionFulfillment")
.where("emplPositionId", emplId)
.filterByDate().queryList();
if (UtilValidate.isNotEmpty(emlpfillCtxs)) {
for (GenericValue emlpfillCtx : emlpfillCtxs ) {
String memberId = emlpfillCtx.getString("partyId");
GenericValue memCtx = EntityQuery.use(delegator).from("Person").where("partyId", partyId).queryOne();
String title = null;
if (UtilValidate.isNotEmpty(memCtx)) {
String firstname = memCtx.getString("firstName");
String lastname = memCtx.getString("lastName");
if (UtilValidate.isEmpty(lastname)) {
lastname = "";
}
if (UtilValidate.isEmpty(firstname)) {
firstname = "";
}
title = firstname +" "+ lastname;
}
GenericValue memGroupCtx = EntityQuery.use(delegator).from("PartyGroup").where("partyId", partyId).queryOne();
if (UtilValidate.isNotEmpty(memGroupCtx)) {
title = memGroupCtx.getString("groupName");
}
Map<String,Object> josonMap = new HashMap<String, Object>();
Map<String,Object> dataMap = new HashMap<String, Object>();
Map<String,Object> dataAttrMap = new HashMap<String, Object>();
Map<String,Object> attrMap = new HashMap<String, Object>();
dataAttrMap.put("onClick", onclickFunction + "('" + memberId + additionParam + "')");
String hrefStr = hrefString + memberId;
if (UtilValidate.isNotEmpty(hrefString2)) {
hrefStr = hrefStr + hrefString2;
}
dataAttrMap.put("href", hrefStr);
attrMap.put("rel", "P");
attrMap.put("id", memberId);
dataMap.put("title", title);
dataMap.put("attr", dataAttrMap);
josonMap.put("attr",attrMap);
josonMap.put("data", dataMap);
responseList.add(josonMap) ;
}
}
}
} catch (GenericEntityException e) {
e.printStackTrace();
throw new GenericEntityException(e);
}
return responseList;
}
private static List<Map<String, Object>> getChildComps(Map<String, Object> params) throws GenericEntityException{
Delegator delegator = (Delegator) params.get("delegator");
String onclickFunction = (String) params.get("onclickFunction");
String additionParam = (String) params.get("additionParam");
String hrefString = (String) params.get("hrefString");
String hrefString2 = (String) params.get("hrefString2");
Map<String , Object> partyGroup = (Map<String, Object>) params.get("partyGroup");
List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>();
List<GenericValue> childOfComs = null;
try {
childOfComs = EntityQuery.use(delegator).from("PartyRelationship")
.where("partyIdFrom", partyGroup.get("partyId"),
"partyRelationshipTypeId", "GROUP_ROLLUP")
.filterByDate().queryList();
if (UtilValidate.isNotEmpty(childOfComs)) {
for (GenericValue childOfCom : childOfComs ) {
Object catId = null;
String catNameField = null;
String title = null;
Map<String, Object> josonMap = new HashMap<String, Object>();
Map<String, Object> dataMap = new HashMap<String, Object>();
Map<String, Object> dataAttrMap = new HashMap<String, Object>();
Map<String, Object> attrMap = new HashMap<String, Object>();
catId = childOfCom.get("partyIdTo");
//Department or Sub department
GenericValue childContext = EntityQuery.use(delegator).from("PartyGroup").where("partyId", catId).queryOne();
if (UtilValidate.isNotEmpty(childContext)) {
catNameField = (String) childContext.get("groupName");
title = catNameField;
josonMap.put("title",title);
}
//Check child existing
List<GenericValue> childOfSubComs = EntityQuery.use(delegator).from("PartyRelationship")
.where("partyIdFrom", catId,
"partyRelationshipTypeId", "GROUP_ROLLUP")
.filterByDate().queryList();
//check employee position
List<GenericValue> isPosition = EntityQuery.use(delegator).from("EmplPosition").where("partyId", catId).queryList();
if (UtilValidate.isNotEmpty(childOfSubComs) || UtilValidate.isNotEmpty(isPosition)) {
josonMap.put("state", "closed");
}
//Employee
GenericValue emContext = EntityQuery.use(delegator).from("Person").where("partyId", catId).queryOne();
if (UtilValidate.isNotEmpty(emContext)) {
String firstname = (String) emContext.get("firstName");
String lastname = (String) emContext.get("lastName");
if (UtilValidate.isEmpty(lastname)) {
lastname = "";
}
if (UtilValidate.isEmpty(firstname)) {
firstname = "";
}
title = firstname +" "+ lastname;
}
dataAttrMap.put("onClick", onclickFunction + "('" + catId + additionParam + "')");
String hrefStr = hrefString + catId;
if (UtilValidate.isNotEmpty(hrefString2)) {
hrefStr = hrefStr + hrefString2;
}
dataAttrMap.put("href", hrefStr);
dataMap.put("attr", dataAttrMap);
dataMap.put("title", title);
attrMap.put("rel", "Y");
attrMap.put("id", catId);
josonMap.put("attr",attrMap);
josonMap.put("data", dataMap);
resultList.add(josonMap);
}
}
} catch (GenericEntityException e) {
e.printStackTrace();
throw new GenericEntityException(e);
}
return resultList;
}
private static List<Map<String, Object>> getEmployeeInComp(Map<String, Object> params) throws GenericEntityException{
List<GenericValue> isEmpls = null;
Delegator delegator = (Delegator) params.get("delegator");
String partyId = (String) params.get("partyId");
List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>();
try {
isEmpls = EntityQuery.use(delegator).from("EmplPosition")
.where(EntityCondition.makeCondition("partyId", EntityOperator.EQUALS, partyId),
EntityCondition.makeCondition("statusId", EntityOperator.NOT_EQUAL, "EMPL_POS_INACTIVE"))
.filterByDate("actualFromDate", "actualThruDate")
.queryList();
if (UtilValidate.isNotEmpty(isEmpls)) {
for (GenericValue childOfEmpl : isEmpls ) {
Map<String, Object> emplMap = new HashMap<String, Object>();
Map<String, Object> emplAttrMap = new HashMap<String, Object>();
Map<String, Object> empldataMap = new HashMap<String, Object>();
Map<String, Object> emplDataAttrMap = new HashMap<String, Object>();
String emplId = (String) childOfEmpl.get("emplPositionId");
String typeId = (String) childOfEmpl.get("emplPositionTypeId");
//check child
List<GenericValue> emlpfCtxs = EntityQuery.use(delegator).from("EmplPositionFulfillment")
.where("emplPositionId", emplId)
.filterByDate().queryList();
if (UtilValidate.isNotEmpty(emlpfCtxs)) {
emplMap.put("state", "closed");
}
GenericValue emplContext = EntityQuery.use(delegator).from("EmplPositionType").where("emplPositionTypeId", typeId).queryOne();
String title = null;
if (UtilValidate.isNotEmpty(emplContext)) {
title = (String) emplContext.get("description") + " " +"["+ emplId +"]";
}
String hrefStr = "emplPositionView?emplPositionId=" + emplId;
emplAttrMap.put("href", hrefStr);
emplAttrMap.put("onClick", "callEmplDocument" + "('" + emplId + "')");
empldataMap.put("title", title);
empldataMap.put("attr", emplAttrMap);
emplDataAttrMap.put("id", emplId);
emplDataAttrMap.put("rel", "N");
emplMap.put("data", empldataMap);
emplMap.put("attr",emplDataAttrMap);
emplMap.put("title",title);
resultList.add(emplMap);
}
}
} catch (GenericEntityException e) {
Debug.logError(e, module);
throw new GenericEntityException(e);
}
return resultList;
}
}