Commit b896a6bc authored by vikram singh's avatar vikram singh

dashboard service we are showing with latest billable status

parent 5e029af6
package com.nisum.myteam.model;
import java.io.Serializable;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class BillableEmployee implements Serializable {
private static final long serialVersionUID = 1L;
private String employeeId;
private String employeeName;
private String emailId;
private String projectName;
private String billableStatus;
private Date billingStartDate;
private Date billingEndDate;
private String functionalGroup;
}
package com.nisum.myteam.service.impl; package com.nisum.myteam.service.impl;
import com.nisum.myteam.exception.handler.MyTeamException; import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.model.dao.Account; import com.nisum.myteam.model.dao.Account;
import com.nisum.myteam.model.dao.Domain; import com.nisum.myteam.model.dao.Domain;
import com.nisum.myteam.model.dao.Employee; import com.nisum.myteam.model.dao.Employee;
import com.nisum.myteam.model.dao.Project; import com.nisum.myteam.model.dao.Project;
import com.nisum.myteam.model.vo.EmployeeDashboardVO; import com.nisum.myteam.model.dao.Resource;
import com.nisum.myteam.model.vo.ResourceVO; import com.nisum.myteam.model.vo.EmployeeDashboardVO;
import com.nisum.myteam.service.IDashboardService; import com.nisum.myteam.model.vo.ResourceVO;
import com.nisum.myteam.service.IEmployeeService; import com.nisum.myteam.service.IDashboardService;
import com.nisum.myteam.service.IProjectService; import com.nisum.myteam.service.IEmployeeService;
import com.nisum.myteam.service.IResourceService; import com.nisum.myteam.service.IProjectService;
import lombok.extern.slf4j.Slf4j; import com.nisum.myteam.service.IResourceService;
import org.springframework.beans.BeanUtils; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors; import java.util.*;
import java.util.stream.Collectors;
@Service
@Slf4j @Service
public class DashboardService implements IDashboardService { @Slf4j
public class DashboardService implements IDashboardService {
@Autowired
private IEmployeeService employeeService; @Autowired
private IEmployeeService employeeService;
@Autowired
private IResourceService resourceService; @Autowired
private IResourceService resourceService;
@Autowired
private IProjectService projectService; @Autowired
private IProjectService projectService;
@Autowired
private DomainService domainService; @Autowired
private DomainService domainService;
@Autowired
private AccountService accountService; @Autowired
private AccountService accountService;
@Override
public List<EmployeeDashboardVO> getEmployeesDashBoard() { @Override
//List<Employee> allEmployees = employeeRepo.findAll(); public List<EmployeeDashboardVO> getEmployeesDashBoard() {
List<Employee> allEmployees = employeeService.getAllEmployees(); //List<Employee> allEmployees = employeeRepo.findAll();
List<Employee> allEmployees = employeeService.getAllEmployees();
List<EmployeeDashboardVO> employeeDashboard = new ArrayList<>();
Map<String, Object> resourcesMap = new HashMap(); List<EmployeeDashboardVO> employeeDashboard = new ArrayList<>();
Map<String, Object> teamMatesStatusMap = new HashMap(); Map<String, Object> resourcesMap = new HashMap();
Map<String, Object> teamMatesStatusMap = new HashMap();
// Find all active employees
//List<Resource> resources = resourceService.getAllResources(); // Find all active employees
//List<Resource> resources = resourceService.getAllResources();
List<ResourceVO> resources = resourceService.getAllResourcesVO();
List<ResourceVO> resources = resourceService.getAllResourcesVO();
for (ResourceVO resource : resources) {
//if (resource.isActive()) { for (ResourceVO resource : resources) {
if (resource.getBillingEndDate().compareTo(new Date()) > 0) { //if (resource.isActive()) {
if (resource.getBillingEndDate().compareTo(new Date()) > 0) {
Project project = projectService.getProjectByProjectId(resource.getProjectId());
if (project != null && project.getStatus() != null Project project = projectService.getProjectByProjectId(resource.getProjectId());
&& !"Completed".equalsIgnoreCase(project.getStatus())) { if (project != null && project.getStatus() != null
Object projectResource = resourcesMap.get(resource.getEmployeeId()); && !"Completed".equalsIgnoreCase(project.getStatus())) {
Object projectResource = resourcesMap.get(resource.getEmployeeId());
if (projectResource == null) {
List listOfObjects = new ArrayList<>(); if (projectResource == null) {
listOfObjects.add(resource); List listOfObjects = new ArrayList<>();
// A person can have multiple active projects with billability listOfObjects.add(resource);
resourcesMap.put(resource.getEmployeeId(), listOfObjects); // A person can have multiple active projects with billability
} else { resourcesMap.put(resource.getEmployeeId(), listOfObjects);
List existingRecordsInMap = (List) resourcesMap } else {
.get(resource.getEmployeeId()); List existingRecordsInMap = (List) resourcesMap
existingRecordsInMap.add(resource); .get(resource.getEmployeeId());
resourcesMap.put(resource.getEmployeeId(), existingRecordsInMap.add(resource);
existingRecordsInMap); resourcesMap.put(resource.getEmployeeId(),
existingRecordsInMap);
}
} }
} }
} }
for (Employee emp : allEmployees) { }
if (resourcesMap.containsKey(emp.getEmployeeId())) { for (Employee emp : allEmployees) {
Object value = resourcesMap.get(emp.getEmployeeId()); if (resourcesMap.containsKey(emp.getEmployeeId())) {
if (value instanceof List) { Object value = resourcesMap.get(emp.getEmployeeId());
List listOfTeamMates = (List) value; if (value instanceof List) {
String billableStatus = "NA"; List listOfTeamMates = (List) value;
for (Object obj : listOfTeamMates) { String billableStatus = "NA";
ResourceVO projectTeamMate = (ResourceVO) obj; for (Object obj : listOfTeamMates) {
String status = projectTeamMate.getBillableStatus(); ResourceVO projectTeamMate = (ResourceVO) obj;
if (status == null) { String status = projectTeamMate.getBillableStatus();
status = "NA"; if (status == null) {
} status = "NA";
EmployeeDashboardVO empVo = new EmployeeDashboardVO(); }
BeanUtils.copyProperties(emp, empVo); EmployeeDashboardVO empVo = new EmployeeDashboardVO();
BeanUtils.copyProperties(projectTeamMate, empVo, BeanUtils.copyProperties(emp, empVo);
"employeeId", "employeeName", "emailId", "role", BeanUtils.copyProperties(projectTeamMate, empVo,
"designation", "mobileNumber"); "employeeId", "employeeName", "emailId", "role",
employeeDashboard.add(empVo); "designation", "mobileNumber");
} employeeDashboard.add(empVo);
} }
} else { }
EmployeeDashboardVO empVo = new EmployeeDashboardVO(); } else {
BeanUtils.copyProperties(emp, empVo); EmployeeDashboardVO empVo = new EmployeeDashboardVO();
empVo.setBillableStatus("UA"); BeanUtils.copyProperties(emp, empVo);
empVo.setProjectAssigned(false); empVo.setBillableStatus("UA");
employeeDashboard.add(empVo); empVo.setProjectAssigned(false);
} employeeDashboard.add(empVo);
} }
return employeeDashboard; }
} return employeeDashboard;
}
@Override
public List<EmployeeDashboardVO> getDashBoardData() throws MyTeamException { // @Override
List<EmployeeDashboardVO> employeeDashboard = new ArrayList<>(); // public List<EmployeeDashboardVO> getDashBoardData() throws MyTeamException {
List<Employee> allEmployees = employeeService.getActiveEmployees(); // List<EmployeeDashboardVO> employeeDashboard = new ArrayList<>();
List<ResourceVO> resources = resourceService.getAllResourcesVO(); // List<Employee> allEmployees = employeeService.getActiveEmployees();
// List<ResourceVO> resources = resourceService.getAllResourcesVO();
for (Employee employee:allEmployees){ //
EmployeeDashboardVO employeeDashboardVO = new EmployeeDashboardVO(); // for (Employee employee:allEmployees){
BeanUtils.copyProperties(employee, employeeDashboardVO); // EmployeeDashboardVO employeeDashboardVO = new EmployeeDashboardVO();
employeeDashboard.add(employeeDashboardVO); // BeanUtils.copyProperties(employee, employeeDashboardVO);
} // employeeDashboard.add(employeeDashboardVO);
// }
employeeDashboard.stream().forEach(emp -> { //
List<ResourceVO> latestResourceList = resources.stream(). // employeeDashboard.stream().forEach(emp -> {
filter(res -> (res.getEmployeeId().equals(emp.getEmployeeId())&&res.getBillingEndDate().after(new Date()))).collect(Collectors.toList()); // List<ResourceVO> latestResourceList = resources.stream().
if(!latestResourceList.isEmpty()){ // filter(res -> (res.getEmployeeId().equals(emp.getEmployeeId())&&res.getBillingEndDate().after(new Date()))).collect(Collectors.toList());
ResourceVO latestResource = latestResourceList.get(0); // if(!latestResourceList.isEmpty()){
Project resourceProject = projectService.getProjectByProjectId(latestResource.getProjectId()); // ResourceVO latestResource = latestResourceList.get(0);
if(!resourceProject.getStatus().equals("Completed")){ // Project resourceProject = projectService.getProjectByProjectId(latestResource.getProjectId());
emp.setProjectId(resourceProject.getProjectId()); // if(!resourceProject.getStatus().equals("Completed")){
emp.setProjectName(resourceProject.getProjectName()); // emp.setProjectId(resourceProject.getProjectId());
emp.setBillingStartDate(latestResource.getBillingStartDate()); // emp.setProjectName(resourceProject.getProjectName());
emp.setBillingEndDate(latestResource.getBillingEndDate()); // emp.setBillingStartDate(latestResource.getBillingStartDate());
Domain domain = domainService.getDomainById(resourceProject.getDomainId()); // emp.setBillingEndDate(latestResource.getBillingEndDate());
Account account = accountService.getAccountById(resourceProject.getAccountId()); // Domain domain = domainService.getDomainById(resourceProject.getDomainId());
emp.setAccountName(account.getAccountName()); // Account account = accountService.getAccountById(resourceProject.getAccountId());
emp.setDomain(domain.getDomainName()); // emp.setAccountName(account.getAccountName());
} // emp.setDomain(domain.getDomainName());
} // }
}); // }
return employeeDashboard; // });
} // return employeeDashboard;
} // }
@Override
public List<EmployeeDashboardVO> getDashBoardData() throws MyTeamException {
List<EmployeeDashboardVO> employeeDashboard = new ArrayList<>();
List<Employee> allEmployees = employeeService.getActiveEmployees();
List<ResourceVO> resources = resourceService.getAllResourcesVO();
for (Employee employee:allEmployees){
EmployeeDashboardVO employeeDashboardVO = new EmployeeDashboardVO();
BeanUtils.copyProperties(employee, employeeDashboardVO);
employeeDashboard.add(employeeDashboardVO);
}
employeeDashboard.stream().forEach(emp -> {
Resource resource=resourceService.getLatestResourceByEmpId(emp.getEmployeeId());
Project resourceProject = projectService.getProjectByProjectId(resource.getProjectId());
if(!resourceProject.getStatus().equals("Completed")){
emp.setProjectId(resourceProject.getProjectId());
emp.setProjectName(resourceProject.getProjectName());
emp.setBillingStartDate(resource.getBillingStartDate());
emp.setBillingEndDate(resource.getBillingEndDate());
Domain domain = domainService.getDomainById(resourceProject.getDomainId());
Account account = accountService.getAccountById(resourceProject.getAccountId());
emp.setAccountName(account.getAccountName());
emp.setDomain(domain.getDomainName());
}
});
return employeeDashboard;
}
}
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