Commit 4859203e authored by bsatyanarayana-nisum-com's avatar bsatyanarayana-nisum-com Committed by rbonthala-nisum-com

MT-122 :SNS :: My_Project_Allocations (#124)

parent fc7a3f86
package com.nisum.mytime.controller;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
......@@ -25,6 +25,7 @@ import com.nisum.mytime.model.ProjectTeamMate;
import com.nisum.mytime.repository.EmployeeVisaRepo;
import com.nisum.mytime.service.ProjectService;
import com.nisum.mytime.service.UserService;
import com.nisum.mytime.utils.MyTimeUtils;
@RestController
@RequestMapping("/projectTeam")
......@@ -39,8 +40,6 @@ public class ProjectTeamController {
@Autowired
private EmployeeVisaRepo employeeVisaRepo;
@Autowired
private ProjectController projectController;
@RequestMapping(value = "/employee", method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
......@@ -215,7 +214,8 @@ public class ProjectTeamController {
@RequestMapping(value = "/getProjectDetails", method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<ProjectTeamMate>> getProjectDetails(
@RequestParam("projectId") String projectId,@RequestParam("status") String status)
@RequestParam("projectId") String projectId,
@RequestParam(value = "status", required = false, defaultValue = MyTimeUtils.ACTIVE) String status)
throws MyTimeException {
List<ProjectTeamMate> employeesRoles = projectService
.getProjectDetails(projectId,status);
......@@ -225,12 +225,13 @@ public class ProjectTeamController {
@RequestMapping(value = "/getMyProjectAllocations",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<ProjectTeamMate>> getMyProjectAllocations(
public ResponseEntity<List<HashMap<Object, Object>>> getMyProjectAllocations(
@RequestParam("employeeId") String employeeId)
throws MyTimeException {
List<ProjectTeamMate> projectAllocations = projectService
.getMyProjectAllocations(employeeId);
return new ResponseEntity<>(projectAllocations, HttpStatus.OK);
//List<ProjectTeamMate> projectAllocations = projectService
// .getMyProjectAllocations(employeeId);
List<HashMap<Object, Object>> empPrjtsInfo = projectService.projectsInfoByEmpId(employeeId);
return new ResponseEntity<>(empPrjtsInfo, HttpStatus.OK);
}
@RequestMapping(value = "/getEmployeeBillingDetails",
......
......@@ -35,4 +35,6 @@ public interface ProjectTeamMatesRepo
List<ProjectTeamMate> findByAccountAndActiveAndBillableStatus(
String account, boolean status, String billableStatus);
List<ProjectTeamMate> findByEmployeeIdOrderByStartDateAsc(String employeeId);
}
......@@ -87,4 +87,6 @@ public interface ProjectService {
public String addProjectTeamMateWithCheck(ProjectTeamMate projectTeamMate)
throws MyTimeException;
public List<HashMap<Object, Object>> projectsInfoByEmpId(String empId);
}
package com.nisum.mytime.service;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
......@@ -296,15 +295,9 @@ public class ProjectServiceImpl implements ProjectService {
billings.setBillableStatus(pT.getBillableStatus());
billings.setAccount(pT.getAccount());
billings.setActive(true);
// checking
/*billings.setBillingStartDate(pT.getStartDate() == null
billings.setBillingStartDate(pT.getStartDate() == null
? DateUtils.truncate(new Date(), Calendar.DATE)
: DateUtils.truncate(pT.getStartDate(), Calendar.DATE));*/
billings.setBillingStartDate(pT.getNewBillingStartDate() == null
? DateUtils.truncate(new Date(), Calendar.DATE)
: DateUtils.truncate(pT.getNewBillingStartDate(), Calendar.DATE));
: DateUtils.truncate(pT.getStartDate(), Calendar.DATE));
if (pT.getEndDate() != null) {
billings.setBillingEndDate(
DateUtils.truncate(pT.getEndDate(), Calendar.DATE));
......@@ -348,19 +341,18 @@ public class ProjectServiceImpl implements ProjectService {
@Override
public ProjectTeamMate updateTeammate(ProjectTeamMate projectTeamMate) {
//ProjectTeamMate existingTeammate1 = projectTeamMatesRepo.findById(projectTeamMate.getId());
ProjectTeamMate existingTeammate = projectTeamMatesRepo
.findByEmployeeIdAndProjectId(projectTeamMate.getEmployeeId(),
projectTeamMate.getProjectId());
List<BillingDetails> listBD = getEmployeeActiveBillingDetails(projectTeamMate.getEmployeeId(),
projectTeamMate.getProjectId());
ProjectTeamMate existingTeammate1 = projectTeamMatesRepo.findById(projectTeamMate.getId());
// past or present endDate (Inactive the Resource)
if (projectTeamMate.getEndDate().compareTo(new Date()) <= 0 &&projectTeamMate.getEndDate().compareTo(existingTeammate.getEndDate())!=0) {
if (projectTeamMate.getEndDate().compareTo(new Date()) <= 0 &&projectTeamMate.getEndDate().compareTo(existingTeammate1.getEndDate())!=0) {
existingTeammate.setActive(false);
existingTeammate.setEndDate(projectTeamMate.getEndDate());
existingTeammate1.setActive(false);
//existingTeammate1.setEndDate(new Date());
existingTeammate1.setEndDate(projectTeamMate.getEndDate());
BillingDetails billingDetails = new BillingDetails();
billingDetails.setBillableStatus(MyTimeUtils.BENCH_BILLABILITY_STATUS);
billingDetails.setBillableStatus("Non-Billable");
List<BillingDetails> listBD = getEmployeeActiveBillingDetails(projectTeamMate.getEmployeeId(),
projectTeamMate.getProjectId());
if (listBD != null && !listBD.isEmpty()) {
BillingDetails billingDetailsExisting = listBD.get(0);
/*Date d = new Date();
......@@ -375,43 +367,43 @@ public class ProjectServiceImpl implements ProjectService {
//billingDetails.setBillingStartDate(new Date());
Date sd=projectTeamMate.getEndDate();
//sd.setDate(sd.getDate()+1);
sd.setDate(sd.getDate()+1);
billingDetails.setBillingStartDate(sd);
billingDetails.setAccount(MyTimeUtils.BENCH_ACCOUNT);
billingDetails.setAccount("Nisum India");
billingDetails.setActive(true);
billingDetails.setEmployeeId(existingTeammate.getEmployeeId());
billingDetails.setEmployeeName(existingTeammate.getEmployeeName());
billingDetails.setEmployeeId(existingTeammate1.getEmployeeId());
billingDetails.setEmployeeName(existingTeammate1.getEmployeeName());
billingDetails.setCreateDate(new Date());
billingDetails.setProjectId(MyTimeUtils.BENCH_PROJECT_ID);
billingDetails.setProjectId("Nisum0000");
billingDetails.setProjectName(MyTimeUtils.FREE_POLL);
addEmployeeBillingDetails(billingDetails);
projectTeamMatesRepo.save(existingTeammate);
projectTeamMatesRepo.save(existingTeammate1);
ProjectTeamMate newBenchAllocation = new ProjectTeamMate();
newBenchAllocation.setAccountId(projectTeamMate.getAccountId());
newBenchAllocation.setBillableStatus(MyTimeUtils.BENCH_BILLABILITY_STATUS);
newBenchAllocation.setDesignation(existingTeammate.getDesignation());
newBenchAllocation.setEmailId(existingTeammate.getEmailId());
newBenchAllocation.setEmployeeId(existingTeammate.getEmployeeId());
newBenchAllocation.setAccount("Nisum India");
newBenchAllocation.setBillableStatus("Non-Billable");
newBenchAllocation.setDesignation(existingTeammate1.getDesignation());
newBenchAllocation.setEmailId(existingTeammate1.getEmailId());
newBenchAllocation.setEmployeeId(existingTeammate1.getEmployeeId());
newBenchAllocation.setActive(true);
newBenchAllocation.setEmployeeName(existingTeammate.getEmployeeName());
newBenchAllocation.setProjectId(MyTimeUtils.BENCH_PROJECT_ID);
newBenchAllocation.setEmployeeName(existingTeammate1.getEmployeeName());
newBenchAllocation.setProjectId("Nisum0000");
//newBenchAllocation.setStartDate(new Date());
newBenchAllocation.setStartDate(sd);
Project p = projectRepo.findByProjectId(MyTimeUtils.BENCH_PROJECT_ID);
Project p = projectRepo.findByProjectId("Nisum0000");
newBenchAllocation.setProjectName(p.getProjectName());
// newBenchAllocation.setManagerId(p.getManagerId());
// newBenchAllocation.setManagerName(p.getManagerName());
projectTeamMatesRepo.save(newBenchAllocation);
updateShiftDetails(existingTeammate);
return existingTeammate;
updateShiftDetails(existingTeammate1);
return existingTeammate1;
}else
{
/*ProjectTeamMate existingTeammate = projectTeamMatesRepo
ProjectTeamMate existingTeammate = projectTeamMatesRepo
.findByEmployeeIdAndProjectId(projectTeamMate.getEmployeeId(),
projectTeamMate.getProjectId());*/
projectTeamMate.getProjectId());
existingTeammate.setProjectId(projectTeamMate.getProjectId());
existingTeammate.setProjectName(projectTeamMate.getProjectName());
existingTeammate.setRole(projectTeamMate.getRole());
......@@ -422,26 +414,23 @@ public class ProjectServiceImpl implements ProjectService {
&& !existingTeammate.getBillableStatus()
.equalsIgnoreCase(
projectTeamMate.getBillableStatus())) {
List<BillingDetails> listBD = getEmployeeActiveBillingDetails(
projectTeamMate.getEmployeeId(),
projectTeamMate.getProjectId());
if (listBD != null && !listBD.isEmpty()) {
BillingDetails billingDetails = listBD.get(0);
/*
* Date d = new Date(); d.setDate(d.getDate() - 1);
*/
Date d = projectTeamMate.getNewBillingStartDate();
//d.setDate(d.getDate() - 1);
Calendar cal = Calendar.getInstance();
cal.setTime(d);
cal.add(Calendar.DAY_OF_MONTH, -1);
Date onedayless = cal.getTime();
if(existingTeammate.getNewBillingStartDate().getDate()==projectTeamMate.getNewBillingStartDate().getDate())
d.setDate(d.getDate() - 1);
if(existingTeammate.getNewBillingStartDate().compareTo(projectTeamMate.getNewBillingStartDate())<=0)
billingDetails.setBillingEndDate(
DateUtils.truncate(projectTeamMate.getNewBillingStartDate(), Calendar.DATE));
else
billingDetails.setBillingEndDate(
DateUtils.truncate(onedayless, Calendar.DATE));
DateUtils.truncate(d, Calendar.DATE));
billingDetails.setActive(false);
updateEmployeeBilling(billingDetails);
}
......@@ -455,10 +444,9 @@ public class ProjectServiceImpl implements ProjectService {
billings.setActive(true);
// TODO
Date d = projectTeamMate.getNewBillingStartDate();
// d.setDate(d.getDate() + 1);
d.setDate(d.getDate() + 1);
//billings.setBillingStartDate(DateUtils.truncate(d, Calendar.DATE));
//billings.setBillingStartDate(DateUtils.truncate(projectTeamMate.getStartDate(), Calendar.DATE)); // checking
billings.setBillingStartDate(DateUtils.truncate(d, Calendar.DATE));
billings.setBillingStartDate(DateUtils.truncate(projectTeamMate.getStartDate(), Calendar.DATE));
existingTeammate.setNewBillingStartDate(
DateUtils.truncate(d, Calendar.DATE));
billings.setBillingEndDate(DateUtils
......@@ -468,8 +456,11 @@ public class ProjectServiceImpl implements ProjectService {
// TODO
}else //without changing the Billability status
{
if (listBD != null && !listBD.isEmpty()) {
BillingDetails billingDetails = listBD.get(0);
List<BillingDetails> listBD1 = getEmployeeActiveBillingDetails(
projectTeamMate.getEmployeeId(),
projectTeamMate.getProjectId());
if (listBD1 != null && !listBD1.isEmpty()) {
BillingDetails billingDetails = listBD1.get(0);
billingDetails.setBillingEndDate(projectTeamMate.getEndDate());
billingDetails.setBillingStartDate(projectTeamMate.getStartDate());
addEmployeeBillingDetails(billingDetails);
......@@ -659,20 +650,6 @@ public class ProjectServiceImpl implements ProjectService {
public List<ProjectTeamMate> getProjectDetails(String projectId,String statusFlag) {
List<ProjectTeamMate> teamMatesList = new ArrayList<>();
List<ProjectTeamMate> teamMates = projectTeamMatesRepo.findByProjectId(projectId);
if(projectId.equals(MyTimeUtils.BENCH_PROJECT_ID))
{
for (ProjectTeamMate projectTeamMate : teamMates) {
if(statusFlag.equals(MyTimeUtils.ACTIVE) && projectTeamMate.getEndDate()==null)
teamMatesList.add(projectTeamMate);
else if(statusFlag.equals(MyTimeUtils.IN_ACTIVE) &&projectTeamMate.getEndDate()!=null)
teamMatesList.add(projectTeamMate);
else if(statusFlag.equals(MyTimeUtils.BOTH))
teamMatesList.add(projectTeamMate);
}
}
else
{
for (ProjectTeamMate projectTeamMate : teamMates) {
if (projectTeamMate.getEndDate() != null) {
// Active
......@@ -685,7 +662,6 @@ public class ProjectServiceImpl implements ProjectService {
teamMatesList.add(projectTeamMate);
}
}
}
return teamMatesList;
}
......@@ -1001,7 +977,7 @@ public class ProjectServiceImpl implements ProjectService {
String toDate = null;
List<ProjectTeamMate> teamMateList = projectTeamMatesRepo.findAll();
for (ProjectTeamMate projectMate : teamMateList) {
if (projectTeamMate.getEmployeeId().equals(projectMate.getEmployeeId()) && projectMate.getEndDate()!=null && (projectMate.getEndDate().compareTo(new Date())>0)
if (projectTeamMate.getEmployeeId().equals(projectMate.getEmployeeId()) && (projectMate.getEndDate().compareTo(new Date())>0)
&& !projectMate.getProjectId().equals("Nisum0000")) {
if (++count == 1)
{
......@@ -1020,4 +996,56 @@ public class ProjectServiceImpl implements ProjectService {
return "TeamMate added successfuly";
}
@Override
public List<HashMap<Object, Object>> projectsInfoByEmpId(String empId){
HashMap<Object, Object> projectMap =null;
List<HashMap<Object, Object>> projectList = new ArrayList<>();
Project project= null;
Account account = null;
Domains domain = null;
List<ProjectTeamMate> projectAllocations = getMyProjectAllocations(empId);
if( null != projectAllocations && !projectAllocations.isEmpty() && MyTimeUtils.INT_ZERO < projectAllocations.size()) {
for (ProjectTeamMate ptm : projectAllocations) {
projectMap = new HashMap<>();
project = projectRepo.findByProjectId(ptm.getProjectId());
account = accountRepo.findByAccountId(ptm.getAccountId());
domain = domainRepo.findByDomainId(ptm.getDomainId());
projectMap.put("id", project.getId());
projectMap.put("projectId", project.getProjectId());
projectMap.put("projectName", project.getProjectName());
if (domain != null)
projectMap.put("domain", domain.getDomainName());
if (account != null)
projectMap.put("account", account.getAccountName());
projectMap.put("accountId", account!=null?account.getAccountId():ptm.getAccountId());
projectMap.put("domainId", domain!=null? domain.getDomainId() : ptm.getDomainId() );
projectMap.put("status", project.getStatus()!=null?project.getStatus():"");
projectMap.put("employeeIds", ptm.getEmployeeId());
projectMap.put("projectStartDate", project.getProjectStartDate());
projectMap.put("projectEndDate", project.getProjectEndDate());
if (project.getDeliveryLeadIds() != null) {
projectMap.put("deliveryLeadIds", getEmployeeData(project.getDeliveryLeadIds()));
}
if (project.getManagerIds() != null) {
projectMap.put("managerIds", getEmployeeData(project.getManagerIds()));
}
projectList.add(projectMap);
}
}
return projectList;
}
}
......@@ -108,4 +108,6 @@ public class MyTimeUtils {
public final static String BENCH_PROJECT_ID="Nisum0000";
public final static String BENCH_BILLABILITY_STATUS="Non-Billable";
public final static int INT_ZERO = 0;
}
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