Commit 25e37bd5 authored by mshaik-nisum-com's avatar mshaik-nisum-com Committed by rbonthala-nisum-com

Issue-fix: Resource assignment start date is greater than end date while...

Issue-fix: Resource assignment start date is greater than end date while adding a resource to a project (#159)
parent 5d6cd3ed
...@@ -142,14 +142,12 @@ public class ProjectTeamController { ...@@ -142,14 +142,12 @@ public class ProjectTeamController {
} }
@RequestMapping(value = "/updateTeammate", method = RequestMethod.POST, @RequestMapping(value = "/updateTeammate", method = RequestMethod.POST,
produces = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.TEXT_PLAIN_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE) consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<ProjectTeamMate> updateTeammate( public ResponseEntity<String> updateTeammate(@RequestBody ProjectTeamMate projectTeamMate)
@RequestBody ProjectTeamMate projectTeamMate)
throws MyTimeException { throws MyTimeException {
ProjectTeamMate updatedTeammate = projectService String response = projectService.updateTeammate(projectTeamMate);
.updateTeammate(projectTeamMate); return new ResponseEntity<>(response, HttpStatus.OK);
return new ResponseEntity<>(updatedTeammate, HttpStatus.OK);
} }
@RequestMapping(value = "/deleteTeammate", method = RequestMethod.POST, @RequestMapping(value = "/deleteTeammate", method = RequestMethod.POST,
...@@ -341,8 +339,7 @@ public class ProjectTeamController { ...@@ -341,8 +339,7 @@ public class ProjectTeamController {
consumes = MediaType.APPLICATION_JSON_VALUE) consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> addEmployeeToTeamWithCheck( public ResponseEntity<String> addEmployeeToTeamWithCheck(
@RequestBody ProjectTeamMate teamMate) throws MyTimeException { @RequestBody ProjectTeamMate teamMate) throws MyTimeException {
String response=null; String response = projectService.addProjectTeamMateWithCheck(teamMate);
response=projectService.addProjectTeamMateWithCheck(teamMate);
return new ResponseEntity<>(response, HttpStatus.OK); return new ResponseEntity<>(response, HttpStatus.OK);
......
...@@ -42,7 +42,7 @@ public interface ProjectService { ...@@ -42,7 +42,7 @@ public interface ProjectService {
public ProjectTeamMate addProjectTeamMate(ProjectTeamMate projectTeamMate) public ProjectTeamMate addProjectTeamMate(ProjectTeamMate projectTeamMate)
throws MyTimeException; throws MyTimeException;
ProjectTeamMate updateTeammate(ProjectTeamMate projectTeamMate); String updateTeammate(ProjectTeamMate projectTeamMate) throws MyTimeException;
void deleteTeammate(String empId, String projectId, ObjectId id); void deleteTeammate(String empId, String projectId, ObjectId id);
......
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;
...@@ -46,6 +45,7 @@ import com.nisum.mytime.repository.EmployeeRolesRepo; ...@@ -46,6 +45,7 @@ import com.nisum.mytime.repository.EmployeeRolesRepo;
import com.nisum.mytime.repository.ProjectRepo; import com.nisum.mytime.repository.ProjectRepo;
import com.nisum.mytime.repository.ProjectTeamMatesRepo; import com.nisum.mytime.repository.ProjectTeamMatesRepo;
import com.nisum.mytime.repository.TeamMatesBillingRepo; import com.nisum.mytime.repository.TeamMatesBillingRepo;
import com.nisum.mytime.utils.MyTeamResultDTO;
import com.nisum.mytime.utils.MyTimeUtils; import com.nisum.mytime.utils.MyTimeUtils;
import com.nisum.mytime.utils.PdfReportGenerator; import com.nisum.mytime.utils.PdfReportGenerator;
...@@ -57,8 +57,10 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -57,8 +57,10 @@ public class ProjectServiceImpl implements ProjectService {
@Autowired @Autowired
private ProjectRepo projectRepo; private ProjectRepo projectRepo;
@Autowired @Autowired
private ProjectTeamMatesRepo projectTeamMatesRepo; private ProjectTeamMatesRepo projectTeamMatesRepo;
@Autowired @Autowired
private TeamMatesBillingRepo teamMatesBillingRepo; private TeamMatesBillingRepo teamMatesBillingRepo;
...@@ -70,6 +72,7 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -70,6 +72,7 @@ public class ProjectServiceImpl implements ProjectService {
@Autowired @Autowired
private MongoTemplate mongoTemplate; private MongoTemplate mongoTemplate;
@Autowired @Autowired
private EmpShiftDetailsRepo empShiftDetailsRepo; private EmpShiftDetailsRepo empShiftDetailsRepo;
...@@ -327,27 +330,20 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -327,27 +330,20 @@ public class ProjectServiceImpl implements ProjectService {
} }
@Override @Override
public ProjectTeamMate addProjectTeamMate(ProjectTeamMate projectTeamMate) public ProjectTeamMate addProjectTeamMate(ProjectTeamMate projectTeamMate) throws MyTimeException {
throws MyTimeException {
if (projectTeamMate.getRole() != null && projectTeamMate.getRole().equals("Lead")) {
Project project = projectRepo.findByProjectId(projectTeamMate.getProjectId());
// project.getManagerIds().add(projectTeamMate.getEmployeeId());
if (project.getManagerIds() != null)
project.getManagerIds().add(projectTeamMate.getEmployeeId());
else
project.setManagerIds(Arrays.asList(projectTeamMate.getEmployeeId()));
projectRepo.save(project);
}
updateProjectEndDateInProjectTeamMate(projectTeamMate); updateProjectEndDateInProjectTeamMate(projectTeamMate);
ProjectTeamMate pT = projectTeamMatesRepo.save(projectTeamMate); ProjectTeamMate pT = projectTeamMatesRepo.save(projectTeamMate);
List<BillingDetails> listBD = getEmployeeActiveNisumBench(pT.getEmployeeId()); List<BillingDetails> listBD = getEmployeeActiveNisumBench(pT.getEmployeeId());
for (BillingDetails b : listBD) { Date startDate = pT.getStartDate() != null ? pT.getStartDate() : new Date();
Date d = pT.getStartDate() != null ? pT.getStartDate() : new Date(); if (listBD != null && listBD.size() >0) {
b.setBillingEndDate(DateUtils.truncate(DateUtils.addDays(d, -1), BillingDetails bDetails = listBD.get(0);
Calendar.DATE)); if (startDate.compareTo(bDetails.getBillingStartDate()) > 0) {
b.setActive(false); bDetails.setBillingEndDate(DateUtils.truncate(DateUtils.addDays(startDate, -1), Calendar.DATE));
updateEmployeeBilling(b); } else {
bDetails.setBillingEndDate(startDate);
}
bDetails.setActive(false);
updateEmployeeBilling(bDetails);
} }
BillingDetails billings = new BillingDetails(); BillingDetails billings = new BillingDetails();
billings.setEmployeeId(pT.getEmployeeId()); billings.setEmployeeId(pT.getEmployeeId());
...@@ -357,83 +353,84 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -357,83 +353,84 @@ public class ProjectServiceImpl implements ProjectService {
billings.setBillableStatus(pT.getBillableStatus()); billings.setBillableStatus(pT.getBillableStatus());
billings.setAccount(pT.getAccount()); billings.setAccount(pT.getAccount());
billings.setActive(pT.isActive()); billings.setActive(pT.isActive());
if(pT.getProjectId().equals(MyTimeUtils.BENCH_PROJECT_ID)) billings.setBillingStartDate(DateUtils.truncate(pT.getNewBillingStartDate(), Calendar.DATE));
{
billings.setBillingStartDate(pT.getStartDate() == null
? DateUtils.truncate(new Date(), Calendar.DATE)
: DateUtils.truncate(pT.getStartDate(), Calendar.DATE));
}else
{
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));
} }
billings.setCreateDate(new Date()); billings.setCreateDate(new Date());
updateProjectEndDateInBillingDetails( //updateProjectEndDateInBillingDetails(projectTeamMate.getNewBillingStartDate(), billings);
projectTeamMate.getNewBillingStartDate(), billings);
addEmployeeBillingDetails(billings); addEmployeeBillingDetails(billings);
addShiftDetails(projectTeamMate); addShiftDetails(projectTeamMate);
if (projectTeamMate.getProjectId() != null && !projectTeamMate /*if (projectTeamMate.getProjectId() != null && !projectTeamMate.getProjectId().equalsIgnoreCase("Nisum0000")) {
.getProjectId().equalsIgnoreCase("Nisum0000")) {
List<ProjectTeamMate> activeBenchProject = projectTeamMatesRepo List<ProjectTeamMate> activeBenchProject = projectTeamMatesRepo
.findByEmployeeIdAndProjectIdAndActive( .findByEmployeeIdAndProjectIdAndActive(projectTeamMate.getEmployeeId(), "Nisum0000", true);
projectTeamMate.getEmployeeId(), "Nisum0000", true); if (activeBenchProject != null && activeBenchProject.size() != 0) {
if (activeBenchProject != null || activeBenchProject.size() != 0) {
for (ProjectTeamMate pteamMate : activeBenchProject) { for (ProjectTeamMate pteamMate : activeBenchProject) {
Date d = pT.getStartDate() != null ? pT.getStartDate() Date d = (pT.getStartDate() != null) ? pT.getStartDate() : new Date();
: new Date();
pteamMate.setActive(false); pteamMate.setActive(false);
pteamMate.setEndDate(DateUtils pteamMate.setEndDate(DateUtils.truncate(DateUtils.addDays(d, -1), Calendar.DATE));
.truncate(DateUtils.addDays(d, -1), Calendar.DATE));
projectTeamMatesRepo.save(pteamMate); projectTeamMatesRepo.save(pteamMate);
} }
} }
} }*/
if (projectTeamMate.getRole() != null addOrUpdateTeamMateRole(projectTeamMate.getRole(), projectTeamMate.getProjectId(), projectTeamMate.getEmployeeId(), false);
&& projectTeamMate.getRole().equals("Lead")) { return pT;
Query query = new Query(Criteria.where("employeeId") }
.is(projectTeamMate.getEmployeeId()).and("role")
.ne("Lead")); private void addOrUpdateTeamMateRole(String role, String projectId, String empId, boolean isUpdate) throws MyTimeException {
List<ProjectTeamMate> projectMates = mongoTemplate.find(query, Project project = projectRepo.findByProjectId(projectId);
ProjectTeamMate.class); int operationType = 0; //0 = No Operation, 1 = Added, 2 = Removed
if (projectMates.size() == 0) { if (role != null && role.equals("Lead")) {
String roleId = roleInfoService.getRole(MyTimeUtils.LEAD); if (project.getManagerIds() == null) {
roleMappingService.saveUniqueEmployeeAndRole( project.setManagerIds(Arrays.asList(empId));
Arrays.asList(projectTeamMate.getEmployeeId()), roleId); operationType = 1;
} else if (project.getManagerIds() != null && !project.getManagerIds().contains(empId)) {
project.getManagerIds().add(empId);
operationType = 1;
} }
} else if (isUpdate && project.getManagerIds() != null && project.getManagerIds().contains(empId)) {// When role got changed from Lead to Employee.
project.getManagerIds().remove(empId);
operationType = 2;
}
if (operationType > 0) {
projectRepo.save(project);
Query query = new Query(Criteria.where("employeeId").is(empId).and("role").is("Lead"));
List<ProjectTeamMate> projectMates = mongoTemplate.find(query, ProjectTeamMate.class);
String roleId = roleInfoService.getRole(MyTimeUtils.LEAD);
if (operationType ==1) {
roleMappingService.addEmployeeRole(empId, roleId);
} else if (projectMates.size() == 0 || operationType == 2) {
roleMappingService.deleteRole(empId, roleId);
}
} }
return pT;
} }
@Override @Override
public ProjectTeamMate updateTeammate(ProjectTeamMate projectTeamMate) { public String updateTeammate(ProjectTeamMate projectTeamMate) throws MyTimeException {
ProjectTeamMate existingTeammate = projectTeamMatesRepo //String result = null;
.findByEmployeeIdAndProjectId(projectTeamMate.getEmployeeId(), MyTeamResultDTO myResultDto = new MyTeamResultDTO();
projectTeamMate.getProjectId()); myResultDto.setResultCode(MyTeamResultDTO.SUCCESS_CODE);
List<BillingDetails> listBD = getEmployeeActiveBillingDetails(projectTeamMate.getEmployeeId(), myResultDto.setResultData("TeamMate updated successfuly");
projectTeamMate.getProjectId()); ProjectTeamMate existingTeammate = projectTeamMatesRepo.findById(projectTeamMate.getId());
// past or present endDate (Inactive the Resource) List<BillingDetails> listBD = getEmployeeActiveBillingDetails(projectTeamMate.getEmployeeId(), projectTeamMate.getProjectId());
if (projectTeamMate.getEndDate().compareTo(new Date()) <= 0 &&projectTeamMate.getEndDate().compareTo(existingTeammate.getEndDate())!=0) { Date resEndDate = projectTeamMate.getEndDate();
//Handling past or present endDate (To "Inactive" the Resource)
if (resEndDate.compareTo(new Date()) <= 0 && resEndDate.compareTo(existingTeammate.getEndDate()) != 0) {
existingTeammate.setActive(false); existingTeammate.setActive(false);
existingTeammate.setEndDate(projectTeamMate.getEndDate()); existingTeammate.setEndDate(resEndDate);
BillingDetails billingDetails = new BillingDetails();
billingDetails.setBillableStatus(MyTimeUtils.BENCH_BILLABILITY_STATUS);
if (listBD != null && !listBD.isEmpty()) { if (listBD != null && !listBD.isEmpty()) {
BillingDetails billingDetailsExisting = listBD.get(0); BillingDetails billingDetailsExisting = listBD.get(0);
Date actualEndDate=projectTeamMate.getEndDate(); Date actualEndDate = resEndDate;
billingDetailsExisting.setBillingEndDate(actualEndDate); billingDetailsExisting.setBillingEndDate(actualEndDate);
billingDetailsExisting.setActive(false); billingDetailsExisting.setActive(false);
updateEmployeeBilling(billingDetailsExisting); updateEmployeeBilling(billingDetailsExisting);
} }
Date sd=projectTeamMate.getEndDate(); Project project = projectRepo.findByProjectId(MyTimeUtils.BENCH_PROJECT_ID);
billingDetails.setBillingStartDate(sd); ProjectTeamMate newBenchAllocation = new ProjectTeamMate();
BillingDetails billingDetails = new BillingDetails();
billingDetails.setBillableStatus(MyTimeUtils.BENCH_BILLABILITY_STATUS);
billingDetails.setBillingStartDate(resEndDate);
billingDetails.setAccount(MyTimeUtils.BENCH_ACCOUNT); billingDetails.setAccount(MyTimeUtils.BENCH_ACCOUNT);
billingDetails.setActive(true); billingDetails.setActive(true);
billingDetails.setEmployeeId(existingTeammate.getEmployeeId()); billingDetails.setEmployeeId(existingTeammate.getEmployeeId());
...@@ -441,109 +438,152 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -441,109 +438,152 @@ public class ProjectServiceImpl implements ProjectService {
billingDetails.setCreateDate(new Date()); billingDetails.setCreateDate(new Date());
billingDetails.setProjectId(MyTimeUtils.BENCH_PROJECT_ID); billingDetails.setProjectId(MyTimeUtils.BENCH_PROJECT_ID);
billingDetails.setProjectName(MyTimeUtils.FREE_POLL); billingDetails.setProjectName(MyTimeUtils.FREE_POLL);
addEmployeeBillingDetails(billingDetails); if(project != null) {
billingDetails.setBillingEndDate(project.getProjectEndDate());
projectTeamMatesRepo.save(existingTeammate);
ProjectTeamMate newBenchAllocation = new ProjectTeamMate();
Project project=projectRepo.findByProjectId(MyTimeUtils.BENCH_PROJECT_ID);
if(project!=null)
newBenchAllocation.setAccountId(project.getAccountId()); newBenchAllocation.setAccountId(project.getAccountId());
newBenchAllocation.setBillableStatus(MyTimeUtils.BENCH_BILLABILITY_STATUS); newBenchAllocation.setDomainId(project.getDomainId());
newBenchAllocation.setDesignation(existingTeammate.getDesignation()); newBenchAllocation.setProjectName(project.getProjectName());
newBenchAllocation.setEmailId(existingTeammate.getEmailId()); newBenchAllocation.setEndDate(project.getProjectEndDate());
newBenchAllocation.setEmployeeId(existingTeammate.getEmployeeId()); }
newBenchAllocation.setActive(true); addEmployeeBillingDetails(billingDetails);
newBenchAllocation.setEmployeeName(existingTeammate.getEmployeeName());
newBenchAllocation.setProjectId(MyTimeUtils.BENCH_PROJECT_ID);
newBenchAllocation.setStartDate(sd);
Project p = projectRepo.findByProjectId(MyTimeUtils.BENCH_PROJECT_ID);
newBenchAllocation.setProjectName(p.getProjectName());
projectTeamMatesRepo.save(newBenchAllocation);
updateShiftDetails(existingTeammate);
return existingTeammate;
}else
{
existingTeammate.setProjectId(projectTeamMate.getProjectId());
existingTeammate.setProjectName(projectTeamMate.getProjectName());
existingTeammate.setRole(projectTeamMate.getRole());
// changing the Billability status
if (existingTeammate.getBillableStatus() == null
|| projectTeamMate.getBillableStatus() != null
&& existingTeammate.getBillableStatus() != null
&& !existingTeammate.getBillableStatus()
.equalsIgnoreCase(
projectTeamMate.getBillableStatus())) {
if (listBD != null && !listBD.isEmpty()) {
BillingDetails billingDetails = listBD.get(0);
Date d = projectTeamMate.getNewBillingStartDate();
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(
DateUtils.truncate(projectTeamMate.getNewBillingStartDate(), Calendar.DATE));
else
billingDetails.setBillingEndDate(
DateUtils.truncate(onedayless, Calendar.DATE));
billingDetails.setActive(false);
updateEmployeeBilling(billingDetails);
}
BillingDetails billings = new BillingDetails();
billings.setEmployeeId(projectTeamMate.getEmployeeId());
billings.setEmployeeName(projectTeamMate.getEmployeeName());
billings.setProjectId(projectTeamMate.getProjectId());
billings.setAccount(existingTeammate.getAccount());
billings.setProjectName(projectTeamMate.getProjectName());
billings.setBillableStatus(projectTeamMate.getBillableStatus());
billings.setActive(true);
Date d = projectTeamMate.getNewBillingStartDate();
billings.setBillingStartDate(DateUtils.truncate(d, Calendar.DATE));
existingTeammate.setNewBillingStartDate(
DateUtils.truncate(d, Calendar.DATE));
billings.setBillingEndDate(DateUtils
.truncate(projectTeamMate.getEndDate(), Calendar.DATE));
billings.setCreateDate(new Date());
addEmployeeBillingDetails(billings);
}else //without changing the Billability status
{
if (listBD != null && !listBD.isEmpty()) {
BillingDetails billingDetails = listBD.get(0);
billingDetails.setBillingEndDate(projectTeamMate.getEndDate());
billingDetails.setBillingStartDate(projectTeamMate.getStartDate());
addEmployeeBillingDetails(billingDetails);
}
existingTeammate.setNewBillingStartDate(projectTeamMate.getNewBillingStartDate());
}
existingTeammate.setBillableStatus(projectTeamMate.getBillableStatus()); newBenchAllocation.setBillableStatus(MyTimeUtils.BENCH_BILLABILITY_STATUS);
existingTeammate.setStartDate(projectTeamMate.getStartDate()); newBenchAllocation.setDesignation(existingTeammate.getDesignation());
existingTeammate.setEndDate(projectTeamMate.getEndDate()); newBenchAllocation.setEmailId(existingTeammate.getEmailId());
existingTeammate.setShift(projectTeamMate.getShift()); newBenchAllocation.setEmployeeId(existingTeammate.getEmployeeId());
ProjectTeamMate teamMate = projectTeamMatesRepo.save(existingTeammate); newBenchAllocation.setActive(true);
EmployeeRoles employeeDB = employeeRolesRepo newBenchAllocation.setEmployeeName(existingTeammate.getEmployeeName());
.findByEmployeeId(teamMate.getEmployeeId()); newBenchAllocation.setProjectId(MyTimeUtils.BENCH_PROJECT_ID);
employeeDB.setShift(teamMate.getShift()); newBenchAllocation.setShift(existingTeammate.getShift());
employeeRolesRepo.save(employeeDB); newBenchAllocation.setRole(existingTeammate.getRole());
return teamMate; Calendar cal = Calendar.getInstance();
cal.setTime(resEndDate);
cal.add(Calendar.DAY_OF_MONTH, 1);
newBenchAllocation.setStartDate(DateUtils.truncate(cal.getTime(), Calendar.DATE));
newBenchAllocation.setNewBillingStartDate(DateUtils.truncate(cal.getTime(), Calendar.DATE));
projectTeamMatesRepo.save(newBenchAllocation);
myResultDto.setResultCode(MyTeamResultDTO.SUCCESS_CODE);
myResultDto.setResultData("Resource Successfully moved from " + projectTeamMate.getProjectName() + " project to Bench.");
} else {
//Handling Resource Project Billability Status change
if (projectTeamMate.getBillableStatus() != null && existingTeammate.getBillableStatus() != null
&& !existingTeammate.getBillableStatus().equalsIgnoreCase(projectTeamMate.getBillableStatus())) {
/*List<BillingDetails> bDetailsList = teamMatesBillingRepo.findByEmployeeId(projectTeamMate.getEmployeeId()).stream()
.filter(e -> (!e.isActive())).sorted(Comparator.comparing(BillingDetails::getBillingEndDate).reversed())
.collect(Collectors.toList());*/
String result = validateBillabilityStartDate(listBD, projectTeamMate);
if (result != null) { //Invalid Billability Start date
return result;
}
if (listBD != null && !listBD.isEmpty()) {
BillingDetails billingDetails = listBD.get(0);
Calendar cal = Calendar.getInstance();
cal.setTime(projectTeamMate.getNewBillingStartDate());
cal.add(Calendar.DAY_OF_MONTH, -1);
if (existingTeammate.getNewBillingStartDate().getDate() == projectTeamMate.getNewBillingStartDate().getDate()) {
billingDetails.setBillingEndDate(DateUtils.truncate(projectTeamMate.getNewBillingStartDate(), Calendar.DATE));
} else {
billingDetails.setBillingEndDate(DateUtils.truncate(cal.getTime(), Calendar.DATE));
}
billingDetails.setActive(false);
updateEmployeeBilling(billingDetails);
}
BillingDetails billings = new BillingDetails();
billings.setEmployeeId(projectTeamMate.getEmployeeId());
billings.setEmployeeName(projectTeamMate.getEmployeeName());
billings.setProjectId(projectTeamMate.getProjectId());
billings.setAccount(existingTeammate.getAccount());
billings.setProjectName(projectTeamMate.getProjectName());
billings.setBillableStatus(projectTeamMate.getBillableStatus());
billings.setActive(true);
billings.setBillingStartDate(DateUtils.truncate(projectTeamMate.getNewBillingStartDate(), Calendar.DATE));
billings.setBillingEndDate(DateUtils.truncate(resEndDate, Calendar.DATE));
billings.setCreateDate(new Date());
addEmployeeBillingDetails(billings);
existingTeammate.setBillableStatus(projectTeamMate.getBillableStatus());
existingTeammate.setNewBillingStartDate(DateUtils.truncate(projectTeamMate.getNewBillingStartDate(), Calendar.DATE));
} else {//Handling Billability Start Date change
List<BillingDetails> bDetailsList = teamMatesBillingRepo.findByEmployeeId(projectTeamMate.getEmployeeId()).stream()
.filter(e -> (!e.isActive())).sorted(Comparator.comparing(BillingDetails::getBillingEndDate).reversed())
.collect(Collectors.toList());
String result = validateBillabilityStartDate(bDetailsList, projectTeamMate);
if (result != null) { //Invalid Billability Start date
return result;
}
if (bDetailsList != null && !bDetailsList.isEmpty()) {
Calendar cal = Calendar.getInstance();
cal.setTime(projectTeamMate.getNewBillingStartDate());
cal.add(Calendar.DAY_OF_MONTH, -1);
BillingDetails preBillingDetails = bDetailsList.get(0);
if (preBillingDetails.getBillingStartDate().getDate() == projectTeamMate.getNewBillingStartDate().getDate()) {
preBillingDetails.setBillingEndDate(DateUtils.truncate(projectTeamMate.getNewBillingStartDate(), Calendar.DATE));
} else {
preBillingDetails.setBillingEndDate(DateUtils.truncate(cal.getTime(), Calendar.DATE));
}
updateEmployeeBilling(preBillingDetails);
}
if (listBD != null && !listBD.isEmpty()) {
BillingDetails billingDetails = listBD.get(0);
billingDetails.setBillingStartDate(DateUtils.truncate(projectTeamMate.getNewBillingStartDate(), Calendar.DATE));
billingDetails.setBillingEndDate(DateUtils.truncate(resEndDate, Calendar.DATE));
addEmployeeBillingDetails(billingDetails);
}
existingTeammate.setNewBillingStartDate(DateUtils.truncate(projectTeamMate.getNewBillingStartDate(), Calendar.DATE));
}
if (resEndDate.compareTo(existingTeammate.getEndDate()) != 0) {
existingTeammate.setEndDate(resEndDate);
}
} }
if (MyTeamResultDTO.SUCCESS_CODE.equals(myResultDto.getResultCode())) {
//Handling Role change
if ((existingTeammate.getRole() != null && !existingTeammate.getRole().equalsIgnoreCase(projectTeamMate.getRole()))
|| (projectTeamMate.getRole() != null) && !projectTeamMate.getRole().equalsIgnoreCase(existingTeammate.getRole())) {
existingTeammate.setRole(projectTeamMate.getRole());
addOrUpdateTeamMateRole(projectTeamMate.getRole(), projectTeamMate.getProjectId(), projectTeamMate.getEmployeeId(), true);
}
//Handling Shift change
if ((existingTeammate.getShift() != null && !existingTeammate.getShift().equalsIgnoreCase(projectTeamMate.getShift()))
|| (projectTeamMate.getShift() != null) && !projectTeamMate.getShift().equalsIgnoreCase(existingTeammate.getShift())) {
updateShiftDetails(existingTeammate);
existingTeammate.setShift(projectTeamMate.getShift());
EmployeeRoles employeeDB = employeeRolesRepo.findByEmployeeId(projectTeamMate.getEmployeeId());
employeeDB.setShift(projectTeamMate.getShift());
employeeRolesRepo.save(employeeDB);
}
projectTeamMatesRepo.save(existingTeammate);
}
return myResultDto.getResultData()[myResultDto.getDataArrayCounter()];
} }
private String validateBillabilityStartDate(List<BillingDetails> bDetailsList, ProjectTeamMate projectTeamMate) {
String response = null;
if (bDetailsList != null && bDetailsList.size() > 0) {
BillingDetails bDetails = bDetailsList.get(0);
if (projectTeamMate.getNewBillingStartDate().compareTo(bDetails.getBillingStartDate()) < 0) {
response = "Resource Billability Start Date (" + projectTeamMate.getNewBillingStartDate() +" ) for "
+ projectTeamMate.getBillableStatus() + " status should be later than previous billability ("
+ bDetails.getBillableStatus() + " status) Start Date ( " + bDetails.getBillingStartDate() + ").";
}
} else {
response = validateAgainstDOJ(projectTeamMate);
}
return response;
}
public void updateShiftDetails(ProjectTeamMate existingTeammate) { public void updateShiftDetails(ProjectTeamMate existingTeammate) {
Query getQuery = new Query(); Query getQuery = new Query();
getQuery.addCriteria(new Criteria().andOperator( getQuery.addCriteria(new Criteria().andOperator(Criteria.where("active").is(true),
Criteria.where("active").is(true), Criteria.where("employeeId") Criteria.where("employeeId").is(existingTeammate.getEmployeeId())));
.is(existingTeammate.getEmployeeId()))); //Calendar cal = Calendar.getInstance();
Calendar cal = Calendar.getInstance(); //cal.add(Calendar.DATE, -1);
cal.add(Calendar.DATE, -1); EmpShiftDetails existingShift = mongoTemplate.findOne(getQuery, EmpShiftDetails.class);
EmpShiftDetails existingShift = mongoTemplate.findOne(getQuery,
EmpShiftDetails.class);
if (existingShift != null) { if (existingShift != null) {
existingShift.setActive(false); existingShift.setActive(false);
existingShift.setUpdatedDate(new Date()); existingShift.setUpdatedDate(new Date());
...@@ -673,7 +713,7 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -673,7 +713,7 @@ public class ProjectServiceImpl implements ProjectService {
for (ProjectTeamMate emp : employeeDetails) { for (ProjectTeamMate emp : employeeDetails) {
if (emp.getShift() != null && emp.getShift().equalsIgnoreCase(shift) && emp.isActive()) { if (emp.getShift() != null && emp.getShift().equalsIgnoreCase(shift) && emp.isActive()) {
shiftEmpDetails.add(emp); shiftEmpDetails.add(emp);
} else if (emp.getShift() == null && "Shift 1(09:00 AM - 06:00 PM)".equalsIgnoreCase(shift) && emp.isActive()) } else if (emp.getShift() == null && "Shift 1(9:00 AM - 6:00 PM)".equalsIgnoreCase(shift) && emp.isActive())
shiftEmpDetails.add(emp); shiftEmpDetails.add(emp);
} }
} }
...@@ -701,12 +741,12 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -701,12 +741,12 @@ public class ProjectServiceImpl implements ProjectService {
List<ProjectTeamMate> teamMatesList = new ArrayList<>(); List<ProjectTeamMate> teamMatesList = new ArrayList<>();
List<ProjectTeamMate> teamMates = projectTeamMatesRepo.findByProjectId(projectId); List<ProjectTeamMate> teamMates = projectTeamMatesRepo.findByProjectId(projectId);
for (ProjectTeamMate projectTeamMate : teamMates) { for (ProjectTeamMate projectTeamMate : teamMates) {
if (projectTeamMate.getEndDate() != null) { Date endDate = projectTeamMate.getEndDate();
if (endDate != null) {
// Active // Active
if (statusFlag.equals(MyTimeUtils.ACTIVE) && projectTeamMate.getEndDate().compareTo(new Date()) >= 0) if (statusFlag.equals(MyTimeUtils.ACTIVE) && endDate.compareTo(new Date()) >= 0)
teamMatesList.add(projectTeamMate); teamMatesList.add(projectTeamMate);
else if (statusFlag.equals(MyTimeUtils.IN_ACTIVE) else if (statusFlag.equals(MyTimeUtils.IN_ACTIVE) && endDate.compareTo(new Date()) < 0)
&& 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);
...@@ -721,20 +761,12 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -721,20 +761,12 @@ public class ProjectServiceImpl implements ProjectService {
} }
@Override @Override
public List<BillingDetails> getEmployeeBillingDetails(String empId, public List<BillingDetails> getEmployeeBillingDetails(String empId, String projectId) {
String projectId) { List<BillingDetails> billings = teamMatesBillingRepo.findByEmployeeIdAndProjectId(empId, projectId);
List<BillingDetails> billings = teamMatesBillingRepo
.findByEmployeeIdAndProjectId(empId, projectId);
List<BillingDetails> billingsSorted = billings; List<BillingDetails> billingsSorted = billings;
try { try {
billingsSorted = (billings == null || billings.size() == 0) billingsSorted = (billings == null || billings.size() == 0) ? billings : billings.stream().sorted(
? billings Comparator.comparing(BillingDetails::getCreateDate).reversed()).collect(Collectors.toList());
: billings.stream()
.sorted(Comparator
.comparing(BillingDetails::getCreateDate)
.reversed())
.collect(Collectors.toList());
} catch (Exception e) { } catch (Exception e) {
// TODO: handle exception // TODO: handle exception
} }
...@@ -743,18 +775,11 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -743,18 +775,11 @@ public class ProjectServiceImpl implements ProjectService {
@Override @Override
public List<BillingDetails> getEmployeeBillingDetailsAll(String empId) { public List<BillingDetails> getEmployeeBillingDetailsAll(String empId) {
List<BillingDetails> billings = teamMatesBillingRepo.findByEmployeeId(empId);
List<BillingDetails> billings = teamMatesBillingRepo
.findByEmployeeId(empId);
List<BillingDetails> billingsSorted = billings; List<BillingDetails> billingsSorted = billings;
try { try {
billingsSorted = (billings == null || billings.size() == 0) billingsSorted = (billings == null || billings.size() == 0) ? billings : billings.stream().sorted(
? billings Comparator.comparing(BillingDetails::getCreateDate).reversed()).collect(Collectors.toList());
: billings.stream()
.sorted(Comparator
.comparing(BillingDetails::getCreateDate)
.reversed())
.collect(Collectors.toList());
} catch (Exception e) { } catch (Exception e) {
// TODO: handle exception // TODO: handle exception
} }
...@@ -762,24 +787,16 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -762,24 +787,16 @@ public class ProjectServiceImpl implements ProjectService {
} }
@Override @Override
public List<BillingDetails> getEmployeeActiveBillingDetails(String empId, public List<BillingDetails> getEmployeeActiveBillingDetails(String empId, String projectId) {
String projectId) {
Query query4 = new Query(); Query query4 = new Query();
query4.addCriteria(Criteria.where("active").is(new Boolean(true))); query4.addCriteria(Criteria.where("active").is(new Boolean(true)));
query4.addCriteria(Criteria.where("employeeId").is(empId)); query4.addCriteria(Criteria.where("employeeId").is(empId));
query4.addCriteria(Criteria.where("projectId").is(projectId)); query4.addCriteria(Criteria.where("projectId").is(projectId));
List<BillingDetails> billings = mongoTemplate.find(query4, List<BillingDetails> billings = mongoTemplate.find(query4, BillingDetails.class);
BillingDetails.class);
List<BillingDetails> billingsSorted = billings; List<BillingDetails> billingsSorted = billings;
try { try {
billingsSorted = (billings == null || billings.size() == 0) billingsSorted = (billings == null || billings.size() == 0) ? billings : billings.stream().sorted(
? billings Comparator.comparing(BillingDetails::getBillingStartDate).reversed()).collect(Collectors.toList());
: billings.stream()
.sorted(Comparator
.comparing(
BillingDetails::getBillingStartDate)
.reversed())
.collect(Collectors.toList());
} catch (Exception e) { } catch (Exception e) {
// TODO: handle exception // TODO: handle exception
} }
...@@ -792,18 +809,11 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -792,18 +809,11 @@ public class ProjectServiceImpl implements ProjectService {
query4.addCriteria(Criteria.where("active").is(new Boolean(true))); query4.addCriteria(Criteria.where("active").is(new Boolean(true)));
query4.addCriteria(Criteria.where("projectId").is("Nisum0000")); query4.addCriteria(Criteria.where("projectId").is("Nisum0000"));
query4.addCriteria(Criteria.where("employeeId").is(empId)); query4.addCriteria(Criteria.where("employeeId").is(empId));
List<BillingDetails> billings = mongoTemplate.find(query4, List<BillingDetails> billings = mongoTemplate.find(query4, BillingDetails.class);
BillingDetails.class);
List<BillingDetails> billingsSorted = billings; List<BillingDetails> billingsSorted = billings;
try { try {
billingsSorted = (billings == null || billings.size() == 0) billingsSorted = (billings == null || billings.size() == 0) ? billings : billings.stream().sorted(
? billings Comparator.comparing(BillingDetails::getBillingStartDate).reversed()).collect(Collectors.toList());
: billings.stream()
.sorted(Comparator
.comparing(
BillingDetails::getBillingStartDate)
.reversed())
.collect(Collectors.toList());
} catch (Exception e) { } catch (Exception e) {
// TODO: handle exception // TODO: handle exception
} }
...@@ -827,68 +837,66 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -827,68 +837,66 @@ public class ProjectServiceImpl implements ProjectService {
return teamMatesBillingRepo.save(teamMate); return teamMatesBillingRepo.save(teamMate);
} }
// Updating the projectenddate field in ProjectTeamMate . // Update ProjectEndDate column data in ProjectTeamMate.
private void updateProjectEndDateInProjectTeamMate( private void updateProjectEndDateInProjectTeamMate(ProjectTeamMate projectTeamMate) {
ProjectTeamMate projectTeamMate) {
List<ProjectTeamMate> projectTeamMateList = mongoTemplate List<ProjectTeamMate> projectTeamMateList = mongoTemplate
.find(getQuery(projectTeamMate.getEmployeeId(), .find(getQuery(projectTeamMate.getEmployeeId(), MyTimeUtils.ENDDATE_COLUMN), ProjectTeamMate.class);
MyTimeUtils.ENDDATE_COLUMN), ProjectTeamMate.class);
if (!CollectionUtils.isEmpty(projectTeamMateList)) { if (!CollectionUtils.isEmpty(projectTeamMateList)) {
for (ProjectTeamMate teamMate : projectTeamMateList) { ProjectTeamMate teamMate = projectTeamMateList.get(0);
if (teamMate.getEndDate() != null && !teamMate.getProjectName() Date d = projectTeamMate.getNewBillingStartDate();
.equalsIgnoreCase(MyTimeUtils.FREE_POLL)) { Calendar cal = Calendar.getInstance();
updateProjectEndDate( cal.setTime(d);
projectTeamMate.getNewBillingStartDate(), cal.add(Calendar.DAY_OF_MONTH, -1);
teamMate.getEmployeeId(), teamMate.getProjectName(), Date oneDayLess = cal.getTime();
MyTimeUtils.ENDDATE_COLUMN,
MyTimeUtils.TEAMDETAILS_COLLECTION_NAME); if (teamMate.getNewBillingStartDate().getDate() == projectTeamMate.getNewBillingStartDate().getDate()) {
teamMate.setEndDate(DateUtils.truncate(projectTeamMate.getEndDate(), Calendar.DATE));
} } else {
} teamMate.setEndDate(DateUtils.truncate(oneDayLess, Calendar.DATE));
}
teamMate.setActive(false);
projectTeamMatesRepo.save(teamMate);
} }
} }
// Updating the billingenddate in BillingDetails . /* // Update BillingEndDate in BillingDetails.
private void updateProjectEndDateInBillingDetails(Date newBillingStartDate, private void updateProjectEndDateInBillingDetails(Date newBillingStartDate, BillingDetails billingDetails) {
BillingDetails billingDetails) { List<BillingDetails> billingDetailsList = mongoTemplate.find(
List<BillingDetails> billingDetailsList = mongoTemplate getQuery(billingDetails.getEmployeeId(), MyTimeUtils.CREATED_DATE_COLUMN), BillingDetails.class);
.find(getQuery(billingDetails.getEmployeeId(),
MyTimeUtils.CREATED_DATE_COLUMN), BillingDetails.class);
if (!CollectionUtils.isEmpty(billingDetailsList)) { if (!CollectionUtils.isEmpty(billingDetailsList)) {
for (BillingDetails billing : billingDetailsList) { BillingDetails billing = billingDetailsList.get(0);
if (billing.getBillingEndDate() != null Date d = billingDetails.getBillingStartDate();
&& !billing.getProjectName() Calendar cal = Calendar.getInstance();
.equalsIgnoreCase(MyTimeUtils.FREE_POLL)) { cal.setTime(d);
updateProjectEndDate(newBillingStartDate, cal.add(Calendar.DAY_OF_MONTH, -1);
billing.getEmployeeId(), billing.getProjectName(), Date oneDayLess = cal.getTime();
MyTimeUtils.BILLING_ENDDATE_COLUMN,
MyTimeUtils.BILLINGDETAILS_COLLECTION_NAME); if (billing.getBillingStartDate().getDate() == billingDetails.getBillingStartDate().getDate()) {
} billing.setBillingEndDate(DateUtils.truncate(billingDetails.getBillingEndDate(), Calendar.DATE));
} else {
} billing.setBillingEndDate(DateUtils.truncate(oneDayLess, Calendar.DATE));
}
teamMatesBillingRepo.save(billing);
} }
} }
// Updating the projectenddate // Update ProjectEndDate
private void updateProjectEndDate(Date newBillingStartDate, private void updateProjectEndDate(Date newBillingStartDate, String employeeId, String projectName,String dateColumn,
String employeeId, String projectName, String dateColumn, String collectionName) {
String collectionName) {
DBCollection collection = mongoTemplate.getCollection(collectionName); DBCollection collection = mongoTemplate.getCollection(collectionName);
BasicDBObject searchQuery = new BasicDBObject(); BasicDBObject searchQuery = new BasicDBObject();
searchQuery.append(MyTimeUtils.EMPLOYEE_ID, employeeId); searchQuery.append(MyTimeUtils.EMPLOYEE_ID, employeeId);
searchQuery.append(MyTimeUtils.PROJECT_NAME, projectName); searchQuery.append(MyTimeUtils.PROJECT_NAME, projectName);
BasicDBObject updateQuery = new BasicDBObject(); BasicDBObject updateQuery = new BasicDBObject();
updateQuery.append(MyTimeUtils.SET, new BasicDBObject().append( updateQuery.append(MyTimeUtils.SET, new BasicDBObject().append(dateColumn,DateUtils.addDays(
dateColumn, newBillingStartDate, MyTimeUtils.MINUS_ONE)));
DateUtils.addDays(newBillingStartDate, MyTimeUtils.MINUS_ONE)));
collection.update(searchQuery, updateQuery); collection.update(searchQuery, updateQuery);
} }*/
private Query getQuery(String employeeId, String dateColumn) { private Query getQuery(String employeeId, String dateColumn) {
Query query = new Query(); Query query = new Query();
query.addCriteria( query.addCriteria(Criteria.where(MyTimeUtils.EMPLOYEE_ID).is(employeeId));
Criteria.where(MyTimeUtils.EMPLOYEE_ID).is(employeeId));
query.limit(MyTimeUtils.ONE); query.limit(MyTimeUtils.ONE);
query.with(new Sort(Sort.Direction.DESC, dateColumn)); query.with(new Sort(Sort.Direction.DESC, dateColumn));
return query; return query;
...@@ -896,7 +904,6 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -896,7 +904,6 @@ public class ProjectServiceImpl implements ProjectService {
@Override @Override
public void deleteEmployeeBilling(BillingDetails teamMate) { public void deleteEmployeeBilling(BillingDetails teamMate) {
// TODO Auto-generated method stub
teamMatesBillingRepo.delete(teamMate); teamMatesBillingRepo.delete(teamMate);
} }
...@@ -1014,27 +1021,59 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -1014,27 +1021,59 @@ public class ProjectServiceImpl implements ProjectService {
String projectName = null; String projectName = null;
String fromDate = null; String fromDate = null;
String toDate = null; String toDate = null;
List<ProjectTeamMate> teamMateList = projectTeamMatesRepo.findByEmployeeId(projectTeamMate.getEmployeeId()); String result = null;
List<ProjectTeamMate> teamMateList = projectTeamMatesRepo.findByEmployeeId(projectTeamMate.getEmployeeId()).stream()
.filter(e -> !("Nisum0000".equalsIgnoreCase(e.getProjectId())))
.sorted(Comparator.comparing(ProjectTeamMate::getEndDate).reversed())
.collect(Collectors.toList());
// Checking, if resource has existing project assignment.
for (ProjectTeamMate projectMate : teamMateList) { for (ProjectTeamMate projectMate : teamMateList) {
if (projectMate.getEndDate()!=null && (projectMate.getEndDate().compareTo(new Date())>0) if (projectMate.getEndDate() != null && (projectMate.getEndDate().compareTo(new Date()) > 0)) {
&& !projectMate.getProjectId().equals("Nisum0000")) { flag = true;
flag=true; projectName = projectMate.getProjectName();
projectName = projectMate.getProjectName(); fromDate = projectMate.getStartDate().toString();
fromDate = projectMate.getStartDate().toString(); toDate = projectMate.getEndDate().toString();
toDate = projectMate.getEndDate().toString();
break; break;
} }
} }
if (flag==true) if (flag) {// If yes, error thrown to user.
return "Resource " + projectTeamMate.getEmployeeId() + " already Assigned to the " + projectName result = "Resource " + projectTeamMate.getEmployeeId() + " already Assigned to the " + projectName
+ " Project" + " from " + fromDate + "to " + toDate; + " Project" + " from " + fromDate + "to " + toDate;
else } else {// If no, validating new project assignment start date against previous project end date.
addProjectTeamMate(projectTeamMate); result = validateNewProjectAssignmentStartDate(teamMateList, projectTeamMate);
return "TeamMate added successfuly"; if (result == null) {
addProjectTeamMate(projectTeamMate);
result = "TeamMate added successfuly";
}
}
return result;
} }
private String validateNewProjectAssignmentStartDate(List<ProjectTeamMate> teamMateList, ProjectTeamMate projectTeamMate) {
String response = null;
if (teamMateList != null && teamMateList.size() > 0) {
ProjectTeamMate ptMate = teamMateList.get(0);
if (projectTeamMate.getNewBillingStartDate().compareTo(ptMate.getEndDate()) <= 0) {
response = "Resource Start Date (" + projectTeamMate.getNewBillingStartDate() +" ) in " + projectTeamMate.getProjectName()
+ " project should be after " + ptMate.getProjectName() + " project End Date ( " + ptMate.getEndDate() + ").";
}
} else {
response = validateAgainstDOJ(projectTeamMate);
}
return response;
}
private String validateAgainstDOJ(ProjectTeamMate projectTeamMate) {
String response = null;
Date empDoj = employeeRolesRepo.findByEmployeeId(projectTeamMate.getEmployeeId()).getDateOfJoining();
if(projectTeamMate.getNewBillingStartDate().compareTo(empDoj) < 0) {
response = "Resource Start Date (" + projectTeamMate.getNewBillingStartDate() +" ) in " + projectTeamMate.getProjectName()
+ " project should not be before Date of Joining ( " + empDoj + ").";
}
return response;
}
@Override @Override
public List<HashMap<Object, Object>> projectsInfoByEmpId(String empId){ public List<HashMap<Object, Object>> projectsInfoByEmpId(String empId){
HashMap<Object, Object> projectMap =null; HashMap<Object, Object> projectMap =null;
......
...@@ -8,6 +8,8 @@ import com.nisum.mytime.exception.handler.MyTimeException; ...@@ -8,6 +8,8 @@ import com.nisum.mytime.exception.handler.MyTimeException;
public interface RoleMappingService { public interface RoleMappingService {
void addEmployeeRole(String employeeId, String roleId) throws MyTimeException;
void saveUniqueEmployeeAndRole(List<String> employeeIds, String roleId) throws MyTimeException; void saveUniqueEmployeeAndRole(List<String> employeeIds, String roleId) throws MyTimeException;
WriteResult deleteRole(String employeeId, String roleId) throws MyTimeException; WriteResult deleteRole(String employeeId, String roleId) throws MyTimeException;
......
...@@ -35,17 +35,25 @@ public class RoleMappingServiceImpl implements RoleMappingService { ...@@ -35,17 +35,25 @@ public class RoleMappingServiceImpl implements RoleMappingService {
@Override @Override
public void saveUniqueEmployeeAndRole(List<String> employeeIds, String roleId) throws MyTimeException { public void saveUniqueEmployeeAndRole(List<String> employeeIds, String roleId) throws MyTimeException {
for (String employeeId : employeeIds) { for (String employeeId : employeeIds) {
RoleMappingInfo roleMappingInfo = roleMappingInfoRepo.findByEmployeeIdAndRoleId(employeeId, roleId); addEmployeeRole(employeeId, roleId);
if (roleMappingInfo == null) { }
roleMappingInfo = new RoleMappingInfo(); }
roleMappingInfo.setEmployeeId(employeeId);
roleMappingInfo.setRoleId(roleId); public void addEmployeeRole(String employeeId, String roleId) throws MyTimeException {
roleMappingInfo.setIsActive("Y"); RoleMappingInfo roleMappingInfo = roleMappingInfoRepo.findByEmployeeIdAndRoleId(employeeId, roleId);
} else if (roleMappingInfo.getIsActive().equalsIgnoreCase("N")) { boolean isChanged = false;
roleMappingInfo.setIsActive("Y"); if (roleMappingInfo == null) {
} roleMappingInfo = new RoleMappingInfo();
roleMappingInfo.setEmployeeId(employeeId);
roleMappingInfo.setRoleId(roleId);
roleMappingInfo.setIsActive("Y");
isChanged = true;
} else if (roleMappingInfo.getIsActive().equalsIgnoreCase("N")) {
roleMappingInfo.setIsActive("Y");
isChanged = true;
}
if (isChanged) {
roleMappingInfoRepo.save(roleMappingInfo); roleMappingInfoRepo.save(roleMappingInfo);
} }
} }
......
package com.nisum.mytime.utils;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class MyTeamResultDTO implements Serializable {
private static final long serialVersionUID = 1L;
public static String ERROR_CODE = "MTERR100";
public static String SUCCESS_CODE = "MTS100";
private String resultCode;
private String resultData[];
private int dataArrayCounter;
public String[] getResultData() {
return resultData;
}
public void setResultData(String resultData) {
if (this.resultData == null) {
this.resultData = new String[10];
}
for (int i = 0; i < 10; i++) {
setDataArrayCounter(i);
if (this.resultData[i] == null || this.resultData[i].isEmpty()) {
this.resultData[i] = resultData;
break;
}
}
}
public int getDataArrayCounter() {
return dataArrayCounter;
}
private void setDataArrayCounter(int dataArrayCounter) {
this.dataArrayCounter = dataArrayCounter;
}
}
...@@ -1155,18 +1155,6 @@ myApp.controller("projectController", function ($scope, myFactory, exportUiGridS ...@@ -1155,18 +1155,6 @@ myApp.controller("projectController", function ($scope, myFactory, exportUiGridS
} }
else { else {
updateTeamRecord(record, action); updateTeamRecord(record, action);
$timeout(function () {
getProjectDetails(project, $scope.status);
removeTab('Add');
$mdDialog.show($mdDialog.alert({
skipHide: true,
textContent: 'Employee Updated',
ok: 'ok'
})).then(function () {
$scope.myForm.$setPristine();
})
;
}, 500);
} }
} }
...@@ -1508,7 +1496,20 @@ myApp.controller("projectController", function ($scope, myFactory, exportUiGridS ...@@ -1508,7 +1496,20 @@ myApp.controller("projectController", function ($scope, myFactory, exportUiGridS
} }
$http(req).then(function mySuccess(response) { $http(req).then(function mySuccess(response) {
$scope.result = "Success"; $scope.result = "Success";
$scope.objectId = response.data.id; if(response.data == "TeamMate updated successfuly"){
$timeout(function () {
getProjectDetails($scope.projectId, $scope.status);
removeTab('Add');
}, 500);
}
$mdDialog.show($mdDialog.alert({
skipHide: true,
textContent: response.data,
ok: 'ok'
})).then(function () {
$scope.myForm.$setPristine();
})
// $scope.objectId = response.data.id;
}, function myError(response){ }, function myError(response){
$scope.result = "Error"; $scope.result = "Error";
......
...@@ -150,7 +150,7 @@ ...@@ -150,7 +150,7 @@
<tr> <tr>
<td class="Employee">Start Date</td> <td class="Employee">Start Date</td>
<td> <td>
<md-datepicker ng-model="startDate " md-placeholder="Please select Date" id="startDate " md-min-date="minDate " md-max-date="maxDate " <md-datepicker ng-model="startDate" ng-disabled = "true" md-placeholder="Please select Date" id="startDate " md-min-date="minDate " md-max-date="maxDate "
onkeydown="return false " name="startDate"></md-datepicker> onkeydown="return false " name="startDate"></md-datepicker>
</td> </td>
</tr> </tr>
...@@ -158,7 +158,7 @@ ...@@ -158,7 +158,7 @@
<tr> <tr>
<td class="Employee">End Date</td> <td class="Employee">End Date</td>
<td> <td>
<md-datepicker ng-model="endDate " md-placeholder="Please select Date" id="endDate " md-min-date="minDate " md-max-date="maxDate " <md-datepicker ng-model="endDate" md-placeholder="Please select Date" id="endDate " md-min-date="minDate " md-max-date="maxDate "
onkeydown="return false " name="endDate"></md-datepicker> onkeydown="return false " name="endDate"></md-datepicker>
</td> </td>
</tr> </tr>
...@@ -278,7 +278,7 @@ ...@@ -278,7 +278,7 @@
<tr> <tr>
<td class="Employee">Start Date</td> <td class="Employee">Start Date</td>
<td> <td>
<md-datepicker ng-model="startDate " md-placeholder="Please select Date" id="startDate " md-min-date="minDate " md-max-date="maxDate " <md-datepicker ng-model="startDate" ng-disabled = "true" md-placeholder="Please select Date" id="startDate " md-min-date="minDate " md-max-date="maxDate "
onkeydown="return false " name="startDate"></md-datepicker> onkeydown="return false " name="startDate"></md-datepicker>
</td> </td>
</tr> </tr>
......
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