/*
* eGov suite of products aim to improve the internal efficiency,transparency,
* accountability and the service delivery of the government organizations.
*
* Copyright (C) <2015> eGovernments Foundation
*
* The updated version of eGov suite of products as by eGovernments Foundation
* is available at http://www.egovernments.org
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/ or
* http://www.gnu.org/licenses/gpl.html .
*
* In addition to the terms of the GPL license to be adhered to in using this
* program, the following additional terms are to be complied with:
*
* 1) All versions of this program, verbatim or modified must carry this
* Legal Notice.
*
* 2) Any misrepresentation of the origin of the material is prohibited. It
* is required that all modified versions of this material be marked in
* reasonable ways as different from the original version.
*
* 3) This license does not grant any rights to any user of the program
* with regards to rights under trademark law for use of the trade names
* or trademarks of eGovernments Foundation.
*
* In case of any queries, you can reach eGovernments Foundation at contact@egovernments.org.
*/
package org.egov.pims.service;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.log4j.Logger;
import org.egov.commons.Accountdetailkey;
import org.egov.commons.Accountdetailtype;
import org.egov.commons.EgwStatus;
import org.egov.commons.dao.AccountdetailkeyHibernateDAO;
import org.egov.commons.dao.AccountdetailtypeHibernateDAO;
import org.egov.commons.dao.EgwStatusHibernateDAO;
import org.egov.eis.entity.Assignment;
import org.egov.eis.entity.EmployeeView;
import org.egov.infra.admin.master.entity.AppConfigValues;
import org.egov.infra.admin.master.entity.Department;
import org.egov.infra.admin.master.entity.User;
import org.egov.infra.admin.master.service.AppConfigValueService;
import org.egov.infra.exception.ApplicationException;
import org.egov.infra.exception.ApplicationRuntimeException;
import org.egov.commons.exception.NoSuchObjectException;
import org.egov.commons.exception.TooManyValuesException;
import org.egov.infstr.services.PersistenceService;
import org.egov.pims.commons.Designation;
import org.egov.pims.commons.Position;
import org.egov.pims.dao.AssignmentDAO;
import org.egov.pims.dao.GenericMasterDAO;
import org.egov.pims.dao.PersonalInformationDAO;
import org.egov.pims.model.EmployeeNamePoJo;
import org.egov.pims.model.GenericMaster;
import org.egov.pims.model.LangKnown;
import org.egov.pims.model.PersonalInformation;
import org.egov.pims.model.SearchEmpDTO;
import org.egov.pims.model.ServiceHistory;
import org.egov.pims.utils.EisManagersUtill;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.hibernate.type.IntegerType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@Service
public class EmployeeServiceImpl implements EmployeeServiceOld {
/*
* (non-Javadoc)
* @see
* org.egov.infstr.utils.ejb.support.AbstractStatelessSessionBean#ejbCreate
* ()
*/
private static final Logger logger = Logger.getLogger(EmployeeServiceImpl.class);
private EisUtilService eisService;
private PersistenceService persistenceService;
private PersonalInformationDAO personalInformationDAO;
private AssignmentDAO assignmentDAO;
private AppConfigValueService appConfigValuesService;
@PersistenceContext
private EntityManager entityManager;
@Autowired
private EgwStatusHibernateDAO egwStatusHibernateDAO;
@Autowired
private AccountdetailtypeHibernateDAO accountdetailtypeHibernateDAO;
@Autowired
private AccountdetailkeyHibernateDAO accountdetailkeyHibernateDAO;
@Autowired
private GenericMasterDAO genericMasterDAO;
public Session getCurrentSession() {
return entityManager.unwrap(Session.class);
}
public PersistenceService getPersistenceService() {
return persistenceService;
}
public void setPersistenceService(PersistenceService persistenceService) {
this.persistenceService = persistenceService;
}
private final static Logger LOGGER = Logger.getLogger(EmployeeServiceImpl.class);
@Deprecated
public List searchEmployee(Integer departmentId, Integer designationId, String code, String name, String searchAll)
throws Exception {
List<EmployeeView> employeeList = null;
try {
String mainStr = "from EmployeeView ev where";
if (code != null && !code.equals("")) {
mainStr += " upper(trim(ev.employeeCode)) = :employeeCode and ";
}
if (departmentId.intValue() != 0) {
mainStr += " ev.deptId.id= :deptId and ";
}
if (designationId.intValue() != 0) {
mainStr += " ev.desigId.designationId = :designationId and ";
}
if (name != null && !name.equals("")) {
mainStr += " trim(upper(ev.employeeName)) like '%" + name.trim().toUpperCase() + "%' and ";
}
/*
* if(code!=null&&!code.equals("")) { mainStr
* +=" where upper(trim(ev.employeeCode)) = :employeeCode "; } else
* {
*/
if ((searchAll.equals("false") && designationId.intValue() != 0)) {
mainStr += " ((ev.toDate is null and ev.fromDate <= SYSDATE ) OR (ev.fromDate <= SYSDATE AND ev.toDate > SYSDATE)) and ev.isActive = '1' ";
} else if ((searchAll.equals("true") && designationId.intValue() != 0)) {
mainStr += " ((ev.toDate is null and ev.fromDate <= SYSDATE ) OR (ev.fromDate <= SYSDATE AND ev.toDate > SYSDATE)) ";
}
// Inspite of SearchAll is true or false, if employee code is
// entered, search for all active and inactive employees
else if (code != null && !code.equals("")) {
mainStr += " ((ev.toDate IS NULL AND ev.fromDate <= SYSDATE) OR (ev.fromDate <= SYSDATE AND ev.toDate > SYSDATE) "
+ " OR (ev.fromDate IN (SELECT MAX (evn.fromDate) FROM EmployeeView evn "
+ " WHERE evn.id = ev.id AND NOT EXISTS (SELECT evn2.id FROM EmployeeView evn2 WHERE evn2.id = ev.id AND "
+ " ((evn2.toDate IS NULL AND evn2.fromDate <= SYSDATE) OR (evn2.fromDate <= SYSDATE AND evn2.toDate > SYSDATE)) )))) ";
} else if (searchAll.equals("true") && designationId.intValue() == 0) {
mainStr += " ((ev.toDate IS NULL AND ev.fromDate <= SYSDATE) OR (ev.fromDate <= SYSDATE AND ev.toDate > SYSDATE) "
+ " OR (ev.fromDate IN (SELECT MAX (evn.fromDate) FROM EmployeeView evn "
+ " WHERE evn.id = ev.id AND NOT EXISTS (SELECT evn2.id FROM EmployeeView evn2 WHERE evn2.id = ev.id AND "
+ " ((evn2.toDate IS NULL AND evn2.fromDate <= SYSDATE) OR (evn2.fromDate <= SYSDATE AND evn2.toDate > SYSDATE)) )))) ";
} else {
mainStr += " ((ev.toDate is null and ev.fromDate <= SYSDATE ) OR (ev.fromDate <= SYSDATE AND ev.toDate > SYSDATE)) ";
}
// }
Query qry = null;
qry = getCurrentSession().createQuery(mainStr);
LOGGER.info("qryqryqryqry" + qry.toString());
if (code != null && !code.equals("")) {
qry.setString("employeeCode", code.trim().toUpperCase());
}
if (departmentId.intValue() != 0) {
qry.setLong("deptId", departmentId.longValue());
}
if (designationId.intValue() != 0) {
qry.setInteger("designationId", designationId);
}
employeeList = (List) qry.list();
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return employeeList;
}
public List searchEmployee(Integer departmentId, Integer designationId, String code, String name, Integer status)
throws Exception {
List<EmployeeView> employeeList = null;
try {
String mainStr = "from EmployeeView ev where ev.isPrimary='Y' and ";
if (code != null && !code.equals("")) {
mainStr += " upper(trim(ev.employeeCode)) = :employeeCode and ";
}
if (departmentId.intValue() != 0) {
mainStr += " ev.deptId.id= :deptId and ";
}
if (designationId.intValue() != 0) {
mainStr += " ev.desigId.designationId = :designationId and ";
}
if (name != null && !name.equals("")) {
mainStr += " trim(upper(ev.employeeName)) like '%" + name.trim().toUpperCase() + "%' and ";
}
if (status.intValue() != 0) {
mainStr += " ev.employeeStatus.id = :employeeStatus and ";
}
/*
* if(code!=null&&!code.equals("")) { mainStr
* +=" where upper(trim(ev.employeeCode)) = :employeeCode "; } else
* {
*/
if (status.intValue() != 0 && designationId.intValue() == 0) {
mainStr += " ((ev.toDate is null and ev.fromDate <= SYSDATE ) OR (ev.fromDate <= SYSDATE AND ev.toDate > SYSDATE)) and ev.employeeStatus.id = :employeeStatus ";
} else if (status.intValue() == 0 && designationId.intValue() != 0) {
mainStr += " ((ev.toDate is null and ev.fromDate <= SYSDATE ) OR (ev.fromDate <= SYSDATE AND ev.toDate > SYSDATE)) ";
}
// Inspite of SearchAll is true or false, if employee code is
// entered, search for all active and inactive employees
else if (code != null && !code.equals("")) {
mainStr += " ((ev.toDate IS NULL AND ev.fromDate <= SYSDATE) OR (ev.fromDate <= SYSDATE AND ev.toDate > SYSDATE) "
+ " OR (ev.fromDate IN (SELECT MAX (evn.fromDate) FROM EmployeeView evn "
+ " WHERE evn.id = ev.id AND NOT EXISTS (SELECT evn2.id FROM EmployeeView evn2 WHERE evn2.id = ev.id AND "
+ " ((evn2.toDate IS NULL AND evn2.fromDate <= SYSDATE) OR (evn2.fromDate <= SYSDATE AND evn2.toDate > SYSDATE)) )))) ";
} else if (status.intValue() != 0 || designationId.intValue() == 0) {
mainStr += " ((ev.toDate IS NULL AND ev.fromDate <= SYSDATE) OR (ev.fromDate <= SYSDATE AND ev.toDate > SYSDATE) "
+ " OR (ev.fromDate IN (SELECT MAX (evn.fromDate) FROM EmployeeView evn "
+ " WHERE evn.id = ev.id AND NOT EXISTS (SELECT evn2.id FROM EmployeeView evn2 WHERE evn2.id = ev.id AND "
+ " ((evn2.toDate IS NULL AND evn2.fromDate <= SYSDATE) OR (evn2.fromDate <= SYSDATE AND evn2.toDate > SYSDATE)) )))) ";
} else {
mainStr += " ((ev.toDate is null and ev.fromDate <= SYSDATE ) OR (ev.fromDate <= SYSDATE AND ev.toDate > SYSDATE)) ";
}
// }
Query qry = null;
qry = getCurrentSession().createQuery(mainStr);
LOGGER.info("qryqryqryqry" + qry.toString());
if (code != null && !code.equals("")) {
qry.setString("employeeCode", code.trim().toUpperCase());
}
if (departmentId.intValue() != 0) {
qry.setInteger("deptId", departmentId);
}
if (designationId.intValue() != 0) {
qry.setInteger("designationId", designationId);
}
if (status.intValue() != 0) {
qry.setInteger("employeeStatus", status);
}
employeeList = (List) qry.list();
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return employeeList;
}
/*
* search employee by department,designation,functionary,code and name
*/
public List searchEmployee(Integer departmentId, Integer designationId, Integer functionaryId, String code,
String name, Integer status) throws Exception {
List<EmployeeView> employeeList = null;
try {
String mainStr = "from EmployeeView ev where ";
if (code != null && !code.equals("")) {
mainStr += " upper(trim(ev.employeeCode)) = :employeeCode and ";
}
if (departmentId.intValue() != 0) {
mainStr += " ev.deptId.id= :deptId and ";
}
if (designationId.intValue() != 0) {
mainStr += " ev.desigId.designationId = :designationId and ";
}
if (functionaryId.intValue() != 0) {
mainStr += " ev.functionary.id = :functionaryId and ";
}
if (name != null && !name.equals("")) {
mainStr += " trim(upper(ev.employeeName)) like '%" + name.trim().toUpperCase() + "%' and ";
}
if (status.intValue() != 0) {
mainStr += " ev.employeeStatus.id = :employeeStatus and ";
}
/*
* if(code!=null&&!code.equals("")) { mainStr
* +=" where upper(trim(ev.employeeCode)) = :employeeCode "; } else
* {
*/
if (status.intValue() != 0 && designationId.intValue() == 0) {
mainStr += " ((ev.toDate is null and ev.fromDate <= SYSDATE ) OR (ev.fromDate <= SYSDATE AND ev.toDate > SYSDATE)) and ev.employeeStatus.id = :employeeStatus ";
} else if (status.intValue() == 0 && designationId.intValue() != 0) {
mainStr += " ((ev.toDate is null and ev.fromDate <= SYSDATE ) OR (ev.fromDate <= SYSDATE AND ev.toDate > SYSDATE)) ";
}
// Inspite of SearchAll is true or false, if employee code is
// entered, search for all active and inactive employees
else if (code != null && !code.equals("")) {
mainStr += " ((ev.toDate IS NULL AND ev.fromDate <= SYSDATE) OR (ev.fromDate <= SYSDATE AND ev.toDate > SYSDATE) "
+ " OR (ev.fromDate IN (SELECT MAX (evn.fromDate) FROM EmployeeView evn "
+ " WHERE evn.id = ev.id AND NOT EXISTS (SELECT evn2.id FROM EmployeeView evn2 WHERE evn2.id = ev.id AND "
+ " ((evn2.toDate IS NULL AND evn2.fromDate <= SYSDATE) OR (evn2.fromDate <= SYSDATE AND evn2.toDate > SYSDATE)) )))) ";
} else if (status.intValue() != 0 || designationId.intValue() == 0) {
mainStr += " ((ev.toDate IS NULL AND ev.fromDate <= SYSDATE) OR (ev.fromDate <= SYSDATE AND ev.toDate > SYSDATE) "
+ " OR (ev.fromDate IN (SELECT MAX (evn.fromDate) FROM EmployeeView evn "
+ " WHERE evn.id = ev.id AND NOT EXISTS (SELECT evn2.id FROM EmployeeView evn2 WHERE evn2.id = ev.id AND "
+ " ((evn2.toDate IS NULL AND evn2.fromDate <= SYSDATE) OR (evn2.fromDate <= SYSDATE AND evn2.toDate > SYSDATE)) )))) ";
} else {
mainStr += " ((ev.toDate is null and ev.fromDate <= SYSDATE ) OR (ev.fromDate <= SYSDATE AND ev.toDate > SYSDATE)) ";
}
// }
Query qry = null;
qry = getCurrentSession().createQuery(mainStr);
LOGGER.info("qryqryqryqry" + qry.toString());
if (code != null && !code.equals("")) {
qry.setString("employeeCode", code.trim().toUpperCase());
}
if (departmentId.intValue() != 0) {
qry.setInteger("deptId", departmentId);
}
if (designationId.intValue() != 0) {
qry.setInteger("designationId", designationId);
}
if (functionaryId.intValue() != 0) {
qry.setInteger("functionaryId", functionaryId);
}
if (status.intValue() != 0) {
qry.setInteger("employeeStatus", status);
}
employeeList = (List) qry.list();
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return employeeList;
}
/**
* @param designationId
* @param code
* @param name
* @param status
* @param empType
* @param finParams
* department,functionary,function optional
* @return
* @throws Exception
*/
public List<EmployeeView> searchEmployee(Integer designationId, String code, String name, Integer status,
Integer empType, Map<String, Integer> finParams) throws Exception {
List<EmployeeView> employeeList = new ArrayList<EmployeeView>();
Integer departmentId = finParams.get("departmentId") == null ? 0 : finParams.get("departmentId");
Integer functionaryId = finParams.get("functionaryId") == null ? 0 : finParams.get("functionaryId");
Integer functionId = finParams.get("functionId") == null ? 0 : finParams.get("functionId");
Integer userId = finParams.get("userId") == null ? 0 : finParams.get("userId");
Integer isActive = finParams.get("isActive") == null ? 0 : finParams.get("isActive");
try {
Query qry = null;
if (code != null && !code.equals("")) {
logger.info(" Search by Code " + code);
List<EmployeeView> list = persistenceService.findAllBy(
" from EmployeeView ev where upper(ev.employeeCode) like ? ", code);
Iterator itr = list.iterator();
EmployeeView ev = null;
EmployeeView ev1 = null;
Assignment ass = null;
Date date = new Date();
PersonalInformation emp = null;
while (itr.hasNext()) {
ev = (EmployeeView) itr.next();
emp = getEmloyeeById(ev.getId().intValue());
break;
}
/*if (emp != null)
ass = emp.getAssignment(date,persistenceService);*/ // Returns current/latest
// primary/temp assignment as
// on current date
Iterator itr1 = list.iterator();
while (itr1.hasNext()) {
ev1 = (EmployeeView) itr1.next();
if (ass != null && ev1.getAssignment().equals(ass)) {
logger.info("ev.assId=" + ev1.getAssignment().getId());
logger.info("ass.assId=" + ass.getId());
logger.info("emp " + ev1.getName() + " : " + ev1.getPosition().getName() + " : "
+ ev1.getPrimary());
break;
}
}
if (ev1 != null)
employeeList.add(ev1);
} else {
logger.info(" Search by other params ");
String mainStr = "from EmployeeView ev where ";
if (departmentId.intValue() != 0) {
mainStr += " ev.deptId.id= :deptId and ";
}
if (designationId.intValue() != 0) {
mainStr += " ev.desigId.designationId = :designationId and ";
}
if (functionaryId.intValue() != 0) {
mainStr += " ev.functionary.id = :functionaryId and ";
}
if (functionId != null && functionId.intValue() != 0) {
mainStr += " ev.functionId.id = :functionId and ";
}
if (name != null && !name.equals("")) {
mainStr += " trim(upper(ev.employeeName)) like '%" + name.trim().toUpperCase() + "%' and ";
}
if (status.intValue() != 0) {
mainStr += " ev.employeeStatus.id = :employeeStatus and ";
}
if (empType.intValue() != 0) {
mainStr += " ev.employeeType.id=:employeeType and ";
}
if (isActive.intValue() != 0) {
mainStr += " ev.userMaster.active=:isActive and ";
}
if (userId.intValue() != 0)// to query the employee using
// employee username
{
mainStr += " ev.userMaster.id= :userId and ";
}
mainStr += " upper(ev.isPrimary)='Y' AND (( ev.toDate IS NULL AND ev.fromDate <= TO_DATE(SYSDATE,'dd-MM-yyy')) OR ( ev.fromDate <= TO_DATE(SYSDATE,'dd-MM-yyy') AND ev.toDate >= TO_DATE(SYSDATE,'dd-MM-yyy')) "
+ " OR (ev.fromDate IN (SELECT MAX (evn.fromDate) FROM EmployeeView evn "
+ " WHERE evn.id = ev.id AND NOT EXISTS (SELECT evn2.id FROM EmployeeView evn2 WHERE evn2.id = ev.id AND "
+ " ((evn2.toDate IS NULL AND evn2.fromDate <= TO_DATE(SYSDATE,'dd-MM-yyy')) OR (evn2.fromDate <= TO_DATE(SYSDATE,'dd-MM-yyy') AND evn2.toDate >= TO_DATE(SYSDATE,'dd-MM-yyy'))) )))) ";
qry = getCurrentSession().createQuery(mainStr);
if (departmentId.intValue() != 0) {
qry.setInteger("deptId", departmentId);
}
if (designationId.intValue() != 0) {
qry.setInteger("designationId", designationId);
}
if (functionaryId.intValue() != 0) {
qry.setInteger("functionaryId", functionaryId);
}
if (status.intValue() != 0) {
qry.setInteger("employeeStatus", status);
}
if (empType.intValue() != 0) {
qry.setInteger("employeeType", empType);
}
if (isActive.intValue() != 0) {
qry.setInteger("isActive", isActive);
}
if (userId.intValue() != 0) {
qry.setInteger("userId", userId);
}
employeeList = (List) qry.list();
}
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return employeeList;
}
/*
* public List searchEmployeeForNominees(Integer departmentId,Integer
* designationId,Integer functionaryId,String code,String name,Integer
* status,Integer empType)throws Exception { //session =
* null; try { String mainStr =
* "select distinct ev from EmployeeView ev,EmployeeNomineeMaster enm where ev.id=enm.employeeId.id and "
* ; if(code!=null&&!code.equals("")) { mainStr
* +=" upper(trim(ev.employeeCode)) = :employeeCode and "; name=""; }
* if(departmentId.intValue() != 0) { mainStr
* +=" ev.deptId.id= :deptId and "; } if(designationId.intValue() != 0) {
* mainStr += " ev.desigId.designationId = :designationId and "; }
* if(functionaryId.intValue() !=0) { mainStr +=
* " ev.functionary.id = :functionaryId and "; } if(name!= null &&
* !name.equals("")) { mainStr +=
* " trim(upper(ev.employeeName)) like :empName and "; }
* if(status.intValue() != 0 ) { mainStr +=
* " ev.employeeStatus.id = :employeeStatus and "; }
* if(empType.intValue()!=0) { mainStr +=
* " ev.employeeType.id=:employeeType and "; } mainStr +=
* " ((ev.toDate IS NULL AND ev.fromDate <= TO_DATE(SYSDATE,'dd-MM-yyy')) OR (upper(ev.isPrimary)='Y' and ev.fromDate <= TO_DATE(SYSDATE,'dd-MM-yyy') AND ev.toDate >= TO_DATE(SYSDATE,'dd-MM-yyy')) "
* +
* " OR (ev.fromDate IN (SELECT MAX (evn.fromDate) FROM EmployeeView evn "
* +
* " WHERE evn.id = ev.id AND upper(ev.isPrimary)='Y' AND NOT EXISTS (SELECT evn2.id FROM EmployeeView evn2 WHERE evn2.id = ev.id AND "
* +
* " ((evn2.toDate IS NULL AND evn2.fromDate <= TO_DATE(SYSDATE,'dd-MM-yyy')) OR (evn2.fromDate <= TO_DATE(SYSDATE,'dd-MM-yyy') AND evn2.toDate >= TO_DATE(SYSDATE,'dd-MM-yyy'))) )))"
* + " ) "; Query qry = null; qry =
* getCurrentSession().createQuery(mainStr);
* LOGGER.info("qryqryqryqry"+qry.toString());
* if(code!=null&&!code.equals("")) { qry.setString("employeeCode",
* code.trim().toUpperCase()); } if(name!= null && !name.equals("")) {
* qry.setString("empName","%"+name.trim().toUpperCase()+"%"); }
* if(departmentId.intValue() != 0) { qry.setInteger("deptId",
* departmentId); } if(designationId.intValue() != 0) {
* qry.setInteger("designationId", designationId); }
* if(functionaryId.intValue() != 0) { qry.setInteger("functionaryId",
* functionaryId); } if(status.intValue() != 0) {
* qry.setInteger("employeeStatus", status); } if(empType.intValue() != 0) {
* qry.setInteger("employeeType",empType); } employeeList =
* (List)qry.list(); } catch (HibernateException he) { LOGGER.error(he);
* ApplicationRuntimeException("Exception:" + he.getMessage(),he); } catch
* throw new ApplicationRuntimeException("Exception:" + he.getMessage(),he); }
* return employeeList; }
*/
@Deprecated
/**
*
* Api to get the employee with primary assignment for currentdate.
* If there is no Assignment for the current date then it pick's up the employee with lastest assignment ie: Maximum( From Date)
* @param departmentId
* @param designationId
* @param functionaryId
* @param code
* @param name
* @param status
* @param empType
* @return List of EmployeeView for current or Lastest Assignment.
* @throws Exception
*/
public List searchEmployee(Integer departmentId, Integer designationId, Integer functionaryId, String code,
String name, Integer status, Integer empType) throws Exception {
List<EmployeeView> employeeList = null;
try {
String mainStr = "from EmployeeView ev where ";
if (code != null && !code.equals("")) {
mainStr += " upper(trim(ev.employeeCode)) = :employeeCode and ";
name = "";
}
if (departmentId.intValue() != 0) {
mainStr += " ev.deptId.id= :deptId and ";
}
if (designationId.intValue() != 0) {
mainStr += " ev.desigId.designationId = :designationId and ";
}
if (functionaryId.intValue() != 0) {
mainStr += " ev.functionary.id = :functionaryId and ";
}
if (name != null && !name.equals("")) {
mainStr += " trim(upper(ev.employeeName)) like :empName and ";
}
if (status.intValue() != 0) {
mainStr += " ev.employeeStatus.id = :employeeStatus and ";
}
if (empType.intValue() != 0) {
mainStr += " ev.employeeType.id=:employeeType and ";
}
mainStr += " ((ev.toDate IS NULL AND ev.fromDate <= TO_DATE(SYSDATE,'dd-MM-yyy')) OR (upper(ev.isPrimary)='Y' and ev.fromDate <= TO_DATE(SYSDATE,'dd-MM-yyy') AND ev.toDate >= TO_DATE(SYSDATE,'dd-MM-yyy')) "
+ " OR (ev.fromDate IN (SELECT MAX (evn.fromDate) FROM EmployeeView evn "
+ " WHERE evn.id = ev.id AND upper(ev.isPrimary)='Y' AND NOT EXISTS (SELECT evn2.id FROM EmployeeView evn2 WHERE evn2.id = ev.id AND "
+ " ((evn2.toDate IS NULL AND evn2.fromDate <= TO_DATE(SYSDATE,'dd-MM-yyy')) OR (evn2.fromDate <= TO_DATE(SYSDATE,'dd-MM-yyy') AND evn2.toDate >= TO_DATE(SYSDATE,'dd-MM-yyy'))) )))) ";
Query qry = null;
qry = getCurrentSession().createQuery(mainStr);
LOGGER.info("qryqryqryqry" + qry.toString());
if (code != null && !code.equals("")) {
qry.setString("employeeCode", code.trim().toUpperCase());
}
if (departmentId.intValue() != 0) {
qry.setInteger("deptId", departmentId);
}
if (name != null && !name.equals("")) {
qry.setString("empName", "%" + name.trim().toUpperCase() + "%");
}
if (designationId.intValue() != 0) {
qry.setInteger("designationId", designationId);
}
if (functionaryId.intValue() != 0) {
qry.setInteger("functionaryId", functionaryId);
}
if (status.intValue() != 0) {
qry.setInteger("employeeStatus", status);
}
if (empType.intValue() != 0) {
qry.setInteger("employeeType", empType);
}
employeeList = (List) qry.list();
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return employeeList;
}
public List<EmployeeView> searchEmployeeByGrouping(LinkedList<String> groupingByOrder) throws Exception {
List<EmployeeView> employeeList = null;
try {
String mainStr = "from EmployeeView ev where ";
String orderByStr = "";
for (int i = 0; i < groupingByOrder.size(); i++) {
if (groupingByOrder.get(i).toString().equals("FundCode")) {
if (!orderByStr.equals("")) {
orderByStr = orderByStr + ", ";
}
orderByStr = orderByStr + " ev.assignment.fundId.code";
} else if (groupingByOrder.get(i).toString().equals("FunctionCode")) {
if (!orderByStr.equals("")) {
orderByStr = orderByStr + ", ";
}
orderByStr = orderByStr + " ev.assignment.functionId.code";
} else if (groupingByOrder.get(i).toString().equals("DeptCode")) {
if (!orderByStr.equals("")) {
orderByStr = orderByStr + ", ";
}
orderByStr = orderByStr + " ev.assignment.deptId.deptCode";
}
}
if (!orderByStr.equals("")) {
orderByStr = " order by " + orderByStr;
}
mainStr += " ((ev.toDate is null and ev.fromDate <= SYSDATE ) OR (ev.fromDate <= SYSDATE AND ev.toDate > SYSDATE)) and ev.assignment.isPrimary='Y' ";
mainStr = mainStr + orderByStr;
Query qry = null;
qry = getCurrentSession().createQuery(mainStr);
LOGGER.info("Query in search Employee by grouping==" + qry.toString());
employeeList = (List) qry.list();
} catch (HibernateException he) {
LOGGER.error("Exception ===" + he.getMessage());
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception e) {
LOGGER.error("Exception ===" + e.getMessage());
throw new ApplicationRuntimeException("Exception:" + e.getMessage(), e);
}
return employeeList;
}
public List searchEmployee(Integer empId) throws Exception {
ArrayList<SearchEmpDTO> dataElCol = new ArrayList<SearchEmpDTO>();
List employeeList = null;
try {
String mainStr = "select ev.employeeCode,ev.employeeName,ev.id,ev.desigId.designationId, ev.deptId.id ,ev.fromDate,ev.toDate from EmployeeView ev where ev.id = :empId";
Query qry = getCurrentSession().createQuery(mainStr);
if (empId.intValue() != 0) {
qry.setInteger("empId", empId);
}
employeeList = qry.list();
for (Iterator iter = employeeList.iterator(); iter.hasNext();) {
Object[] objArray = (Object[]) iter.next();
addEmployee(objArray, dataElCol);
}
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return dataElCol;
}
private void addEmployee(Object[] objArray, ArrayList<SearchEmpDTO> dataElColt) {
try {
int len = objArray.length;
Integer id = Integer.valueOf(0);
String empCode = "";
String fName = "";
Integer desid = null;
Integer deptId = null;
java.sql.Date fromDate = null;
java.sql.Date toDate = null;
for (int i = 0; i < len; i++) {
if (i == 0) {
empCode = (String) objArray[i];
} else if (i == 1) {
fName = (String) objArray[i];
} else if (i == 2) {
id = (Integer) objArray[i];
} else if (i == 3) {
desid = (Integer) objArray[i];
} else if (i == 4) {
deptId = (Integer) objArray[i];
} else if (i == 5) {
fromDate = (java.sql.Date) objArray[i];
} else if (i == 6) {
toDate = (java.sql.Date) objArray[i];
}
if (i == 6) {
dataElColt.add(new SearchEmpDTO(desid, deptId, empCode, fName, id, fromDate, toDate));
}
}
} catch (Exception e) {
LOGGER.error(e);
throw new ApplicationRuntimeException("Exception:" + e.getMessage(), e);
}
}
public Assignment getAssignmentByEmpAndDate(Date date, Integer empId) {
Assignment assignment = null;
try {
if (empId != null) {
String mainStr = " select ev.assignment from EmployeeView ev where ev.assignment.isPrimary = 'Y' and ev.id = :empId and ((ev.toDate is null and ev.fromDate <= :date1 ) OR (ev.fromDate <= :date2 AND ev.toDate >= :date3 ))";
Query qry = getCurrentSession().createQuery(mainStr);
qry.setInteger("empId", empId);
qry.setDate("date1", new java.sql.Date(date.getTime()));
qry.setDate("date2", new java.sql.Date(date.getTime()));
qry.setDate("date3", new java.sql.Date(date.getTime()));
if (qry.list() != null && !qry.list().isEmpty()) {
assignment = (Assignment) qry.list().get(0);
}
}
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return assignment;
}
public Assignment getLatestAssignmentForEmployee(Integer empId) {
// changing sysdate to current date of java
Date currDate = new Date();
Assignment assignment = null;
try {
String mainStr = "";
mainStr = " select ev.assignment from EmployeeView ev where ev.assignment.isPrimary = 'Y' and ev.id = :empId and ((ev.toDate is null and ev.fromDate <= :sysDate ) OR (ev.fromDate <= :sysDate AND ev.toDate >= :sysDate))";
Query qry = getCurrentSession().createQuery(mainStr);
if (empId != null) {
qry.setInteger("empId", empId);
qry.setDate("sysDate", new java.sql.Date(currDate.getTime()));
}
if (qry.list() != null && !qry.list().isEmpty()) {
for (Iterator iter = qry.list().iterator(); iter.hasNext();) {
assignment = (Assignment) iter.next();
}
}
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return assignment;
}
/*
* public List getListByAppNoAndMeMoNo(String applicationNumber ,String
* chargeMemoNo,Integer empId) { List<DisciplinaryPunishment> list = new
* ArrayList<DisciplinaryPunishment>(); //session =
* "select dp.disciplinaryPunishmentId from DisciplinaryPunishment dp,PersonalInformation pi where dp.employeeId = pi.idPersonalInformation and dp.employeeId = :empId "
* ; if(chargeMemoNo!=null&&!chargeMemoNo.equals("")) mainStr
* +=" and upper(trim(dp.chargeMemoNo)) = :chargeMemoNo ";
* if(applicationNumber!=null&&!applicationNumber.equals("")) mainStr
* +=" and upper(trim(dp.applicationNumber)) = :applicationNumber "; Query
* qry = getCurrentSession().createQuery(mainStr); if(empId != null) {
* qry.setInteger("empId", empId); }
* if(chargeMemoNo!=null&&!chargeMemoNo.equals("")) {
* qry.setString("chargeMemoNo", chargeMemoNo); }
* if(applicationNumber!=null&&!applicationNumber.equals("")) {
* qry.setString("applicationNumber", applicationNumber); }
* if(qry.list()!=null&&!qry.list().isEmpty()) { Integer desigId = null;
* for(Iterator iter = qry.list().iterator();iter.hasNext();) { desigId =
* (Integer)iter.next(); list.add(getDisciplinaryPunishmentById(desigId)); }
* } } catch (HibernateException he) { LOGGER.error(he);
* ApplicationRuntimeException("Exception:" + he.getMessage(),he); } catch
* throw new ApplicationRuntimeException("Exception:" + he.getMessage(),he); }
* return list; }
*/
/*
* public List<SearchEmpDTO> getHistoryOfEmpForCurrentFinY(Integer
* empId,java.util.Date givenDate) { List<SearchEmpDTO> list = new
* ArrayList<SearchEmpDTO>(); CFinancialYear financialYear=null;
* CalendarYear calYear=null; SimpleDateFormat smt = new
* SimpleDateFormat("dd-MMM-yyyy",Locale.getDefault()); String finId = null;
* java.util.Date stFyDate=null; Date myGivenDate = givenDate; //String
* finId = EisManagersUtill.getCommonsManager().getCurrYearFiscalId();
* if(EisManagersUtill.getEmpLeaveService().isLeaveCalendarBased()) {
* if(myGivenDate==null) { myGivenDate = new Date(); finId
* =smt.format(myGivenDate); } else { finId =smt.format(myGivenDate); }
* calYear
* =EisManagersUtill.getEmpLeaveService().getCalendarYearById(Long.valueOf
* (finId)); stFyDate = calYear.getStartingDate(); } else { //fix for leave
* report encahshed leave type where from date will be null
* if(myGivenDate==null) { myGivenDate = new Date(); finId =
* smt.format(myGivenDate); } else { finId = smt.format(myGivenDate); }
* financialYear =
* EisManagersUtill.getCommonsService().findFinancialYearById
* (Long.valueOf(finId)); stFyDate = financialYear.getStartingDate(); }
* String mainStr =
* "select ev.desigId.designationId, ev.fromDate,ev.toDate from EmployeeView ev where ev.id = :empId and ( ev.toDate is null or ev.toDate >= :startingFy ) and ev.fromDate < :givenDate "
* ; Query qry = getCurrentSession().createQuery(mainStr); if(empId != null)
* { qry.setInteger("empId", empId); qry.setDate("startingFy", new
* java.sql.Date(stFyDate.getTime())); qry.setDate("givenDate",
* myGivenDate); } List listOfHistory = qry.list();
* if(qry.list()!=null&&!qry.list().isEmpty()) { for(Iterator iter =
* listOfHistory.iterator();iter.hasNext();) { Object [] objArray = (Object
* [])iter.next();
* addListEmployeeHistory(empId,objArray,list,myGivenDate,stFyDate); } } }
* catch (HibernateException he) { LOGGER.error(he);
* ApplicationRuntimeException("Exception:" + he.getMessage(),he); } catch
* throw new ApplicationRuntimeException("Exception:" + he.getMessage(),he); }
* return list; }
*/
/*
* public List getHistoryOfEmpForGivenFinY(Integer empId,java.util.Date
* givenDate,CFinancialYear financialYear) { List<SearchEmpDTO> list = new
* ArrayList<SearchEmpDTO>(); //String finId =
* EisManagersUtill.getCommonsManager().getCurrYearFiscalId(); //session =
* = EisManagersUtill.getCommonsManager().findFinancialYearById(new
* Long(finId)); java.util.Date stFyDate = financialYear.getStartingDate();
* String mainStr =
* "select ev.desigId.designationId, ev.fromDate,ev.toDate from EmployeeView ev where ev.id = :empId and ( ev.toDate is null or ev.toDate >= :startingFy ) and ev.fromDate < :givenDate "
* ; Query qry = getCurrentSession().createQuery(mainStr); if(empId != null)
* { qry.setInteger("empId", empId); qry.setDate("startingFy", new
* java.sql.Date(stFyDate.getTime())); qry.setDate("givenDate", givenDate);
* } List listOfHistory = qry.list();
* if(qry.list()!=null&&!qry.list().isEmpty()) { for(Iterator iter =
* listOfHistory.iterator();iter.hasNext();) { Object [] objArray = (Object
* [])iter.next();
* addListEmployeeHistory(empId,objArray,list,givenDate,stFyDate); } } }
* catch (HibernateException he) { LOGGER.error(he);
* ApplicationRuntimeException("Exception:" + he.getMessage(),he); } catch
* throw new ApplicationRuntimeException("Exception:" + he.getMessage(),he); }
* return list; }
*/
/*
* private void addListEmployeeHistory(Integer empId,Object []
* objArray,List<SearchEmpDTO> l,java.util.Date givenDate,java.util.Date
* stFyDate) { try { int len = objArray.length; java.sql.Date todesDate
* =null; java.sql.Date fromdesDate =null; Integer desig =null; for(int
* i=0;i<len;i++) { if(i==1) { fromdesDate =(java.sql.Date)objArray[i]; }
* else if(i==0) { desig =(Integer)objArray[i]; } else if(i==2) { todesDate
* =(java.sql.Date)objArray[i]; if(todesDate==null) { todesDate = new
* java.sql.Date(givenDate.getTime()); } else {
* if(todesDate.getTime()>givenDate.getTime()) { todesDate = new
* java.sql.Date(givenDate.getTime()); } } if(fromdesDate.getTime() <
* stFyDate.getTime()) { fromdesDate = new
* java.sql.Date(stFyDate.getTime()); } l.add(new
* SearchEmpDTO(desig,Integer.
* valueOf(0),"","",Integer.valueOf(empId),fromdesDate,todesDate)); } } }
* catch (Exception e) { LOGGER.error(e);
* ApplicationRuntimeException("Exception:" + e.getMessage(),e); } }
*/
public PersonalInformation getEmployeeforPosition(Position pos) {
User uerImpl = null;
PersonalInformation personalInformation = new PersonalInformation();
try {
String mainStr = "";
mainStr = " select id from EG_EIS_EMPLOYEEINFO ev where ev.POS_ID = :pos and ((ev.to_Date is null and ev.from_Date <= SYSDATE ) OR (ev.from_Date <= SYSDATE AND ev.to_Date > SYSDATE))";
Query qry = getCurrentSession().createSQLQuery(mainStr).addScalar("id", IntegerType.INSTANCE);
;
if (pos != null) {
qry.setEntity("pos", pos);
}
if (qry.list() != null && !qry.list().isEmpty()) {
for (Iterator iter = qry.list().iterator(); iter.hasNext();) {
Integer id = (Integer) iter.next();
personalInformation = EisManagersUtill.getEmployeeService().getEmloyeeById(id);
}
}
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return personalInformation;
}
public Position getPositionforEmp(Integer empId) {
Position position = null;
List list = null;
try {
String mainStr = "";
mainStr = " select POS_ID from EG_EIS_EMPLOYEEINFO ev where ev.ID = :empId and ((ev.to_Date is null and ev.from_Date <= SYSDATE ) OR (ev.from_Date <= SYSDATE AND ev.to_Date >= SYSDATE))";
Query qry = getCurrentSession().createSQLQuery(mainStr).addScalar("POS_ID", IntegerType.INSTANCE);
if (empId != null) {
qry.setInteger("empId", empId);
}
list = qry.list();
if (list != null && !list.isEmpty()) {
for (Iterator iter = qry.list().iterator(); iter.hasNext();) {
Integer id = (Integer) iter.next();
if (id != null)
position = EisManagersUtill.getEisCommonsService().getPositionById(id);
}
}
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return position;
}
/*
* public boolean checkSanctionNoForDisciplinary(String sanctionNo) {
* qry = getCurrentSession().createQuery(
* "select dp.id from DisciplinaryPunishmentApproval dp where upper(dp.sanctionNo) = :sanctionNo "
* ); if(sanctionNo != null ) { qry.setString("sanctionNo", sanctionNo); }
* if(qry.list()!=null&&!qry.list().isEmpty()) { Object obj = null;
* for(Iterator iter = qry.list().iterator();iter.hasNext();) { obj =
* (Object)iter.next(); b = true; } } return b; }
*/
public boolean checkDuplication(String name, String className) {
boolean b = false;
try {
Query qry = getCurrentSession()
.createQuery("from " + className + " CA where trim(upper(CA.name)) = :name ");
qry.setString("name", name);
Iterator iter = qry.iterate();
if (iter.hasNext()) {
b = true;
}
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return b;
}
List appliedDisiplinaryApplications = new ArrayList();
List rejectedDisiplinaryApplications = new ArrayList();
List approvedDisiplinaryApplications = new ArrayList();
public PersonalInformation getEmpForUserId(Long userId) {
return personalInformationDAO.getPersonalInformationByUserId(userId);
}
public void createAssignment(Assignment egEmpAssignment) {
try {
assignmentDAO.create(egEmpAssignment);
} catch (Exception e) {
LOGGER.error(e);
throw new ApplicationRuntimeException("Exception:" + e.getMessage(), e);
}
}
public PersonalInformation createEmloyee(PersonalInformation egpimsPersonalInformation) {
try {
if (egpimsPersonalInformation != null) {
personalInformationDAO.create(egpimsPersonalInformation);
Accountdetailtype accountdetailtype = (accountdetailtypeHibernateDAO.getAccountdetailtypeByName("Employee"));
Accountdetailkey adk = new Accountdetailkey();
adk.setAccountdetailtype(accountdetailtype);
adk.setGroupid(1);
adk.setDetailkey(egpimsPersonalInformation.getIdPersonalInformation());
adk.setDetailname(accountdetailtype.getAttributename());
accountdetailkeyHibernateDAO.create(adk);
}
} catch (Exception e) {
LOGGER.error(e);
throw new ApplicationRuntimeException("Exception:" + e.getMessage(), e);
}
return egpimsPersonalInformation;
}
public void updateEmloyee(PersonalInformation egpimsPersonalInformation) {
try {
if (egpimsPersonalInformation != null)
personalInformationDAO.update(egpimsPersonalInformation);
} catch (Exception e) {
LOGGER.error(e);
throw new ApplicationRuntimeException("Exception:" + e.getMessage(), e);
}
}
public PersonalInformation getEmloyeeById(Integer employeeId) {
PersonalInformation egpimsPersonalInformation = null;
egpimsPersonalInformation = personalInformationDAO.getPersonalInformationByID(employeeId);
return egpimsPersonalInformation;
}
public GenericMaster getGenericMaster(Integer masterId, String masterName) {
GenericMaster genericMaster = null;
genericMaster = (GenericMaster) genericMasterDAO.getGenericMaster(masterId.intValue(), masterName);
return genericMaster;
}
public Assignment getAssignmentById(Integer assignmentId) {
Assignment assignment = null;
assignment = assignmentDAO.getAssignmentById(assignmentId);
return assignment;
}
public void updateAssignment(Assignment assignment) {
try {
if (assignment != null)
assignmentDAO.update(assignment);
} catch (RuntimeException e) {
LOGGER.error(e);
throw new ApplicationRuntimeException("Exception:" + e.getMessage(), e);
}
}
public void addLangKnown(PersonalInformation personalInformation, LangKnown langKnown) {
try {
personalInformation.addLangKnown(langKnown);
} catch (RuntimeException e) {
LOGGER.error(e);
throw new ApplicationRuntimeException("Exception:" + e.getMessage(), e);
}
}
public List getListOfEmpforDept(Integer deptId) {
PersonalInformation personalInformation = null;
List listOfEmpOfSameDept = new ArrayList();
try {
Collection employeeList = searchEmployee(Integer.valueOf(deptId), Integer.valueOf(0), "", "", "false");
if (!employeeList.isEmpty()) {
Iterator iter = employeeList.iterator();
while (iter.hasNext()) {
EmployeeView cataEl = (EmployeeView) iter.next();
personalInformation = (PersonalInformation) getEmloyeeById(cataEl.getId().intValue());
listOfEmpOfSameDept.add(personalInformation);
}
}
} catch (Exception e) {
LOGGER.error(e);
throw new ApplicationRuntimeException("Exception:" + e.getMessage(), e);
}
return listOfEmpOfSameDept;
}
public List getListOfEmpforDesignation(Integer desigId) {
PersonalInformation personalInformation = null;
List listOfEmpOfSameDesig = new ArrayList();
try {
Collection employeeList = searchEmployee(Integer.valueOf(0), Integer.valueOf(desigId), "", "", "false");
if (!employeeList.isEmpty()) {
Iterator iter = employeeList.iterator();
while (iter.hasNext()) {
EmployeeView cataEl = (EmployeeView) iter.next();
personalInformation = (PersonalInformation) getEmloyeeById(cataEl.getId().intValue());
listOfEmpOfSameDesig.add(personalInformation);
}
}
} catch (Exception e) {
LOGGER.error(e);
throw new ApplicationRuntimeException("Exception:" + e.getMessage(), e);
}
return listOfEmpOfSameDesig;
}
public EmployeeNamePoJo getNameOfEmployee(Integer empId) {
try {
EmployeeNamePoJo employeeNamePoJo = null;
PersonalInformation personalInformation = getEmloyeeById(Integer.valueOf(empId));
String fn = "";
String mn = "";
String ln = "";
if (personalInformation.getEmployeeFirstName() != null) {
fn = personalInformation.getEmployeeFirstName();
}
if (personalInformation.getEmployeeMiddleName() != null) {
mn = personalInformation.getEmployeeMiddleName();
}
if (personalInformation.getEmployeeLastName() != null) {
ln = personalInformation.getEmployeeLastName();
}
employeeNamePoJo = new EmployeeNamePoJo(fn, mn, ln);
return employeeNamePoJo;
} catch (Exception e) {
LOGGER.error(e);
throw new ApplicationRuntimeException("Exception:" + e.getMessage(), e);
}
}
public Map getAllPIMap() {
return personalInformationDAO.getAllPIMap();
}
public Map getMapForList(List list) {
Map<Integer, String> retMap = new LinkedHashMap<Integer, String>();
try {
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object object = (Object) iter.next();
Class classObj = object.getClass();
Field id = classObj.getField("id");
Field name = classObj.getField("name");
retMap.put((Integer) id.get(object), (String) name.get(object));
}
} catch (NoSuchFieldException nfe) {
throw new ApplicationRuntimeException("Exception:" + nfe.getMessage(), nfe);
} catch (IllegalAccessException iac) {
throw new ApplicationRuntimeException("Exception:" + iac.getMessage(), iac);
}
return retMap;
}
/**
* Returns Map for a given list
*
* @param list
* @return
*/
public Map getMapForList(List list, String fieldName1, String fieldName2) {
Map<Integer, String> retMap = new LinkedHashMap<Integer, String>();
try {
String id = null;
String name = null;
Long longObj = null;
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object object = (Object) iter.next();
id = (String) BeanUtils.getProperty(object, fieldName1);
name = (String) BeanUtils.getProperty(object, fieldName2);
if (id != null) {
retMap.put(Integer.valueOf(id), (String) name);
}
}
} catch (IllegalAccessException iac) {
throw new ApplicationRuntimeException("Exception:" + iac.getMessage(), iac);
} catch (InvocationTargetException e) {
LOGGER.error(e);
throw new ApplicationRuntimeException("Exception:" + e.getMessage(), e);
} catch (NoSuchMethodException e) {
LOGGER.error(e);
throw new ApplicationRuntimeException("Exception:" + e.getMessage(), e);
}
return retMap;
}
public void deleteLangKnownForEmp(PersonalInformation personalInformation) {
try {
personalInformationDAO.deleteLangKnownForEmp(personalInformation);
} catch (Exception e) {
LOGGER.error(e);
throw new ApplicationRuntimeException("Exception:" + e.getMessage(), e);
}
}
public Integer getNextVal() {
Integer id = Integer.valueOf(0);
try {
Query qry = getCurrentSession().createSQLQuery("SELECT SEQ_DIS_APP.nextval as id from dual").addScalar(
"id", IntegerType.INSTANCE);
if (qry.list() != null && !qry.list().isEmpty()) {
Integer obj = null;
for (Iterator iter = qry.list().iterator(); iter.hasNext();) {
obj = (Integer) iter.next();
id = obj;
}
}
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return id;
}
private String getNextValForCode() {
Integer id = Integer.valueOf(0);
try {
Query qry = getCurrentSession()
.createSQLQuery(
"SELECT CODE AS id FROM EG_EMPLOYEE emp WHERE emp.CODE =(SELECT MAX(code) FROM EG_EMPLOYEE ) FOR UPDATE ")
.addScalar("id", IntegerType.INSTANCE);
if (qry.list() != null && !qry.list().isEmpty()) {
Integer obj = null;
for (Iterator iter = qry.list().iterator(); iter.hasNext();) {
obj = (Integer) iter.next();
if (obj == null) {
id = 1;
} else {
id = obj + 1;
}
}
}
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return String.valueOf(id);
}
public String getEmployeeCode() {
LOGGER.info("getNextValForCode" + getNextValForCode());
return getNextValForCode();
}
public boolean checkPos(Integer posId, Date fromDate, Date toDate, Integer empId, String isPrimary) {
boolean b = false;
try {
Query qry = null;
if (fromDate != null && toDate != null) {
String main = "from Assignment ev where ev.isPrimary =:isPrimary and ev.position.id = :posId and ";
if (empId != null) {
main += "ev.employee.idPersonalInformation <>:empId and ";
}
main += "((ev.toDate is null ) or " + " (ev.fromDate <= :fromDate and ev.toDate >= :toDate) or "
+ " (ev.toDate <= :toDate and ev.toDate >= :fromDate) or "
+ " (ev.fromDate >= :fromDate and ev.fromDate <= :toDate)) ";
qry = getCurrentSession().createQuery(main);
} else if (fromDate != null && toDate == null) {
qry = getCurrentSession()
.createQuery(
"from Assignment ev where ev.position.id = :posId and ((ev.toDate is null ) or (ev.fromDate <= :fromDate AND ev.toDate >= :fromDate))");
}
if (posId != null) {
qry.setInteger("posId", posId);
}
if (empId != null) {
qry.setInteger("empId", empId);
}
if (isPrimary != null) {
qry.setCharacter("isPrimary", Character.valueOf(isPrimary.charAt(0)));
}
if (fromDate != null && toDate != null) {
qry.setDate("fromDate", new java.sql.Date(fromDate.getTime()));
qry.setDate("toDate", new java.sql.Date(toDate.getTime()));
} else if (fromDate != null && toDate == null) {
qry.setDate("fromDate", new java.sql.Date(fromDate.getTime()));
}
if (qry.list() != null && !qry.list().isEmpty()) {
b = true;
}
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return b;
}
public List getListOfPersonalInformationByEmpIdsList(List empIdsList) {
List list = null;
try {
if (empIdsList != null && !empIdsList.isEmpty()) {
list = (List) personalInformationDAO.getListOfPersonalInformationByEmpIdsList(empIdsList);
}
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return list;
}
public List getListOfEmployeeWithoutAssignment(Date fromdate) {
List list = null;
try {
list = (List) assignmentDAO.getListOfEmployeeWithoutAssignment(fromdate);
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return list;
}
public Assignment getLatestAssignmentForEmployeeByToDate(Integer empId, Date todate) throws Exception {
Assignment assignment = null;
try {
assignment = (Assignment) assignmentDAO.getLatestAssignmentForEmployeeByToDate(empId, todate);
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return assignment;
}
/**
* This is used for workflow Getting employee by passing dept,desig,boundary
*
* @param deptId
* @param designationId
* @param Boundaryid
* @return employee
* @throws TooManyValuesException
* @throws NoSuchObjectException
*/
public PersonalInformation getEmployee(Integer deptId, Integer designationId, Long Boundaryid)
throws TooManyValuesException, NoSuchObjectException {
PersonalInformation personalInformation = null;
try {
if (deptId != 0 && deptId != null && designationId != 0 && designationId != null && Boundaryid != 0
&& Boundaryid != null) {
personalInformation = personalInformationDAO.getEmployee(deptId, designationId, Boundaryid);
}
} catch (Exception e) {
throw new ApplicationRuntimeException("system.error", e);
}
return personalInformation;
}
/**
* This is used for workflow Getting employee by passing
* dept,desig,boundary,functionary
*
* @param deptId
* @param designationId
* @param Boundaryid
* @return employee
* @throws TooManyValuesException
* @throws NoSuchObjectException
*/
public PersonalInformation getEmployeeByFunctionary(Long deptId, Long designationId, Long Boundaryid,
Integer functionaryId) throws TooManyValuesException, NoSuchObjectException {
PersonalInformation personalInformation = null;
try {
if (deptId != 0 && deptId != null && designationId != 0 && designationId != null && Boundaryid != 0
&& Boundaryid != null && functionaryId != 0 && functionaryId != null) {
personalInformation = personalInformationDAO.getEmployeeByFunctionary(deptId, designationId,
Boundaryid, functionaryId);
}
} catch (Exception e) {
throw new ApplicationRuntimeException("system.error", e);
}
return personalInformation;
}
public Assignment getLastAssignmentByEmp(Integer empId) {
Assignment assignment = null;
try {
String mainStr = "";
mainStr = "select ev.assignment from EmployeeView ev where ev.id = :empId and nvl(ev.toDate,sysdate) in(select max(nvl(ev1.toDate,sysdate)) from EmployeeView ev1 where ev1.id = :empId)";
Query qry = getCurrentSession().createQuery(mainStr);
if (empId != null) {
qry.setInteger("empId", empId);
}
if (qry.list() != null && !qry.list().isEmpty()) {
for (Iterator iter = qry.list().iterator(); iter.hasNext();) {
assignment = (Assignment) iter.next();
break;
}
}
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return assignment;
}
public ServiceHistory getServiceId(Integer id) {
Query qry = getCurrentSession().createQuery("from ServiceHistory S where S.idService =:id ");
qry.setInteger("id", id);
return (ServiceHistory) qry.uniqueResult();
}
public List<PersonalInformation> getAllEmpByGrade(Integer gradeId) {
List<PersonalInformation> empList = null;
try {
empList = personalInformationDAO.getAllEmpByGrade(gradeId);
} catch (Exception e) {
LOGGER.error(e);
throw new ApplicationRuntimeException("Exception:" + e.getMessage(), e);
}
return empList;
}
public PersonalInformation getEmpForPositionAndDate(Date dateEntered, Integer posId) throws Exception {
PersonalInformation personalInformation = null;
try {
Query qry = null;
if (dateEntered != null) {
qry = getCurrentSession()
.createQuery(
"select ev.id from EmployeeView ev where ev.position = :posId and ((ev.toDate is null ) or (ev.fromDate <= :fromDate AND ev.toDate >= :fromDate))");
} else if (dateEntered == null) {
qry = getCurrentSession()
.createQuery(
"select ev.id from EmployeeView ev where ev.position = :posId and ((ev.toDate is null ) or (ev.fromDate <= TO_DATE(SYSDATE,'dd-MM-yyy') AND ev.toDate >= TO_DATE(SYSDATE,'dd-MM-yyy')))");
}
if (posId != null) {
qry.setInteger("posId", posId);
}
if (dateEntered != null) {
qry.setDate("fromDate", new java.sql.Date(dateEntered.getTime()));
}
if (qry.list() != null && !qry.list().isEmpty()) {
for (Iterator iter = qry.list().iterator(); iter.hasNext();) {
Integer id = (Integer) iter.next();
personalInformation = EisManagersUtill.getEmployeeService().getEmloyeeById(id);
}
}
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return personalInformation;
}
/**
* Returns list of employees for a given position and date
*
* @param dateEntered
* @param posId
* @return
* @throws Exception
*/
public List<PersonalInformation> getEmpListForPositionAndDate(Date dateEntered, Integer posId) throws Exception {
PersonalInformation personalInformation = null;
List<PersonalInformation> empList = null;
try {
Query qry = null;
if (dateEntered != null) {
qry = getCurrentSession()
.createQuery(
"select distinct ev.id from EmployeeView ev where ev.position = :posId and ((ev.toDate is null ) or (ev.fromDate <= :fromDate AND ev.toDate >= :fromDate))");
} else if (dateEntered == null) {
qry = getCurrentSession()
.createQuery(
"select distinct ev.id from EmployeeView ev where ev.position = :posId and ((ev.toDate is null ) or (ev.fromDate <= TO_DATE(SYSDATE,'dd-MM-yyy') AND ev.toDate >= TO_DATE(SYSDATE,'dd-MM-yyy')))");
}
if (posId != null) {
qry.setInteger("posId", posId);
}
if (dateEntered != null) {
qry.setDate("fromDate", new java.sql.Date(dateEntered.getTime()));
}
if (qry.list() != null && !qry.list().isEmpty()) {
empList = new ArrayList();
for (Iterator iter = qry.list().iterator(); iter.hasNext();) {
Integer id = (Integer) iter.next();
personalInformation = EisManagersUtill.getEmployeeService().getEmloyeeById(id);
empList.add(personalInformation);
}
}
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return empList;
}
/**
* return all distinct Designations to which employees are assigned in the
* given department for current date. This list includes primary as well as
* secondary assignments If there is No Designation for the given department
* then returns the empty list
*
* @param departmentId
* @param givenDate
* @return DesignationMaster List
*/
public List getAllDesignationByDept(Integer deptId) {
Integer departmentId = deptId;
List<Designation> designationMstrObj = new ArrayList<Designation>();
designationMstrObj = (List<Designation>) eisService.getAllDesignationByDept(departmentId, new Date());
return designationMstrObj;
}
/**
* Returns the list of active users who are assigned to the given
* designation. The designation can be a primary or temporary assignment of
* the user. The API does not currently check for active assignments
*
* @param DesgId
* @return the list of active users who are assigned to the given
* designation.
* @throws Exception
*/
public List getAllActiveUsersByGivenDesg(Integer DesgId) throws Exception {
List userList = null;
try {
if (DesgId != null && DesgId != 0) {
userList = personalInformationDAO.getAllActiveUsersByGivenDesg(DesgId);
}
} catch (Exception e) {
throw new ApplicationRuntimeException("system.error", e);
}
return userList;
}
/**
* Returns the list of employees (EmployeeView) who have a temporary
* assignment as on the given date assigned to the given position
*
* @param givenDate
* @param posId
* @return
*/
public List<EmployeeView> getEmployeeWithTempAssignment(Date givenDate, Integer posId) {
List list = null;
try {
list = (List) assignmentDAO.getEmployeeWithTempAssignment(givenDate, posId);
} catch (HibernateException he) {
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return list;
}
/**
* Returns the list of employees (EmployeeView) who have a temporary
* assignment as on the given date assigned to the given position and has
* the employee code equal to the given code
*
* @param givenDate
* @param posId
* @return
*/
public List<EmployeeView> getEmployeeWithTempAssignment(String code, Date givenDate, Integer posId) {
List list = null;
try {
list = (List) assignmentDAO.getEmployeeWithTempAssignment(code, givenDate, posId);
} catch (HibernateException he) {
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return list;
}
/**
* Returns a list of temporary Assignments as on given date for employees
* that have the given code and position. If any of the parameters are null,
* the parameter is ignored. For instance, if givenDate is null, all
* temporary assignments for employee with given code and when assigned to
* givenPosition will be returned
*
* @param code
* @param givenDate
* @param posId
* @return List of Assignment
*/
public List getEmpTempAssignment(String code, Date givenDate, Integer posId) {
List assignment = null;
try {
String mainStr = "";
mainStr = "from Assignment ev where ev.isPrimary='N'";
if (code != null && !code.equals("")) {
mainStr += "and ev.employee.employeeCode =:code ";
}
if (givenDate != null) {
mainStr += " and ev.fromDate <= :givenDate and ev.toDate >=:givenDate";
}
if (posId != null && posId != 0) {
mainStr += " and ev.position.id =:posId ";
}
Query qry = getCurrentSession().createQuery(mainStr);
if (code != null && !code.equals("")) {
qry.setString("code", code);
}
if (givenDate != null) {
qry.setDate("givenDate", givenDate);
}
if (posId != null && posId != 0) {
qry.setInteger("posId", posId);
}
assignment = qry.list();
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return assignment;
}
/**
* Returns a list of assignment ids. All assignments for the employee based
* on employee id and that fall in the given date will be returned.
*
* @param empId
* - Required parameter. If null is passed, the API throws an
* ApplicationException
* @param givenDate
* . Date as on which the assignments need to be returned. If
* this parameter is null, the current date is considered
* @return List of Assignment Ids
* @throws ApplicationException
*/
public List<Integer> getAssignmentsForEmp(Integer empId, Date givenDate) throws ApplicationException {
List list = null;
Query query = null;
try {
StringBuffer stringbuffer = new StringBuffer(
" select ASS_ID from EG_EIS_EMPLOYEEINFO ev where ev.ID = :empId");
if (empId == null) {
throw new ApplicationException("EmployeeId Not provided");
} else if (givenDate == null) {
stringbuffer
.append(" and ((ev.to_Date is null and ev.from_Date <= SYSDATE ) OR (ev.from_Date <= SYSDATE AND ev.to_Date >= SYSDATE))");
} else {
stringbuffer.append(" and ev.from_Date <= :givenDate AND ev.to_Date >= :givenDate");
}
query = getCurrentSession().createSQLQuery(stringbuffer.toString())
.addScalar("ASS_ID", IntegerType.INSTANCE);
if (query.getQueryString().contains(":givenDate")) {
query.setDate("givenDate", givenDate);
}
query.setInteger("empId", empId);
} catch (HibernateException hibException) {
LOGGER.error(hibException.getMessage());
throw new ApplicationException("HibernateException:" + hibException.getMessage(), hibException);
}
return query.list();
}
/**
* API that will return all positions for a user(temporary and permanent)
* for a date.
*
* @param user
* . Required. User object for which the positions are queried
* @param date
* Will consider current date if date is not provided
* @return
* @throws ApplicationException
*/
public List<Position> getPositionsForUser(User user, Date date) throws ApplicationException {
List<Position> positionList = new ArrayList<Position>();
Integer pos = null;
try {
String mainStr = "";
mainStr = "select a.position.id from Assignment a where a.employee.userMaster.id =:userId";
if (date != null) {
mainStr += " and ((a.toDate is null and a.fromDate<= :date) or (a.fromDate <= :date and a.toDate >= :date))";
} else {
mainStr += " and ((a.toDate is null and a.fromDate<= TO_DATE(SYSDATE,'dd-MM-yyy')) or (a.fromDate <= TO_DATE(SYSDATE,'dd-MM-yyy') and a.toDate >= TO_DATE(SYSDATE,'dd-MM-yyy')))";
}
Query qry = getCurrentSession().createQuery(mainStr);
if (user != null) {
qry.setLong("userId", user.getId());
}
if (date != null) {
qry.setDate("date", date);
}
if (qry.list() != null && !qry.list().isEmpty()) {
for (Iterator iter = qry.list().iterator(); iter.hasNext();) {
pos = (Integer) iter.next();
Position position = EisManagersUtill.getEisCommonsService().getPositionById(pos);
positionList.add(position);
}
}
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return positionList;
}
/**
* Returns a list of primary Assignments as on given date for employees that
* have the given code and position. If any of the parameters are null, the
* parameter is ignored. For instance, if givenDate is null, all primary
* assignments for employee with given code and when assigned to
* givenPosition will be returned
*
* @param code
* @param givenDate
* @param posId
* @return
*/
public List getEmpPrimaryAssignment(String code, Date givenDate, Integer posId) {
List assignment = null;
try {
String mainStr = "";
mainStr = "from Assignment ev where ev.isPrimary='Y'";
if (code != null && !code.equals("")) {
mainStr += "and ev.employee.employeeCode =:code ";
}
if (givenDate != null) {
mainStr += " and ev.fromDate <= :givenDate and ev.toDate >=:givenDate";
}
if (posId != null && posId != 0) {
mainStr += " and ev.position.id =:posId ";
}
Query qry = getCurrentSession().createQuery(mainStr);
if (code != null && !code.equals("")) {
qry.setString("code", code);
}
if (givenDate != null) {
qry.setDate("givenDate", givenDate);
}
if (posId != null && posId != 0) {
qry.setInteger("posId", posId);
}
assignment = qry.list();
} catch (HibernateException he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
LOGGER.error(he);
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return assignment;
}
/**
* Api Used to get the report for employee,Retired,Deceased,Suspended based
* on the dates. For Employed, Retired and Deceased, the employee's
* assignment dates are considered. Whereas for Suspended status, the
* Disciplinary Action details are considered.
*
* @param status
* @param fromDate
* @param toDate
* @return List of Assignment
* @throws Exception
*/
public List searchEmployee(Integer status, Date fromDate, Date toDate) throws Exception {
List<Assignment> employeeList = new ArrayList<Assignment>();
String mainStr = "";
try {
EgwStatus statusType = egwStatusHibernateDAO.findById(status, false);
if (statusType.getModuletype().equals("Employee") && statusType.getDescription().equals("Employed")) {
if (status.intValue() != 0) {
mainStr = "from Assignment ev where ev.employee.StatusMaster.id =:employeeStatus";
}
if (fromDate != null && toDate != null) {
/*
* mainStr +=
* " and ev.assignmentPrd.employeeId.dateOfFirstAppointment >= :fromDate "
* +
* " and ev.assignmentPrd.employeeId.dateOfFirstAppointment <= :toDate and ev.assignmentPrd.fromDate<=sysdate and ev.assignmentPrd.toDate >=sysdate"
* ;
*/
// enhanced to avoid to show all assignment
mainStr += " and ev.dateOfFirstAppointment >= :fromDate "
+ " and ev.dateOfFirstAppointment <= :toDate "
+ " and ((ev.fromDate<=sysdate and ev.toDate >=sysdate) "
+ " or (ev.fromDate in (select max(prd.fromDate) from Assignment prd where ev.employee.idPersonalInformation = prd.employee.idPersonalInformation "
+ " and not exists (select prd1.id from Assignment prd1 where prd1.employee.idPersonalInformation=ev.assignment.employee.idPersonalInformation "
+ " and ( prd1.dateOfFirstAppointment >= :fromDate and prd1.dateOfFirstAppointment <= :toDate and prd1.fromDate<= sysdate and prd1.toDate >= sysdate) )))) ";
}
} else if (statusType.getModuletype().equals("Employee") && statusType.getDescription().equals("Retired")) {
if (status.intValue() != 0) {
mainStr = "from Assignment ev where ev.employee.StatusMaster.id =:employeeStatus";
}
if (fromDate != null && toDate != null) {
/*
* mainStr +=
* " and ev.assignmentPrd.employeeId.retirementDate >= :fromDate "
* +
* " and ev.assignmentPrd.employeeId.retirementDate <= :toDate and ev.assignmentPrd.fromDate<=sysdate and ev.assignmentPrd.toDate >=sysdate"
* ;
*/
// enhanced to avoid to show all assignment
mainStr += " and ev.assignmentPrd.employeeId.retirementDate >= :fromDate "
+ " and ev.employee.retirementDate <= :toDate "
+ " and ((ev.fromDate<=sysdate and ev.toDate >=sysdate) "
+ " or (ev.fromDate in (select max(prd.fromDate) from Assignment prd where ev.employee.idPersonalInformation = prd.employee.idPersonalInformation "
+ " and not exists (select prd1.id from Assignment prd1 where prd1.employee.idPersonalInformation=ev.employee.idPersonalInformation "
+ " and ( prd1.employee.retirementDate >= :fromDate and prd1.employee.retirementDate <= :toDate and prd1.fromDate<= sysdate and prd1.toDate >= sysdate) )))) ";
}
} else if (statusType.getModuletype().equals("Employee") && statusType.getDescription().equals("Deceased")) {
if (status.intValue() != 0) {
mainStr = "from Assignment ev where ev.employee.StatusMaster.id =:employeeStatus";
}
if (fromDate != null && toDate != null) {
// enhanced to avoid to show all assignment
mainStr += " and ev.employee.deathDate >= :fromDate "
+ " and ev.employee.deathDate <= :toDate "
+ " and ((ev.fromDate<=sysdate and ev.toDate >=sysdate) "
+ " or (ev.fromDate in (select max(prd.fromDate) from Assignment prd where ev.employee.idPersonalInformation = prd.employee.idPersonalInformation "
+ " and not exists (select prd1.id from Assignment prd1 where prd1.employee.idPersonalInformation=ev.employee.idPersonalInformation "
+ " and ( prd1.employee.deathDate >= :fromDate and prd1.employee.deathDate <= :toDate and prd1.fromDate<= sysdate and prd1.toDate >= sysdate) )))) ";
}
}
// to be handled
/*
* else if(statusType.getModuletype().equals("Employee") &&
* statusType.getDescription().equals("Suspended")) {
* if(status.intValue() != 0) { mainStr =
* "from Assignment ev where ev.employee.StatusMaster.id =:employeeStatus"
* ; } if(fromDate != null && toDate!=null) { mainStr +=
* " and ev.employee.idPersonalInformation in " +
* "(select D.employee.idPersonalInformation from DisciplinaryPunishment D where "
* +
* " D.dateOfSuspension >= :fromDate and D.dateOfSuspension <= :toDate ) "
* ; } }
*/
Query qry = null;
qry = getCurrentSession().createQuery(mainStr);
logger.info("Query----" + qry.toString());
if (status.intValue() != 0) {
qry.setInteger("employeeStatus", status);
}
if (fromDate != null) {
qry.setDate("fromDate", new java.sql.Date(fromDate.getTime()));
}
if (toDate != null) {
qry.setDate("toDate", new java.sql.Date(toDate.getTime()));
}
employeeList = (List) qry.list();
} catch (HibernateException he) {
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
} catch (Exception he) {
throw new ApplicationRuntimeException("Exception:" + he.getMessage(), he);
}
return employeeList;
}
/**
* Returns the list of departments that the user is assigned to. This could
* be through primary as well as temporary assignments.
*
* @param userName
* @return List of Department
*/
public List getListOfDeptBasedOnUserDept(String userName) {
List deptList = new ArrayList();
try {
Query qry = null;
if (userName != null) {
qry = getCurrentSession().createQuery(
"from Department where id in (select deptId.id from Assignment where userName=:userName "
+ " and fromDate <= sysdate and toDate >= sysdate )");
}
if (userName != null) {
qry.setString("userName", userName);
}
if (qry != null && qry.list() != null && !qry.list().isEmpty()) {
for (Iterator iter = qry.list().iterator(); iter.hasNext();) {
Department deptImpl = (Department) iter.next();
deptList.add(deptImpl);
}
}
} catch (Exception e) {
throw new ApplicationRuntimeException("Exception:" + e.getMessage(), e);
}
return deptList;
}
public boolean isFilterByDept() {
boolean isFilterByDept = false;
String filterByDept = "NO";
AppConfigValues configValue = appConfigValuesService.getAppConfigValueByDate("EIS-PAYROLL", "FILTERBYDEPT",
new Date());
if (null != configValue) {
filterByDept = configValue.getValue();
filterByDept = filterByDept.toUpperCase();
}
// if selfApproval is true then single step approval
if ("YES".equals(filterByDept)) {
isFilterByDept = true;
}
return isFilterByDept;
}
/**
* Returns the list of Employees who are assigned to the given department
* and designation as of current date.
*
* @param deptId
* - Integer representing id of department
* @param desgId
* - Integer representing id of designation
* @return List of EmployeeView
*/
public List<EmployeeView> getEmployeeInfoBasedOnDeptAndDesg(Integer deptId, Integer desgId) {
List<EmployeeView> employeeList = new ArrayList<EmployeeView>();
Criteria criteria = getCurrentSession().createCriteria(EmployeeView.class)
.createAlias("deptId", "department").createAlias("desigId", "designation")
.add(Restrictions.eq("department.id", deptId))
.add(Restrictions.eq("designation.designationId", desgId))
.add(Restrictions.and(Restrictions.le("fromDate", new Date()), Restrictions.ge("toDate", new Date())))
.add(Restrictions.eq("isPrimary", 'Y')).add(Restrictions.eq("isActive", 1));
return criteria.list();
}
/**
* Returns the list of Employees who are assigned to the given department as
* of given date.
*
* @param deptId
* - Integer representing id of department
* @param date
* - Given date. If null, current date is assumed.
* @return List of EmployeeView
*/
public List<EmployeeView> getEmployeeInfoBasedOnDeptAndDate(Integer deptId, Date date) {
if (date == null)
date = new Date();
List<EmployeeView> employeeList = new ArrayList<EmployeeView>();
Criteria criteria = getCurrentSession().createCriteria(EmployeeView.class)
.createAlias("deptId", "department").add(Restrictions.eq("department.id", deptId))
.add(Restrictions.eq("isActive", 1))
.add(Restrictions.and(Restrictions.le("fromDate", date), Restrictions.ge("toDate", date)));
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
return criteria.list();
}
/**
* returns all the employees who has active assignment period
*
* @return
*/
public List<PersonalInformation> getAllEmployees() {
return getCurrentSession()
.createQuery(
"" + "select distinct employee from EmployeeView empview "
+ " where (sysdate between empview.fromDate and empview.toDate or "
+ " (empview.toDate is null and empview.fromDate<=sysdate))").list();
}
/**
* List of users not mapped to any of the employees
*
* @return empUserMapList
*/
public List getListOfUsersNotMappedToEmp() {
List empUserMapList = null;
try {
empUserMapList = personalInformationDAO.getListOfUsersNotMappedToEmp();
} catch (Exception e) {
LOGGER.error(e);
throw new ApplicationRuntimeException("Exception:" + e.getMessage(), e);
}
return empUserMapList;
}
public Designation getPresentDesignation(Integer idPersonalInformation) {
Assignment assignment = getLatestAssignmentForEmployee(idPersonalInformation);
return assignment.getDesignation();
}
public EisUtilService getEisService() {
return eisService;
}
public void setEisService(EisUtilService eisService) {
this.eisService = eisService;
}
public PersonalInformationDAO getPersonalInformationDAO() {
return personalInformationDAO;
}
public void setPersonalInformationDAO(PersonalInformationDAO personalInformationDAO) {
this.personalInformationDAO = personalInformationDAO;
}
public AssignmentDAO getAssignmentDAO() {
return assignmentDAO;
}
public void setAssignmentDAO(AssignmentDAO assignmentDAO) {
this.assignmentDAO = assignmentDAO;
}
public AppConfigValueService getAppConfigValuesService() {
return appConfigValuesService;
}
public void setAppConfigValuesService(
AppConfigValueService appConfigValuesService) {
this.appConfigValuesService = appConfigValuesService;
}
}