Commit 133ef00c authored by ssathu-nisum-com's avatar ssathu-nisum-com Committed by rbonthala-nisum-com

InactivateTheEmployeeFromProjectIfHeInactiveInManageEmployee (#131)

parent 2f529133
......@@ -296,14 +296,18 @@ public class ProjectServiceImpl implements ProjectService {
billings.setBillableStatus(pT.getBillableStatus());
billings.setAccount(pT.getAccount());
billings.setActive(true);
// checking
/*billings.setBillingStartDate(pT.getStartDate() == null
if(pT.getProjectId().equals(MyTimeUtils.BENCH_PROJECT_ID))
{
billings.setBillingStartDate(pT.getStartDate() == null
? DateUtils.truncate(new Date(), Calendar.DATE)
: DateUtils.truncate(pT.getStartDate(), Calendar.DATE));*/
: DateUtils.truncate(pT.getStartDate(), Calendar.DATE));
}else
{
billings.setBillingStartDate(pT.getNewBillingStartDate() == null
billings.setBillingStartDate(pT.getNewBillingStartDate() == null
? DateUtils.truncate(new Date(), Calendar.DATE)
: DateUtils.truncate(pT.getNewBillingStartDate(), Calendar.DATE));
}
if (pT.getEndDate() != null) {
billings.setBillingEndDate(
......
......@@ -2,6 +2,7 @@ package com.nisum.mytime.service;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
......@@ -19,9 +20,11 @@ import org.springframework.stereotype.Service;
import com.nisum.mytime.exception.handler.MyTimeException;
import com.nisum.mytime.model.Account;
import com.nisum.mytime.model.AccountInfo;
import com.nisum.mytime.model.BillingDetails;
import com.nisum.mytime.model.Designation;
import com.nisum.mytime.model.Domains;
import com.nisum.mytime.model.EmpLoginData;
import com.nisum.mytime.model.EmpShiftDetails;
import com.nisum.mytime.model.EmployeeLocationDetails;
import com.nisum.mytime.model.EmployeeRoles;
import com.nisum.mytime.model.Location;
......@@ -41,6 +44,7 @@ import com.nisum.mytime.repository.MasterDataRepo;
import com.nisum.mytime.repository.ProjectRepo;
import com.nisum.mytime.repository.ProjectTeamMatesRepo;
import com.nisum.mytime.repository.ShiftRepo;
import com.nisum.mytime.repository.TeamMatesBillingRepo;
import com.nisum.mytime.repository.TechnologyRepo;
import com.nisum.mytime.utils.MyTimeUtils;
import com.nisum.mytime.utils.PdfReportGenerator;
......@@ -92,6 +96,9 @@ public class UserServiceImpl implements UserService {
@Autowired
private AccountInfoRepo accountInfoRepo;
@Autowired
private TeamMatesBillingRepo teamMatesBillingRepo;
@Override
public Boolean fetchEmployeesData(String perticularDate,
......@@ -260,6 +267,28 @@ public class UserServiceImpl implements UserService {
projectTeamMatesRepo.save(profile);
}
}
// inactive the employee from the assigned project
if (employeeRoles.getEmpStatus().equals(MyTimeUtils.IN_ACTIVE_SPACE) && employeeRoles.getEndDate() != null
&& employeeRoles.getEndDate().compareTo(new Date()) <= 0) {
List<ProjectTeamMate> projectTeamMate = projectTeamMatesRepo
.findByEmployeeIdAndActive(employeeRoles.getEmployeeId(), true);
if (projectTeamMate.size()==1) {
ProjectTeamMate teamMate = projectTeamMate.get(0);
teamMate.setActive(false);
teamMate.setEndDate(employeeRoles.getEndDate());
List<BillingDetails> listBD = getEmployeeActiveBillingDetails(teamMate.getEmployeeId(),
teamMate.getProjectId());
if (listBD != null && !listBD.isEmpty()) {
BillingDetails billingDetailsExisting = listBD.get(0);
billingDetailsExisting.setBillingEndDate(employeeRoles.getEndDate());
billingDetailsExisting.setActive(false);
teamMatesBillingRepo.save(billingDetailsExisting);
}
projectTeamMatesRepo.save(teamMate);
updateShiftDetails(teamMate);
}
}
} catch (Exception e) {
}
return emp;
......@@ -495,4 +524,35 @@ public class UserServiceImpl implements UserService {
return domains;
}
public List<BillingDetails> getEmployeeActiveBillingDetails(String empId, String projectId) {
Query query4 = new Query();
query4.addCriteria(Criteria.where("active").is(new Boolean(true)));
query4.addCriteria(Criteria.where("employeeId").is(empId));
query4.addCriteria(Criteria.where("projectId").is(projectId));
List<BillingDetails> billings = mongoTemplate.find(query4, BillingDetails.class);
List<BillingDetails> billingsSorted = billings;
try {
billingsSorted = (billings == null || billings.size() == 0) ? billings
: billings.stream().sorted(Comparator.comparing(BillingDetails::getBillingStartDate).reversed())
.collect(Collectors.toList());
} catch (Exception e) {
// TODO: handle exception
}
return billingsSorted;
}
public void updateShiftDetails(ProjectTeamMate existingTeammate) {
Query getQuery = new Query();
getQuery.addCriteria(new Criteria().andOperator(Criteria.where("active").is(true),
Criteria.where("employeeId").is(existingTeammate.getEmployeeId())));
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
EmpShiftDetails existingShift = mongoTemplate.findOne(getQuery, EmpShiftDetails.class);
if (existingShift != null) {
existingShift.setActive(false);
existingShift.setUpdatedDate(new Date());
mongoTemplate.save(existingShift);
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment