Commit 2a843966 authored by Vijay Akula's avatar Vijay Akula

Provided new resource control for new developement for resource management

parent 80aed22b
......@@ -16,15 +16,15 @@ import org.springframework.web.filter.CorsFilter;
@SpringBootApplication
@EnableAutoConfiguration
@EnableMongoRepositories(basePackages = { "com.nisum.myteam.repository" })
public class MyTimeApplication extends SpringBootServletInitializer {
public class MyTeamApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MyTimeApplication.class);
return application.sources(MyTeamApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(MyTimeApplication.class, args);
SpringApplication.run(MyTeamApplication.class, args);
}
@Bean
......
package com.nisum.myteam.controller;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
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.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.exception.handler.ResponseDetails;
import com.nisum.myteam.model.dao.Domain;
import com.nisum.myteam.service.IDomainService;
import com.nisum.myteam.statuscodes.DomainStatus;
import lombok.extern.slf4j.Slf4j;
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.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author Vijay
*
*/
@RestController
@Slf4j
public class DomainController {
@Autowired
private IDomainService domainService;
@RequestMapping(value = "/domains", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> createDomain(@RequestBody Domain domain, HttpServletRequest request)
throws MyTeamException {
log.info("Domain Creation");
if (!domainService.isDomainExists(domain)) {
Domain domainPeristed = domainService.create(domain);
@Autowired
private IDomainService domainService;
ResponseDetails createRespDetails = new ResponseDetails(new Date(), 801, "Domain has been created",
"Domain Creation", null, "", "details", domainPeristed);
return new ResponseEntity<ResponseDetails>(createRespDetails, HttpStatus.OK);
}
log.info("A domain is already existed with the requested name" + domain.getDomainName());
@RequestMapping(value = "/domains", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> createDomain(@RequestBody Domain domain, HttpServletRequest request)
throws MyTeamException {
ResponseDetails responseDetails = new ResponseDetails(new Date(), 802, "Domain is already existed",
"Choose the different domain name", null, request.getRequestURI(), "Domain details", domain);
log.info("Domain Creation");
return new ResponseEntity<ResponseDetails>(responseDetails, HttpStatus.OK);
if (!domainService.isDomainExists(domain)) {
Domain domainPeristed = domainService.create(domain);
}
ResponseDetails createRespDetails = new ResponseDetails(new Date(), DomainStatus.CREATE.getCode(), DomainStatus.CREATE.getMessage(),
"Domain Creation", null, "", "details", domainPeristed);
return new ResponseEntity<ResponseDetails>(createRespDetails, HttpStatus.OK);
}
log.info("A domain is already existed with the requested name" + domain.getDomainName());
ResponseDetails responseDetails = new ResponseDetails(new Date(), DomainStatus.ALREADY_EXISTED.getCode(), DomainStatus.ALREADY_EXISTED.getMessage(),
"Choose the different domain name", null, request.getRequestURI(), "Domain details", domain);
@RequestMapping(value = "/domains", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> updateDomain(@RequestBody Domain domain, HttpServletRequest request)
throws MyTeamException {
return new ResponseEntity<ResponseDetails>(responseDetails, HttpStatus.OK);
boolean isDomainExists = domainService.isDomainExists(domain);
if (isDomainExists == true) {
Domain domainPersisted = domainService.update(domain);
ResponseDetails updateRespDetails = new ResponseDetails(new Date(), 802, "Domain has been updated",
"Domain Updation", null, request.getRequestURI(), "Updation Domain details", domainPersisted);
}
return new ResponseEntity<ResponseDetails>(updateRespDetails, HttpStatus.OK);
}
ResponseDetails responseDetails = new ResponseDetails(new Date(), 803, "Domain is Not found",
"Choose the correct updating domain name", null, request.getRequestURI(), "details", domain);
return new ResponseEntity<ResponseDetails>(responseDetails, HttpStatus.OK);
}
@RequestMapping(value = "/domains", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> updateDomain(@RequestBody Domain domain, HttpServletRequest request)
throws MyTeamException {
@RequestMapping(value = "/domains/{domainId}", method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> deleteDomain(@PathVariable String domainId, HttpServletRequest request)
throws MyTeamException {
domainService.delete(domainId);
boolean isDomainExists = domainService.isDomainExists(domain);
if (isDomainExists == true) {
Domain domainPersisted = domainService.update(domain);
ResponseDetails updateRespDetails = new ResponseDetails(new Date(), DomainStatus.UPDATE.getCode(), DomainStatus.UPDATE.getMessage(),
"Domain Updation", null, request.getRequestURI(), "Updation Domain details", domainPersisted);
ResponseDetails deleteRespDetails = new ResponseDetails(new Date(), 804, "Domain has been deleted",
"Domain Deletion", null, request.getRequestURI(), "Deletion Domain details", domainId);
return new ResponseEntity<ResponseDetails>(updateRespDetails, HttpStatus.OK);
}
ResponseDetails responseDetails = new ResponseDetails(new Date(), 803, "Domain is Not found",
"Choose the correct updating domain name", null, request.getRequestURI(), "details", domain);
return new ResponseEntity<ResponseDetails>(responseDetails, HttpStatus.OK);
return new ResponseEntity<ResponseDetails>(deleteRespDetails, HttpStatus.OK);
}
}
@RequestMapping(value = "/domains/{domainId}", method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> deleteDomain(@PathVariable String domainId, HttpServletRequest request)
throws MyTeamException {
domainService.delete(domainId);
ResponseDetails deleteRespDetails = new ResponseDetails(new Date(), 804, "Domain has been deleted",
"Domain Deletion", null, request.getRequestURI(), "Deletion Domain details", domainId);
return new ResponseEntity<ResponseDetails>(deleteRespDetails, HttpStatus.OK);
@RequestMapping(value = "/domains", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> getDomains(HttpServletRequest request) throws MyTeamException {
}
ResponseDetails getRespDetails = new ResponseDetails(new Date(), 804, "Retrieved the domains successfully",
"Domains list", domainService.getDomainsList(), request.getRequestURI(), "details", null);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
}
@RequestMapping(value = "/domains", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> getDomains(HttpServletRequest request) throws MyTeamException {
//getting domains list under accountId which is an active.
@RequestMapping(value = "/domains/{accountId}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<Domain>> getDomains(@PathVariable("accountId") String accountId) throws MyTeamException {
List<Domain> domains = domainService.getDomainsUnderAccount(accountId).stream()
.filter(e -> "Active".equalsIgnoreCase(e.getStatus())).collect(Collectors.toList());
return new ResponseEntity<>(domains, HttpStatus.OK);
}
ResponseDetails getRespDetails = new ResponseDetails(new Date(), DomainStatus.GET_DOMIAINS.getCode(), DomainStatus.GET_DOMIAINS.getMessage(),
"Domains list", domainService.getDomainsList(), request.getRequestURI(), "details", null);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
}
//getting domains list under accountId which is an active.
@RequestMapping(value = "/domains/{accountId}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<Domain>> getDomains(@PathVariable("accountId") String accountId) throws MyTeamException {
List<Domain> domains = domainService.getDomainsUnderAccount(accountId).stream()
.filter(e -> "Active".equalsIgnoreCase(e.getStatus())).collect(Collectors.toList());
return new ResponseEntity<>(domains, HttpStatus.OK);
}
}
\ No newline at end of file
......@@ -42,7 +42,7 @@ public class EmployeeController {
public ResponseEntity<?> createEmployee( @RequestBody Employee employeeReq,
@PathVariable(value = "empId") String loginEmpId, HttpServletRequest request) throws MyTeamException {
if (empService.isEmployeeExistsById(loginEmpId)) {
if (!empService.isEmployeeExistsById(loginEmpId)) {
Employee employeePersisted = empService.createEmployee(employeeReq, loginEmpId);
ResponseDetails createRespDetails = new ResponseDetails(new Date(), 901, "Employee has been created",
......
......@@ -6,7 +6,9 @@ import com.nisum.myteam.model.dao.Account;
import com.nisum.myteam.model.dao.Project;
import com.nisum.myteam.service.IEmployeeService;
import com.nisum.myteam.service.IProjectService;
import com.nisum.myteam.statuscodes.ProjectStatus;
import com.nisum.myteam.utils.MyTeamUtils;
import com.nisum.myteam.utils.constants.ApplicationRole;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
......@@ -53,8 +55,8 @@ public class ProjectController {
Project projectPersisted = projectService.createProject(projectReq, loginEmpId);
if (projectPersisted != null) {
ResponseDetails getRespDetails = new ResponseDetails(new Date(), 800,
"Project has been created", "Project description", null,
ResponseDetails getRespDetails = new ResponseDetails(new Date(), ProjectStatus.CREATE.getCode(),
ProjectStatus.CREATE.getMessage(), "Project description", null,
request.getRequestURI(), "details", projectPersisted);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
......@@ -63,8 +65,8 @@ public class ProjectController {
}
}
ResponseDetails getRespDetails = new ResponseDetails(new Date(), 801,
"Project is already existed", "Choose the different project name", null,
ResponseDetails getRespDetails = new ResponseDetails(new Date(), ProjectStatus.ALREADY_EXISTED.getCode(),
ProjectStatus.ALREADY_EXISTED.getMessage(), "Choose the different project name", null,
request.getRequestURI(), "details", projectReq);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
......@@ -80,21 +82,21 @@ public class ProjectController {
if (projectService.isProjectExistsById(projectId)) {
if (projectService.isProjectExists(project.getProjectName())) {
Project updatedProject = projectService.updateProject(project, loginEmpId);
ResponseDetails getRespDetails = new ResponseDetails(new Date(), 801,
"Project has been updated", "Project Updation Description", null,
ResponseDetails getRespDetails = new ResponseDetails(new Date(), ProjectStatus.UPDATE.getCode(),
ProjectStatus.UPDATE.getMessage(), "Project Updation Description", null,
request.getRequestURI(), "Project Updation details", updatedProject);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
}
ResponseDetails getRespDetails = new ResponseDetails(new Date(), 801,
"Project is not existed", "Please provide the valid project name", null,
ResponseDetails getRespDetails = new ResponseDetails(new Date(), ProjectStatus.PROJECT_NAME_IS_NOT_EXISTS.getCode(),
ProjectStatus.PROJECT_NAME_IS_NOT_EXISTS.getMessage(), "Please provide the valid project name", null,
request.getRequestURI(), "details", project);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
}
ResponseDetails getRespDetails = new ResponseDetails(new Date(), 801,
"Project Id is not existed", "Please provide the valid project Id", null,
ResponseDetails getRespDetails = new ResponseDetails(new Date(), ProjectStatus.PROJECTID_IS_NOT_EXISTS.getCode(),
ProjectStatus.PROJECTID_IS_NOT_EXISTS.getMessage(), "Please provide the valid project Id", null,
request.getRequestURI(), "details", project);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
......@@ -106,21 +108,20 @@ public class ProjectController {
if (projectService.isProjectExistsById(projectId)) {
projectService.deleteProject(projectId);
ResponseDetails deleteRespDetails = new ResponseDetails(new Date(), 604,
"Project has been deleted successfully", "Project Deletion description", null, request.getRequestURI(), "Project Deletion details",
ResponseDetails deleteRespDetails = new ResponseDetails(new Date(), ProjectStatus.DELETE.getCode(),
ProjectStatus.DELETE.getMessage(), "Project Deletion description", null, request.getRequestURI(), "Project Deletion details",
projectId);
return new ResponseEntity<ResponseDetails>(deleteRespDetails, HttpStatus.OK);
}
ResponseDetails deleteRespDetails = new ResponseDetails(new Date(), 604,
"Project does not exists", "Please provide valid project id", null, request.getRequestURI(), "Project Deletion details",
ResponseDetails deleteRespDetails = new ResponseDetails(new Date(), ProjectStatus.PROJECTID_IS_NOT_EXISTS.getCode(),
ProjectStatus.PROJECTID_IS_NOT_EXISTS.getMessage(), "Please provide valid project id", null, request.getRequestURI(), "Project Deletion details",
projectId);
return new ResponseEntity<ResponseDetails>(deleteRespDetails, HttpStatus.OK);
}
// @RequestMapping(value = "/getProjects" //get projects only for DL
@RequestMapping(value = "/projects/employeeId/{employeeId}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> getProjectsOnRoleBasis(
......@@ -128,9 +129,9 @@ public class ProjectController {
throws MyTeamException {
List<HashMap<Object, Object>> projects = null;
if (employeeId != null && !"".equalsIgnoreCase(employeeId) ) {
if (employeeId != null && !"".equalsIgnoreCase(employeeId)) {
boolean isEmployeeHaveAccess = employeeService.verifyEmployeeRole(employeeId, MyTeamUtils.DL);
boolean isEmployeeHaveAccess = employeeService.verifyEmployeeRole(employeeId, ApplicationRole.DELIVERY_LEAD.getRoleId());
if (isEmployeeHaveAccess) {
//projects = projectService.deliveryLeadProjects(employeeId);
......@@ -140,10 +141,8 @@ public class ProjectController {
"Projects list", projects, request.getRequestURI(), "Project details", null);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
}
else
{
projects =projectService.getProjectsInsteadOfRole();
} else {
projects = projectService.getProjectsInsteadOfRole();
ResponseDetails getRespDetails = new ResponseDetails(new Date(), 604, "Retrieved the projects successfully",
"Projects list", projects, request.getRequestURI(), "Project details", null);
......@@ -203,56 +202,3 @@ public class ProjectController {
}
// checking project duplicateName
// int projectNameCount = 0;
// if (projectReq.getAccountId() != null) {
//
// List<Project> projects=projectService.getProjectsUnderDomain(projectReq.getDomainId());
//
// for (Project existproject : projects) {
// if (projectReq.getProjectName().equalsIgnoreCase(existproject.getProjectName()))
// projectNameCount++;
// }
// }
// if (projectNameCount > MyTeamUtils.INT_ZERO) {
// MyTeamException myTimeException = new MyTeamException("Project name already exist !!! try with new");
// return new ResponseEntity<>(myTimeException, HttpStatus.OK);
// } else {
//
// }
// @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
......@@ -251,7 +251,7 @@ public class ResourceController {
@RequestParam(value = "loginEmpId") String loginEmpId, HttpServletRequest request) throws MyTeamException {
if (StringUtils.isNotBlank(loginEmpId)) {
HashMap<String, Object> responseMap = projectService.addProjectTeamMateWithCheck(resourceReq, loginEmpId);
HashMap<String, Object> responseMap = resourceService.verifyResourceAssignedToAnyProject(resourceReq, loginEmpId);
ResponseDetails responseDetails = new ResponseDetails(new Date(), 602, responseMap.get("message").toString(),
"List of Resources for dashboard", responseMap.get("resourceObj"), request.getRequestURI(), "Resource details", null);
......
package com.nisum.myteam.model.dao;
import com.nisum.myteam.model.AuditFields;
import lombok.*;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.format.annotation.DateTimeFormat.ISO;
import java.io.Serializable;
import java.util.Date;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Document(collection = "resourceAllocation")
public class ResourceAllocation extends AuditFields implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private ObjectId id;
private String employeeId;
private String projectId;
private String projectName;
@DateTimeFormat(iso = ISO.DATE)
private String billableStatus;
@DateTimeFormat(iso = ISO.DATE)
private Date billingStartDate;
@DateTimeFormat(iso = ISO.DATE)
private Date billingEndDate;
//private boolean active;
// private String role;
// @DateTimeFormat(iso = ISO.DATE)
// private Date projectStartDate;
//
// @DateTimeFormat(iso = ISO.DATE)
// private Date projectEndDate;
}
package com.nisum.myteam.repository;
import com.nisum.myteam.model.dao.Resource;
import com.nisum.myteam.model.dao.ResourceAllocation;
import org.bson.types.ObjectId;
import org.springframework.data.mongodb.repository.MongoRepository;
import java.util.List;
public interface ResourceAllocationRepo
extends MongoRepository<ResourceAllocation, String> {
List<Resource> findByProjectId(String projectId);
List<Resource> findByEmployeeId(String employeeId);
Resource findById(ObjectId id);
Resource findByEmployeeIdAndProjectId(String employeeId, String projectId);
// List<Resource> findByEmployeeIdAndActive(String employeeId, boolean status);
// List<Resource> findByEmployeeIdAndProjectIdAndActive(String employeeId, String projectId, boolean status);
// List<Resource> findByAccountAndActiveAndBillableStatus(String account, boolean status, String billableStatus);
}
package com.nisum.myteam.service;
public interface IEmployeeVisaService {
}
......@@ -34,7 +34,7 @@ public interface IProjectService {
public List<EmployeeDashboardVO> getEmployeesDashBoard();
public HashMap<String,Object> addProjectTeamMateWithCheck(Resource projectTeamMate, String loginEmpId) throws MyTeamException;
public List<HashMap<Object, Object>> getProjectsForEmployee(String empId);
......@@ -57,4 +57,8 @@ public interface IProjectService {
public List<HashMap<Object, Object>> getRoleBasedProjects(String empId) throws MyTeamException;
public List<HashMap<Object, Object>> getProjectsInsteadOfRole() throws MyTeamException;
public Project getProjectByProjectId(String projectId);
}
package com.nisum.myteam.service;
import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.model.dao.Employee;
import com.nisum.myteam.model.dao.Resource;
import com.nisum.myteam.model.dao.ResourceAllocation;
import org.bson.types.ObjectId;
import java.util.HashMap;
import java.util.List;
public interface IResourceAllocationService {
ResourceAllocation addResourceAllocation(ResourceAllocation resourceAllocation, String loginEmpId) throws MyTeamException;
HashMap<String,Object> updateResource(ResourceAllocation resourceAllocation, String loginEmpId) throws MyTeamException;
Resource deleteResource(String empId, String projectId, ObjectId id, String loginEmpId);
// Resource save(Resource resource);
// void addResources(Employee employee, String loginEmpId);
// void inactivateResource(Employee employeeReq, Employee employeeUpdated, String loginEmpId);
List<ResourceAllocation> getResourcesSortByProjectStartDate(String employeeId);
// List<Resource> getResourcesForProject(String projectId, String status);
// List<Resource> getResourcesForEmployee(String empId);
// List<Resource> getResourcesForProject(String projectId);
// List<Resource> getActiveResources(String empId);
// List<Resource> getResourcesForActiveProjects();
// List<Resource> getResourcesForShift(String shift);
// public List<Resource> getResourcesUnderDeliveryLead(String empId);
}
package com.nisum.myteam.service;
import java.util.List;
import org.bson.types.ObjectId;
import org.springframework.stereotype.Service;
import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.model.dao.Employee;
import com.nisum.myteam.model.dao.Resource;
import org.bson.types.ObjectId;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
@Service
public interface IResourceService {
Resource addResource(Resource projectTeamMate, String loginEmpId) throws MyTeamException;
Resource addResource(Resource projectTeamMate, String loginEmpId) throws MyTeamException;
String updateResource(Resource projectTeamMate, String loginEmpId) throws MyTeamException;
Resource deleteResource(String empId, String projectId, ObjectId id, String loginEmpId);
Resource save(Resource resource);
void addResources(Employee employee, String loginEmpId);
String updateResource(Resource projectTeamMate, String loginEmpId) throws MyTeamException;
void inactivateResource(Employee employeeReq, Employee employeeUpdated, String loginEmpId);
Resource deleteResource(String empId, String projectId, ObjectId id, String loginEmpId);
List<Resource> findByAccountAndActiveAndBillableStatus(String account, boolean status, String billableStatus);
Resource save(Resource resource);
List<Resource> getResourcesSortByStartDate(String employeeId);
void addResources(Employee employee, String loginEmpId);
List<Resource> getResourcesForProject(String projectId, String status);
void inactivateResource(Employee employeeReq, Employee employeeUpdated, String loginEmpId);
List<Resource> getResourcesForEmployee(String empId);
List<Resource> findByAccountAndActiveAndBillableStatus(String account, boolean status, String billableStatus);
List<Resource> getResourcesForProject(String projectId);
List<Resource> getResourcesSortByStartDate(String employeeId);
List<Resource> getActiveResources(String empId);
List<Resource> getResourcesForProject(String projectId, String status);
List<Resource> getResourcesForActiveProjects();
List<Resource> getResourcesForEmployee(String empId);
List<Resource> getResourcesForShift(String shift);
List<Resource> getResourcesForProject(String projectId);
public List<Resource> getResourcesUnderDeliveryLead(String empId);
List<Resource> getActiveResources(String empId);
public HashMap<String, Object> verifyResourceAssignedToAnyProject(Resource projectTeamMate, String loginEmpId) throws MyTeamException;
List<Resource> getResourcesForActiveProjects();
List<Resource> getResourcesForShift(String shift);
public List<Resource> getResourcesUnderDeliveryLead(String empId);
}
......@@ -158,6 +158,23 @@ public class DomainService implements IDomainService {
return domainVOS;
}
public Domain getDomainById(String domainId) {
Domain domain = null;
if (domainId != null && domainId.length() > 0) {
domain = domainRepo.findByDomainId(domainId);
}
return domain;
}
@Override
public List<Domain> getDomainsUnderAccount(String accountId) throws MyTeamException {
List<Domain> domains = domainRepo.findByAccountId(accountId);
return domains;
}
@Override
public WriteResult delete(String domainId) throws MyTeamException {
List<String> domEmpIds = new ArrayList<String>();
......@@ -243,22 +260,7 @@ public class DomainService implements IDomainService {
return accIdsSet;
}
public Domain getDomainById(String domainId) {
Domain domain = null;
if (domainId != null && domainId.length() > 0) {
domain = domainRepo.findByDomainId(domainId);
}
return domain;
}
@Override
public List<Domain> getDomainsUnderAccount(String accountId) throws MyTeamException {
List<Domain> domains = domainRepo.findByAccountId(accountId);
return domains;
}
}
\ No newline at end of file
......@@ -8,7 +8,9 @@ import com.nisum.myteam.model.dao.Resource;
import com.nisum.myteam.repository.EmployeeRepo;
import com.nisum.myteam.service.*;
import com.nisum.myteam.utils.MyTeamUtils;
import com.nisum.myteam.utils.constants.ApplicationRole;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.FindAndModifyOptions;
......@@ -286,7 +288,7 @@ public class EmployeeService implements IEmployeeService {
}
@Override
public boolean verifyEmployeeRole(String empId, String roleName) {
public boolean verifyEmployeeRole(String empId, String roleIdReq) {
boolean flag = false;
log.info("The employeeId::" + empId);
......@@ -294,23 +296,29 @@ public class EmployeeService implements IEmployeeService {
Employee employee = getEmployeeById(empId);
log.info("Employee::::in EmployeeService::" + employee);
String role = employee.getRole();
log.info("The employee role::" + role);
if (null != role && "" != role && !"Admin".equalsIgnoreCase(role)) {
String roleName = employee.getRole();
log.info("The employee role::" + roleName);
if (StringUtils.isNotBlank(roleName) && !ApplicationRole.ADMIN.getRoleName().equalsIgnoreCase(roleName)) {
if ("FM".equalsIgnoreCase(role) || "Delivery Lead".equalsIgnoreCase(role)) {
if (ApplicationRole.FUNCTIONAL_MANAGER.getRoleName().equalsIgnoreCase(roleName) ||
ApplicationRole.DELIVERY_LEAD.getRoleName().equalsIgnoreCase(roleName)) {
flag = true;
log.info("in if block");
} else {
log.info("in else block");
Set<String> roleSet = employeeRoleService.empRolesMapInfoByEmpId(empId);
if (null != roleSet && !roleSet.isEmpty() && MyTeamUtils.INT_ZERO < roleSet.size()) {
if (roleSet.contains(roleName)) {
if (roleSet.contains(roleIdReq)) {
flag = true;
}
}
}
}
log.info("before return flag::"+flag);
return flag;
}
......
package com.nisum.myteam.service.impl;
import com.nisum.myteam.service.IEmployeeVisaService;
import org.springframework.stereotype.Service;
@Service
public class EmployeeVisaService implements IEmployeeVisaService {
//
// public getEmployeeVisaByName(String passport)
//
// employeeVisaRepo.findByVisaName(passport);
}
package com.nisum.myteam.service.impl;
import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.model.dao.EmpLoginData;
import com.nisum.myteam.model.dao.*;
import com.nisum.myteam.model.vo.EmployeeDashboardVO;
import com.nisum.myteam.repository.*;
......@@ -12,6 +11,7 @@ import com.nisum.myteam.service.IProjectService;
import com.nisum.myteam.utils.MyTeamUtils;
import com.nisum.myteam.utils.PdfReportGenerator;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.FindAndModifyOptions;
......@@ -28,13 +28,10 @@ import java.util.stream.Collectors;
@Slf4j
public class ProjectService implements IProjectService {
@Autowired
private EmployeeRepo employeeRepo;
@Autowired
private ProjectRepo projectRepo;
@Autowired
private ResourceRepo resourceRepo;
......@@ -46,12 +43,7 @@ public class ProjectService implements IProjectService {
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
private AccountRepo accountRepo;
@Autowired
private DomainRepo domainRepo;
@Autowired
private IDomainService domainService;
......@@ -123,8 +115,8 @@ public class ProjectService implements IProjectService {
@Override
public Project createProject(Project project, String loginEmpId) throws MyTeamException {
if (project.getDomainId() == null) {
List<Domain> domainsList = domainRepo
.findByAccountId(project.getAccountId());
//List<Domain> domainsList = domainRepo.findByAccountId(project.getAccountId());
List<Domain> domainsList = domainService.getDomainsUnderAccount(project.getAccountId());
Domain savedDomain = domainsList.get(0);
project.setDomainId(savedDomain.getDomainId());
project.setDomain(savedDomain.getDomainName());
......@@ -281,8 +273,12 @@ public class ProjectService implements IProjectService {
projectMap.put("id", project.getId());
projectMap.put("projectId", project.getProjectId());
projectMap.put("projectName", project.getProjectName());
Account account = accountRepo.findByAccountId(project.getAccountId());
Domain domain = domainRepo.findByDomainId(project.getDomainId());
Account account=accountService.getAccountById(project.getAccountId());
//Domain domain = domainRepo.findByDomainId(project.getDomainId());
Domain domain = domainService.getDomainById(project.getDomainId());
if (domain != null)
projectMap.put("domain", domain.getDomainName());
if (account != null)
......@@ -448,7 +444,9 @@ public class ProjectService implements IProjectService {
@Override
public List<EmployeeDashboardVO> getEmployeesDashBoard() {
List<Employee> allEmployees = employeeRepo.findAll();
//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();
......@@ -512,66 +510,13 @@ public class ProjectService implements IProjectService {
}
@Override
public HashMap<String,Object> addProjectTeamMateWithCheck(Resource resource, String loginEmpId) throws MyTeamException {
boolean flag = false;
String projectName = null;
String fromDate = null;
String toDate = null;
String result = null;
HashMap<String, Object> responseMap = new HashMap<>();
Resource resourcePersisted = null;
List<Resource> teamMateList = resourceRepo.findByEmployeeId(resource.getEmployeeId()).stream()
.filter(e -> !("Nisum0000".equalsIgnoreCase(e.getProjectId())))
.sorted(Comparator.comparing(Resource::getEndDate).reversed())
.collect(Collectors.toList());
// Checking, if resource has existing project assignment.
for (Resource projectMate : teamMateList) {
if (projectMate.getEndDate() != null && (projectMate.getEndDate().compareTo(new Date()) > 0)) {
flag = true;
projectName = projectMate.getProjectName();
fromDate = projectMate.getStartDate().toString();
toDate = projectMate.getEndDate().toString();
break;
}
}
if (flag) {// If yes, error thrown to user.
result = "Resource " + resource.getEmployeeId() + " already Assigned to the " + projectName
+ " Project" + " from " + fromDate + "to " + toDate;
} else {// If no, validating new project assignment start date against previous project end date.
result = validateNewProjectAssignmentStartDate(teamMateList, resource);
if (result == null) {
resourcePersisted = resourceService.addResource(resource, loginEmpId);
result = "TeamMate added successfuly";
}
}
responseMap.put("message", result);
responseMap.put("resourceObj", resourcePersisted);
return responseMap;
}
private String validateNewProjectAssignmentStartDate(List<Resource> teamMateList, Resource projectTeamMate) {
String response = null;
if (teamMateList != null && teamMateList.size() > 0) {
Resource 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(Resource projectTeamMate) {
String response = null;
Date empDoj = employeeRepo.findByEmployeeId(projectTeamMate.getEmployeeId()).getDateOfJoining();
//Date empDoj = employeeRepo.findByEmployeeId(projectTeamMate.getEmployeeId()).getDateOfJoining();
Date empDoj = employeeService.getEmployeeById(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 + ").";
......@@ -596,8 +541,10 @@ public class ProjectService implements IProjectService {
project = projectRepo.findByProjectId(resource.getProjectId());
account = accountRepo.findByAccountId(resource.getAccountId());
domain = domainRepo.findByDomainId(resource.getDomainId());
//account = accountRepo.findByAccountId(resource.getAccountId());
account = accountService.getAccountById(resource.getAccountId());
//domain = domainRepo.findByDomainId(resource.getDomainId());
domain = domainService.getDomainById(resource.getDomainId());
projectMap.put("id", project.getId());
projectMap.put("projectId", project.getProjectId());
......@@ -663,8 +610,10 @@ public class ProjectService implements IProjectService {
for(Project obj : prjts) {
projectMap = new HashMap<>();
account = accountRepo.findByAccountId(obj.getAccountId());
domain = domainRepo.findByDomainId(obj.getDomainId());
//account = accountRepo.findByAccountId(obj.getAccountId());
account = accountService.getAccountById(obj.getAccountId());
//domain = domainRepo.findByDomainId(obj.getDomainId());
domain = domainService.getDomainById(obj.getDomainId());
projectMap.put("projectId", obj.getProjectId());
projectMap.put("projectName",obj.getProjectName());
......@@ -755,4 +704,13 @@ public class ProjectService implements IProjectService {
}
public Project getProjectByProjectId(String projectId) {
Project project = null;
if (StringUtils.isNotBlank(projectId)) {
project = projectRepo.findByProjectId(projectId);
}
return project;
}
}
package com.nisum.myteam.service.impl;
import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.model.dao.Project;
import com.nisum.myteam.model.dao.Resource;
import com.nisum.myteam.model.dao.ResourceAllocation;
import com.nisum.myteam.repository.ResourceAllocationRepo;
import com.nisum.myteam.service.IProjectService;
import com.nisum.myteam.service.IResourceAllocationService;
import com.nisum.myteam.utils.MyTeamUtils;
import lombok.extern.slf4j.Slf4j;
import org.bson.types.ObjectId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@Service
@Slf4j
public class ResourceAllocationService implements IResourceAllocationService {
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
private ResourceAllocationRepo resourceAllocationRepo;
@Autowired
private IProjectService projectService;
public ResourceAllocation addResourceAllocation(ResourceAllocation resourceAllocation, String loginEmpId) throws MyTeamException {
return resourceAllocationRepo.save(resourceAllocation);
}
public HashMap<String, Object> updateResource(ResourceAllocation resourceAllocReq, String loginEmpId) throws MyTeamException {
HashMap<String, Object> respMap = new HashMap<>();
Project project = projectService.getProjectByProjectId(resourceAllocReq.getProjectId());
if (resourceAllocReq.getBillingEndDate().compareTo(new Date()) > 0) {
}
ResourceAllocation resourceAllocationPers = resourceAllocationRepo.save(resourceAllocReq);
respMap.put("message", "Resource updated successfully");
respMap.put("resourceObj", resourceAllocationPers);
return respMap;
}
public Resource deleteResource(String empId, String projectId, ObjectId id, String loginEmpId) {
return null;
}
public List<ResourceAllocation> getResourcesSortByProjectStartDate(String employeeId) {
Query query = prepareQuery(employeeId, MyTeamUtils.PROJECT_START_DATE);
return mongoTemplate.find(query, ResourceAllocation.class);
}
private Query prepareQuery(String employeeId, String dateColumn) {
Query query = new Query();
query.addCriteria(Criteria.where(MyTeamUtils.EMPLOYEE_ID).is(employeeId));
query.limit(MyTeamUtils.ONE);
query.with(new Sort(Sort.Direction.DESC, dateColumn));
return query;
}
}
package com.nisum.myteam.service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
......@@ -624,4 +619,66 @@ public class ResourceService implements IResourceService {
return resourcesList;
}
@Override
public HashMap<String,Object> verifyResourceAssignedToAnyProject(Resource resourceReq, String loginEmpId) throws MyTeamException {
boolean flag = false;
String projectName = null;
String fromDate = null;
String toDate = null;
String result = null;
HashMap<String, Object> responseMap = new HashMap<>();
Resource resourcePersisted = null;
List<Resource> resourceList = resourceRepo.findByEmployeeId(resourceReq.getEmployeeId()).stream()
.filter(e -> !("Nisum0000".equalsIgnoreCase(e.getProjectId())))
.sorted(Comparator.comparing(Resource::getEndDate).reversed())
.collect(Collectors.toList());
// Checking, if resource has existing project assignment.
for (Resource resource : resourceList) {
log.info("Resource::" + resource);
if (resource.getEndDate() != null && (resource.getEndDate().compareTo(new Date()) > 0)) {
flag = true;
projectName = resource.getProjectName();
fromDate = resource.getStartDate().toString();
toDate = resource.getEndDate().toString();
break;
}
}
if (flag) {// If yes, error thrown to user.
result = "Resource " + resourceReq.getEmployeeId() + " already Assigned to the " + projectName
+ " Project" + " from " + fromDate + "to " + toDate;
} else {// If no, validating new project assignment start date against previous project end date.
result = validateNewProjectAssignmentStartDate(resourceList, resourceReq);
if (result == null) {
resourcePersisted = this.addResource(resourceReq, loginEmpId);
result = "TeamMate added successfuly";
}
}
responseMap.put("message", result);
responseMap.put("resourceObj", resourcePersisted);
return responseMap;
}
private String validateNewProjectAssignmentStartDate(List<Resource> teamMateList, Resource projectTeamMate) {
String response = null;
if (teamMateList != null && teamMateList.size() > 0) {
Resource 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;
}
}
......@@ -2,8 +2,11 @@ package com.nisum.myteam.statuscodes;
public enum DomainStatus {
CREATE(600, "Account has been created"),
UPDATE(601, "Account has been updated");
CREATE(610, "Domain has been created"),
UPDATE(611, "Domain has been updated"),
ALREADY_EXISTED(612,"Domain is already existed"),
IS_NOT_FOUND(613,"Domain is Not found"),
GET_DOMIAINS(614,"Retrieved the domains successfully");
private int code;
private String message;
......
package com.nisum.myteam.statuscodes;
public class ProjectStatus {
public enum ProjectStatus {
CREATE(700, "Project has been created"),
UPDATE(701, "Project has been updated"),
DELETE(702, "Project has been deleted successfully"),
ALREADY_EXISTED(703, "Project is already existed"),
PROJECTID_IS_NOT_EXISTS(704,"Project Id is not existed"),
PROJECT_NAME_IS_NOT_EXISTS(705,"Project is not existed"),
IS_NOT_FOUND(706, "Domain is Not found"),
GET_DOMIAINS(707, "Retrieved the domains successfully");
private int code;
private String message;
private ProjectStatus(int code, String message) {
this.code = code;
this.message = message;
}
public int getCode() {
return this.code;
}
public String getMessage() {
return this.message;
}
}
......@@ -151,4 +151,12 @@ public class MyTeamUtils {
public final static String CREATE ="CREATE";
public final static String UPDATE ="UPDATE";
public final static String PROJECT_START_DATE="ProjectStartDate";
public final static String PROJECT_END_DATE="ProjectEndDate";
public final static String BILLING_START_DATE="BillingStartDate";
public final static String BILLING_END_DATE="BillingEndDate";
}
package com.nisum.myteam.utils.constants;
public enum ApplicationRole {
FUNCTIONAL_MANAGER("", "FM"), ADMIN("", "Admin"), DIRECTOR("", "Director"), DELIVERY_MANAGER("DM", "Delivery Manager"), DELIVERY_LEAD("DL", "Delivery Lead"), LEAD("L", "Lead"),
EMPLOYEE("", "Employee"), HR("", "Hr");
private String roleId;
private String roleName;
private ApplicationRole(String roleId, String roleName) {
this.roleId = roleId;
this.roleName = roleName;
}
public String getRoleId() {
return this.roleId;
}
public String getRoleName() {
return this.roleName;
}
}
package com.nisum.myteam.utils.constants;
public enum RoleEnum {
ADMIN("admin"),DIRECTOR("Director"),DELIVERY_MANAGER("Delivery Manager"), DELIVERY_LEAD("Delivery Lead"), LEAD("Lead"),
EMPLOYEE("Employee"),HR("hr");
private String role;
private RoleEnum(String role) {
this.role = role;
}
public String getRole() {
return this.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