Commit 49a1ca8b authored by Vijay Akula's avatar Vijay Akula

Provided the code for getting projects based on role

parent a1970e3f
......@@ -123,26 +123,38 @@ public class ProjectController {
// @RequestMapping(value = "/getProjects" //get projects only for DL
@RequestMapping(value = "/projects/employeeId/{employeeId}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> getProjects(
public ResponseEntity<?> getProjectsOnRoleBasis(
@PathVariable(value = "employeeId") String employeeId, HttpServletRequest request)
throws MyTeamException {
List<HashMap<Object, Object>> projects = null;
if (employeeId != null && !"".equalsIgnoreCase(employeeId) && !"undefined".equalsIgnoreCase(employeeId)) {
boolean isDl = employeeService.verifyEmployeeRole(employeeId, MyTeamUtils.DL);
if (isDl) {
projects = projectService.deliveryLeadProjects(employeeId);
if (employeeId != null && !"".equalsIgnoreCase(employeeId) ) {
boolean isEmployeeHaveAccess = employeeService.verifyEmployeeRole(employeeId, MyTeamUtils.DL);
if (isEmployeeHaveAccess) {
//projects = projectService.deliveryLeadProjects(employeeId);
projects = projectService.getRoleBasedProjects(employeeId);
ResponseDetails getRespDetails = new ResponseDetails(new Date(), 604, "Retrieved the projects successfully",
"Projects list", projects, request.getRequestURI(), "Project details", null);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
}
else
{
projects =projectService.getProjectsInsteadOfRole();
ResponseDetails getRespDetails = new ResponseDetails(new Date(), 604, "Retrieved the projects successfully",
"Projects list", projects, request.getRequestURI(), "Project details", null);
ResponseDetails getRespDetails = new ResponseDetails(new Date(), 605, "You are not authorized to view Projects.",
"Only Delivery leads can get the project details", projects, request.getRequestURI(), "Project details", null);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
}
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
// ResponseDetails getRespDetails = new ResponseDetails(new Date(), 605, "You are not authorized to view Projects.",
// "Only Delivery leads can get the project details", projects, request.getRequestURI(), "Project details", null);
//
// return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
}
......@@ -152,7 +164,6 @@ public class ProjectController {
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
}
@RequestMapping(value = "/projects/deliveryLeadId/{deliveryLeadId}", method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> getProjectsUnderDeliveryLead(
......@@ -213,3 +224,35 @@ public class ProjectController {
//
// }
// @RequestMapping(value = "/getProjects" //get projects only for DL
// @RequestMapping(value = "/projects/employeeId/{employeeId}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
// public ResponseEntity<?> getProjects(
// @PathVariable(value = "employeeId") String employeeId, HttpServletRequest request)
// throws MyTeamException {
// List<HashMap<Object, Object>> projects = null;
//
// if (employeeId != null && !"".equalsIgnoreCase(employeeId) && !"undefined".equalsIgnoreCase(employeeId)) {
// boolean isDl = employeeService.verifyEmployeeRole(employeeId, MyTeamUtils.DL);
// if (isDl) {
// projects = projectService.deliveryLeadProjects(employeeId);
//
// ResponseDetails getRespDetails = new ResponseDetails(new Date(), 604, "Retrieved the projects successfully",
// "Projects list", projects, request.getRequestURI(), "Project details", null);
//
// return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
// }
//
// ResponseDetails getRespDetails = new ResponseDetails(new Date(), 605, "You are not authorized to view Projects.",
// "Only Delivery leads can get the project details", projects, request.getRequestURI(), "Project details", null);
//
// return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
//
// }
//
// ResponseDetails getRespDetails = new ResponseDetails(new Date(), 606, "Please Provide valid employee id",
// "Projects list", null, request.getRequestURI(), "Project details", null);
//
// return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
// }
\ No newline at end of file
......@@ -54,5 +54,6 @@ public interface IProjectService {
public Account updateProjSeqinAccount(Account account) throws MyTeamException;
public List<HashMap<Object, Object>> getRoleBasedProjects(String empId) throws MyTeamException;
public List<HashMap<Object, Object>> getProjectsInsteadOfRole() throws MyTeamException;
}
......@@ -64,6 +64,7 @@ public class BillingService implements IBillingService {
if (billingsList == null || billingsList.size() == 0) {
return billingsList;
} else {
log.info("The billing list before sorting::"+billingsList);
return billingsList.stream().sorted(Comparator.comparing(Billing::getCreatedOn).reversed())
.collect(Collectors.toList());
}
......
package com.nisum.myteam.service.impl;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.model.Account;
import com.nisum.myteam.model.Domain;
import com.nisum.myteam.model.Employee;
import com.nisum.myteam.model.Resource;
import com.nisum.myteam.repository.EmployeeRepo;
import com.nisum.myteam.service.*;
import com.nisum.myteam.utils.MyTeamUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.FindAndModifyOptions;
......@@ -16,24 +18,8 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import com.mongodb.WriteResult;
import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.model.Account;
import com.nisum.myteam.model.Domain;
import com.nisum.myteam.model.Employee;
import com.nisum.myteam.model.EmployeeRole;
import com.nisum.myteam.model.Resource;
import com.nisum.myteam.repository.EmployeeRepo;
import com.nisum.myteam.service.IAccountService;
import com.nisum.myteam.service.IDomainService;
import com.nisum.myteam.service.IEmployeeLocationService;
import com.nisum.myteam.service.IEmployeeRoleService;
import com.nisum.myteam.service.IEmployeeService;
import com.nisum.myteam.service.IProjectService;
import com.nisum.myteam.service.IResourceService;
import com.nisum.myteam.utils.MyTeamUtils;
import lombok.extern.slf4j.Slf4j;
import java.util.*;
import java.util.stream.Collectors;
@Service
@Slf4j
......@@ -303,19 +289,25 @@ public class EmployeeService implements IEmployeeService {
public boolean verifyEmployeeRole(String empId, String roleName) {
boolean flag = false;
log.info("The employeeId::"+empId);
log.info("The employeeId::" + empId);
Employee employee=getEmployeeById(empId);
log.info("Employee::::in EmployeeService::"+employee);
Employee employee = getEmployeeById(empId);
log.info("Employee::::in EmployeeService::" + employee);
String role = employee.getRole();
log.info("The employee role::"+role);
log.info("The employee role::" + role);
if (null != role && "" != role && !"Admin".equalsIgnoreCase(role)) {
Set<String> roleSet = employeeRoleService.empRolesMapInfoByEmpId(empId);
if (null != roleSet && !roleSet.isEmpty() && MyTeamUtils.INT_ZERO < roleSet.size()) {
if (roleSet.contains(roleName)) {
flag = true;
if ("FM".equalsIgnoreCase(role) || "Delivery Lead".equalsIgnoreCase(role)) {
flag = true;
} else {
Set<String> roleSet = employeeRoleService.empRolesMapInfoByEmpId(empId);
if (null != roleSet && !roleSet.isEmpty() && MyTeamUtils.INT_ZERO < roleSet.size()) {
if (roleSet.contains(roleName)) {
flag = true;
}
}
}
}
......@@ -332,6 +324,10 @@ public class EmployeeService implements IEmployeeService {
return employeeRepo.findAll();
}
}
......@@ -18,6 +18,8 @@ import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import com.nisum.myteam.model.Domain;
import java.util.*;
import java.util.stream.Collectors;
......@@ -633,7 +635,7 @@ public class ProjectService implements IProjectService {
}
return accIdsSet;
}
@Override
public List<HashMap<Object, Object>> deliveryLeadProjects(String empId) throws MyTeamException {
......@@ -650,24 +652,24 @@ public class ProjectService implements IProjectService {
for(Project obj : prjts) {
projectMap = new HashMap<>();
account = accountRepo.findByAccountId(obj.getAccountId());
domain = domainRepo.findByDomainId(obj.getDomainId());
projectMap.put("projectId", obj.getProjectId());
projectMap.put("projectName",obj.getProjectName());
projectMap.put("accountId", obj.getAccountId());
projectMap.put("domainId", obj.getDomainId());
projectMap.put("account", null != account ? account.getAccountName():"");
projectMap.put("domain", null != domain ? domain.getDomainName() : "");
projectMap.put("status", obj.getStatus());
projectMap.put("deliveryLeadIds", null != obj.getDeliveryLeadIds() ? employeeService.getDeliveryManagerMap(obj.getDeliveryLeadIds()) : "");
projectMap.put("managerIds", null != obj.getManagerIds() ? employeeService.getDeliveryManagerMap(obj.getManagerIds()) : "");
projectsList.add(projectMap);
}
}
......@@ -675,4 +677,70 @@ public class ProjectService implements IProjectService {
}
/*
Need to refactor the following code
*/
@Override
public List<HashMap<Object, Object>> getRoleBasedProjects(String empId) throws MyTeamException{
List<HashMap<Object, Object>> projectsList = new ArrayList<HashMap<Object, Object>>();
Set<String> accountIdSet = domainService.accountsAssignedToDeliveryLead(empId);
List<Project> projectList = projectRepo.findByAccountIdIn(accountIdSet);
for (Project proj : projectList) {
addToProjectList(projectsList, proj);
}
return projectsList;
}
@Override
public List<HashMap<Object, Object>> getProjectsInsteadOfRole() throws MyTeamException {
List<HashMap<Object, Object>> projectList = new ArrayList<>();
List<Project> projects = projectRepo.findAll();
for (Project proj : projects) {
addToProjectList(projectList, proj);
}
return projectList;
}
private void addToProjectList(List<HashMap<Object, Object>> projectList, Project proj) {
HashMap<Object, Object> projectMap = new HashMap<>();
buildProjectProperties(proj, projectMap);
projectMap.put("status", proj.getStatus());
projectMap.put("projectStartDate", proj.getProjectStartDate());
projectMap.put("projectEndDate", proj.getProjectEndDate());
projectList.add(projectMap);
}
private void buildProjectProperties(Project proj, HashMap<Object, Object> projectMap) {
projectMap.put("id", proj.getId());
projectMap.put("projectId", proj.getProjectId());
projectMap.put("projectName", proj.getProjectName());
Account account=accountService.getAccountById(proj.getAccountId());
Domain domain =domainService.getDomainById(proj.getDomainId());
if (domain != null)
projectMap.put("domain", domain.getDomainName());
if (account != null)
projectMap.put("account", account.getAccountName());
projectMap.put("accountId", proj.getAccountId());
projectMap.put("domainId", proj.getDomainId());
projectMap.put("employeeIds", proj.getEmployeeIds());
if (proj.getDeliveryLeadIds() != null) {
projectMap.put("deliveryLeadIds", employeeService.getDeliveryManagerMap(proj.getDeliveryLeadIds()));
}
if (proj.getManagerIds() != null) {
projectMap.put("managerIds", employeeService.getDeliveryManagerMap(proj.getManagerIds()));
}
}
}
......@@ -97,6 +97,7 @@ public class ResourceService implements IResourceService {
bDetails.setActive(false);
billingService.updateBilling(bDetails, loginEmpId);
}
Billing billings = new Billing();
billings.setEmployeeId(resourcePersisted.getEmployeeId());
billings.setEmployeeName(resourcePersisted.getEmployeeName());
......
package com.nisum.myteam.utils.constants;
public enum IndustryType {
RETAIL("retail"),FINANTIAL("Financial");
private String type;
private IndustryType(String type) {
this.type = type;
}
public String getType() {
return type;
}
}
......@@ -2,7 +2,8 @@ package com.nisum.myteam.utils.constants;
public enum RoleEnum {
DIRECTOR("Director"), DELIVERY_LEAD("Delivery Lead"), DELIVERY_MANAGER("Delivery Manager"),LEAD("Lead");
ADMIN("admin"),DIRECTOR("Director"),DELIVERY_MANAGER("Delivery Manager"), DELIVERY_LEAD("Delivery Lead"), LEAD("Lead"),
EMPLOYEE("Employee"),HR("hr");
private String role;
......
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