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