Commit 3ff7c67b authored by Vijay Akula's avatar Vijay Akula

Provided new controller for dashboard

parent 2a843966
package com.nisum.myteam.controller;
import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.exception.handler.ResponseDetails;
import com.nisum.myteam.model.vo.EmployeeDashboardVO;
import com.nisum.myteam.service.IDashboardService;
import com.nisum.myteam.service.impl.DashboardService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
@RestController
@RequestMapping
public class DashboardController {
@Autowired
private IDashboardService dashboardService;
@RequestMapping(value = "/resourceAllocation/getEmployeesDashBoard", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> getEmployeesDashBoard(HttpServletRequest request) throws MyTeamException {
List<EmployeeDashboardVO> employeeDashBoardList = dashboardService.getEmployeesDashBoard();
ResponseDetails responseDetails = new ResponseDetails(new Date(), 602, "Resources have been retrieved successfully",
"List of Resources for dashboard", employeeDashBoardList, request.getRequestURI(), "Resource details", null);
return new ResponseEntity<ResponseDetails>(responseDetails, HttpStatus.OK);
}
}
package com.nisum.myteam.model.vo;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class MyProjectAllocationVO {
private String projectName;
private String accountName;
private String billableStatus;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
private Date billingStartDate;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
private Date billingEndDate;
private String shift;
private String resourceStatus;
private List<HashMap<String, String>> deliverLeadIds;
}
package com.nisum.myteam.model.vo;
import lombok.*;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class ResourceVO {
@Id
private ObjectId id;
private String employeeId;
private String employeeName;
private String designation;
private String emailId;
private String projectId;
private String projectName;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
private String billableStatus;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX")
private Date billingStartDate;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX")
private Date billingEndDate;
private String resourceStatus;
private String resourceRole;
}
package com.nisum.myteam.service;
public class IDashboardService {
}
package com.nisum.myteam.service.impl;
import com.nisum.myteam.model.dao.Employee;
import com.nisum.myteam.model.dao.Project;
import com.nisum.myteam.model.dao.ResourceAllocation;
import com.nisum.myteam.model.vo.EmployeeDashboardVO;
import com.nisum.myteam.service.IDashboardService;
import com.nisum.myteam.service.IEmployeeService;
import com.nisum.myteam.service.IProjectService;
import com.nisum.myteam.service.IResourceAllocationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
@Service
@Slf4j
public class DashboardService implements IDashboardService {
@Autowired
private IEmployeeService employeeService;
@Autowired
private IResourceAllocationService resourceService;
@Autowired
private IProjectService projectService;
@Override
public List<EmployeeDashboardVO> getEmployeesDashBoard() {
//List<Employee> allEmployees = employeeRepo.findAll();
List<Employee> allEmployees = employeeService.getAllEmployees();
List<EmployeeDashboardVO> employeeDashboard = new ArrayList<>();
Map<String, Object> teamMatesMap = new HashMap();
Map<String, Object> teamMatesStatusMap = new HashMap();
// Find all active employees
List<ResourceAllocation> resources = resourceService.getAllResources();
for (ResourceAllocation resource : resources) {
//if (resource.isActive()) {
if (resource.getBillingEndDate().compareTo(new Date())>0) {
Project project = projectService.getProjectByProjectId(resource.getProjectId());
if (project != null && project.getStatus() != null
&& !"Completed".equalsIgnoreCase(project.getStatus())) {
Object projectTeamMate = teamMatesMap
.get(resource.getEmployeeId());
if (projectTeamMate == null) {
List listOfObjects = new ArrayList<>();
listOfObjects.add(resource);
// A person can have multiple active projects with billability
teamMatesMap.put(resource.getEmployeeId(), listOfObjects);
} else {
List existingRecordsInMap = (List) teamMatesMap
.get(resource.getEmployeeId());
existingRecordsInMap.add(resource);
teamMatesMap.put(resource.getEmployeeId(),
existingRecordsInMap);
}
}
}
}
for (Employee emp : allEmployees) {
if (teamMatesMap.containsKey(emp.getEmployeeId())) {
Object value = teamMatesMap.get(emp.getEmployeeId());
if (value instanceof List) {
List listOfTeamMates = (List) value;
String billableStatus = "NA";
for (Object obj : listOfTeamMates) {
ResourceAllocation projectTeamMate = (ResourceAllocation) obj;
String status = projectTeamMate.getBillableStatus();
if (status == null) {
status = "NA";
}
EmployeeDashboardVO empVo = new EmployeeDashboardVO();
BeanUtils.copyProperties(emp, empVo);
BeanUtils.copyProperties(projectTeamMate, empVo,
"employeeId", "employeeName", "emailId", "role",
"designation", "mobileNumber");
employeeDashboard.add(empVo);
}
}
} else {
EmployeeDashboardVO empVo = new EmployeeDashboardVO();
BeanUtils.copyProperties(emp, empVo);
empVo.setBillableStatus("UA");
empVo.setProjectAssigned(false);
employeeDashboard.add(empVo);
}
}
return employeeDashboard;
}
}
package com.nisum.myteam.utils;
import java.util.Calendar;
import java.util.Date;
public class MyTeamDateUtils {
public static Date getYesterdayDate() {
final Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
return cal.getTime();
}
}
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