Commit 1828c372 authored by Vijay Akula's avatar Vijay Akula

Provided the validation messages for Projects

parent 7a8ddf80
package com.nisum.myteam.configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
\ No newline at end of file
package com.nisum.myteam.controller;
import java.util.HashMap;
import java.util.List;
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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
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.Account;
import com.nisum.myteam.model.Project;
import com.nisum.myteam.repository.AccountRepo;
import com.nisum.myteam.repository.ProjectRepo;
import com.nisum.myteam.service.IEmployeeService;
import com.nisum.myteam.service.IProjectService;
import com.nisum.myteam.utils.MyTeamUtils;
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 javax.validation.Valid;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@RestController
@Slf4j
public class ProjectController {
@Autowired
private IEmployeeService employeeService;
@Autowired
private IProjectService projectService;
@Autowired
private AccountRepo accountRepo;
private IEmployeeService employeeService;
@Autowired
private ProjectRepo projectRepo;
@RequestMapping(value = "/projects", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> createProject(@RequestBody Project projectReq,
@RequestParam(value = "loginEmpId") String loginEmpId) throws MyTeamException {
// checking project duplicateName
int projectNameCount = 0;
if (projectReq.getAccountId() != null) {
public ResponseEntity<?> createProject(@Valid @RequestBody Project projectReq,
@RequestParam(value = "loginEmpId") String loginEmpId, HttpServletRequest request) throws MyTeamException {
List<Project> projects=projectService.getProjectsUnderDomain(projectReq.getDomainId());
if (!projectService.isProjectExists(projectReq.getProjectName())) {
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 {
String accountName = "";
String accountId = projectReq.getAccountId();
// String accountName=projectAdded.getAccount();
Account account = accountRepo.findByAccountId(accountId);
if (account != null)
Account account = projectService.getProjectAccount(projectReq.getAccountId());
if (account != null) {
accountName = account.getAccountName();
int sequenceNumber = account.getAccountProjectSequence();
account.setAccountProjectSequence(sequenceNumber + 1);
// account.setAuditFields(loginEmpId, MyTimeUtils.UPDATE);
accountRepo.save(account);
projectService.updateProjSeqinAccount(account);
String projectId = accountName + String.format("%04d", sequenceNumber + 1);
projectReq.setProjectId(projectId);
Project project = projectService.createProject(projectReq, loginEmpId);
return new ResponseEntity<>(project, HttpStatus.OK);
Project projectPersisted = projectService.createProject(projectReq, loginEmpId);
if (projectPersisted != null) {
ResponseDetails getRespDetails = new ResponseDetails(new Date(), 800,
"Project has been created", "Project description", null,
request.getRequestURI(), "details", projectPersisted);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
}
}
// @RequestMapping(value = "/updateProject"
@RequestMapping(value = "/projects", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> updateProject(@RequestBody Project project,
@RequestParam(value = "loginEmpId") String loginEmpId) throws MyTeamException {
// checking project duplicateName
int projectNameCount = 0;
if (project.getAccountId() != null) {
List<Project> projects = projectRepo.findByDomainId(project.getDomainId());
for (Project existproject : projects) {
if (project.getProjectName().equalsIgnoreCase(existproject.getProjectName())
&& !project.getProjectId().equals(existproject.getProjectId())) {
projectNameCount++;
}
ResponseDetails getRespDetails = new ResponseDetails(new Date(), 801,
"Project is already existed", "Choose the different project name", null,
request.getRequestURI(), "details", projectReq);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
}
// @RequestMapping(value = "/updateProject"
@RequestMapping(value = "/projects/{projectId}", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> updateProject(@Valid @RequestBody Project project, @PathVariable(value = "projectId", required = true) String projectId,
@RequestParam(value = "loginEmpId") String loginEmpId, HttpServletRequest request) throws MyTeamException {
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,
request.getRequestURI(), "Project Updation details", updatedProject);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
}
if (projectNameCount > 0) {
MyTeamException myTimeException = new MyTeamException("Project name already exist !!! try with new");
return new ResponseEntity<>(myTimeException, HttpStatus.OK);
ResponseDetails getRespDetails = new ResponseDetails(new Date(), 801,
"Project is not existed", "Please provide the valid project name", null,
request.getRequestURI(), "details", project);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
}
Project updatedProject = projectService.updateProject(project, loginEmpId);
return new ResponseEntity<>(updatedProject, HttpStatus.OK);
ResponseDetails getRespDetails = new ResponseDetails(new Date(), 801,
"Project Id is not existed", "Please provide the valid project Id", null,
request.getRequestURI(), "details", project);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
}
// @RequestMapping(value = "/deleteProject"
@RequestMapping(value = "/deleteProject", method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> deleteProject(@RequestParam("projectId") String projectId) throws MyTeamException {
@RequestMapping(value = "/projects/{projectId}", method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> deleteProject(@PathVariable("projectId") String projectId, HttpServletRequest request) throws MyTeamException {
if (projectService.isProjectExistsById(projectId)) {
projectService.deleteProject(projectId);
return new ResponseEntity<>("Success", HttpStatus.OK);
ResponseDetails deleteRespDetails = new ResponseDetails(new Date(), 604,
"Project has been deleted successfully", "Project Deletion description", null, request.getRequestURI(), "Project Deletion details",
projectId);
return new ResponseEntity<ResponseDetails>(deleteRespDetails, HttpStatus.OK);
}
// @RequestMapping(value = "/getProjects"
@RequestMapping(value = "/projects", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<HashMap<Object, Object>>> getProjects(
@RequestParam(value = "empId", required = false, defaultValue = MyTeamUtils.ZERO) String empId)
ResponseDetails deleteRespDetails = new ResponseDetails(new Date(), 604,
"Project does not exists", "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<?> getProjects(
@PathVariable(value = "employeeId") String employeeId, HttpServletRequest request)
throws MyTeamException {
List<HashMap<Object, Object>> projects = null;
if (!"undefined".equalsIgnoreCase(empId)) {
boolean isDl = employeeService.verifyEmployeeRole(empId, MyTeamUtils.DL);
if (employeeId != null && !"".equalsIgnoreCase(employeeId) && !"undefined".equalsIgnoreCase(employeeId)) {
boolean isDl = employeeService.verifyEmployeeRole(employeeId, MyTeamUtils.DL);
if (isDl) {
projects = projectService.deliveryLeadProjects(empId);
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);
}
} else {
projects = projectService.getProjects();
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<>(projects, 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);
}
@RequestMapping(value = "/projects/{deliveryLeadId}", method = RequestMethod.GET,
@RequestMapping(value = "/projects/deliveryLeadId/{deliveryLeadId}", method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<Project>> getProjectsUnderDeliveryLead(
@RequestParam("deliveryLeadId") String deliveryLeadId)
public ResponseEntity<?> getProjectsUnderDeliveryLead(
@PathVariable("deliveryLeadId") String deliveryLeadId, HttpServletRequest request)
throws MyTeamException {
List<Project> projects = projectService.getProjectsUnderDeliveryLead(deliveryLeadId);
return new ResponseEntity<>(projects, HttpStatus.OK);
if (deliveryLeadId != null && !"".equalsIgnoreCase(deliveryLeadId)) {
ResponseDetails getRespDetails = new ResponseDetails(new Date(), 604, "Retrieved the projects successfully",
"Projects list under delivery lead", projectService.getProjectsUnderDeliveryLead(deliveryLeadId), request.getRequestURI(), "Project details", null);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
}
ResponseDetails getRespDetails = new ResponseDetails(new Date(), 606, "Please Provide valid Delivery lead id",
"Projects list under delivery lead", null, request.getRequestURI(), "Project details", null);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
}
@RequestMapping(value = "/getMyProjectAllocations", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<HashMap<Object, Object>>> getMyProjectAllocations(
@RequestParam("employeeId") String employeeId) throws MyTeamException {
List<HashMap<Object, Object>> empPrjtsInfo = projectService.getProjectsForEmployee(employeeId);
return new ResponseEntity<>(empPrjtsInfo, HttpStatus.OK);
public ResponseEntity<?> getMyProjectAllocations(
@RequestParam("employeeId") String employeeId, HttpServletRequest request) throws MyTeamException {
if (employeeId != null && !"".equalsIgnoreCase(employeeId)) {
ResponseDetails getRespDetails = new ResponseDetails(new Date(), 604, "Retrieved the project allocations successfully",
"Projects allocations for an employee", projectService.getProjectsForEmployee(employeeId), request.getRequestURI(), "Project details", null);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
}
ResponseDetails getRespDetails = new ResponseDetails(new Date(), 606, "Please Provide valid employee id",
"Project allocations for an employee", null, request.getRequestURI(), "Project details", null);
return new ResponseEntity<ResponseDetails>(getRespDetails, HttpStatus.OK);
}
}
// 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 {
//
// }
......@@ -27,7 +27,7 @@ import com.nisum.myteam.service.IResourceService;
import com.nisum.myteam.utils.MyTeamUtils;
@RestController
@RequestMapping("/projectTeam")
@RequestMapping
public class ResourceController {
@Autowired
......@@ -71,14 +71,11 @@ public class ResourceController {
return new ResponseEntity<>("Success", HttpStatus.OK);
}
// @RequestMapping(value = "/getEmployeeProjectInfo"
@RequestMapping(value = "/resources", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<Resource>> getResourcesSortByStartDate(@RequestParam("empId") String empId)
@RequestMapping(value = "/resources/employeeId/{employeeId}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<Resource>> getResourcesSortByStartDate(@PathVariable(value = "employeeId",required = true) String employeeId)
throws MyTeamException {
List<Resource> projectInfo = resourceService.getResourcesSortByStartDate(empId);
List<Resource> projectInfo = resourceService.getResourcesSortByStartDate(employeeId);
return new ResponseEntity<>(projectInfo, HttpStatus.OK);
}
......@@ -93,7 +90,7 @@ public class ResourceController {
// @RequestMapping(value = "/getShiftDetails"
@RequestMapping(value = "/resources/{shift}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@RequestMapping(value = "/resources/shifts/{shift}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<Resource>> getResourcesForShift(@PathVariable("shift") String shift)
throws MyTeamException {
List<Resource> resourcesList = resourceService.getResourcesForShift(shift);
......@@ -101,7 +98,7 @@ public class ResourceController {
}
// @RequestMapping(value = "/getProjectAllocations"
@RequestMapping(value = "/resources/projects/", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@RequestMapping(value = "/resources/projects", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<Resource>> getResourcesAllocatedForAllProjects() throws MyTeamException {
List<Resource> resourcesList = resourceService.getResourcesForActiveProjects();
return new ResponseEntity<>(resourcesList, HttpStatus.OK);
......@@ -127,7 +124,7 @@ public class ResourceController {
@RequestMapping(value = "/getUnAssignedEmployees", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@RequestMapping(value = "resources/unAssignedEmployees", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<Employee>> getUnAssignedEmployees() throws MyTeamException {
List<Employee> employeesList = projectService.getUnAssignedEmployees();
return new ResponseEntity<>(employeesList, HttpStatus.OK);
......@@ -135,9 +132,6 @@ public class ResourceController {
@RequestMapping(value = "/getEmployeesDashBoard", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<EmployeeDashboardVO>> getEmployeesDashBoard() throws MyTeamException {
List<EmployeeDashboardVO> employeeDashBoardList = projectService.getEmployeesDashBoard();
......
......@@ -30,13 +30,13 @@ public class Project extends AuditFields implements Serializable {
private ObjectId id;
private String projectId;
private String projectName;
private String domainId;
private String domain;
private String accountId;
private String status;
private List<String> employeeIds;
private List<String> managerIds;
private String accountId;
private String domainId;
@DateTimeFormat(iso = ISO.DATE)
private Date projectStartDate;
@DateTimeFormat(iso = ISO.DATE)
......
......@@ -11,6 +11,8 @@ public interface ProjectRepo extends MongoRepository<Project, String> {
Project findByProjectId(String projectId);
Project findByProjectName(String projectName);
List<Project> findByDeliveryLeadIds(String empId);
// List<Project> findByManagerId(String managerId);
......
......@@ -5,11 +5,7 @@ import java.util.List;
import java.util.Set;
import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.model.EmpLoginData;
import com.nisum.myteam.model.Employee;
import com.nisum.myteam.model.EmployeeDashboardVO;
import com.nisum.myteam.model.Project;
import com.nisum.myteam.model.Resource;
import com.nisum.myteam.model.*;
public interface IProjectService {
......@@ -46,4 +42,17 @@ public interface IProjectService {
public List<HashMap<Object, Object>> deliveryLeadProjects(String empId) throws MyTeamException;
public List<Project> getAllProjects();
public boolean isProjectExists(String projectName);
public boolean isProjectExistsById(String projectId);
public long getProjectsCount();
public Account getProjectAccount(String accountId);
public Account updateProjSeqinAccount(Account account) throws MyTeamException;
}
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.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.model.*;
import com.nisum.myteam.repository.*;
import com.nisum.myteam.service.IAccountService;
import com.nisum.myteam.service.IDomainService;
import com.nisum.myteam.service.IEmployeeService;
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.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.FindAndModifyOptions;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
......@@ -20,27 +19,8 @@ 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.exception.handler.MyTeamException;
import com.nisum.myteam.model.Account;
import com.nisum.myteam.model.Billing;
import com.nisum.myteam.model.Domain;
import com.nisum.myteam.model.EmpLoginData;
import com.nisum.myteam.model.Employee;
import com.nisum.myteam.model.EmployeeDashboardVO;
import com.nisum.myteam.model.Project;
import com.nisum.myteam.model.Resource;
import com.nisum.myteam.repository.AccountRepo;
import com.nisum.myteam.repository.DomainRepo;
import com.nisum.myteam.repository.EmployeeRepo;
import com.nisum.myteam.repository.ProjectRepo;
import com.nisum.myteam.repository.ResourceRepo;
import com.nisum.myteam.service.IDomainService;
import com.nisum.myteam.service.IEmployeeService;
import com.nisum.myteam.service.IProjectService;
import com.nisum.myteam.utils.MyTeamUtils;
import com.nisum.myteam.utils.PdfReportGenerator;
import lombok.extern.slf4j.Slf4j;
import java.util.*;
import java.util.stream.Collectors;
@Service("projectService")
@Slf4j
......@@ -52,6 +32,7 @@ public class ProjectService implements IProjectService {
@Autowired
private ProjectRepo projectRepo;
@Autowired
private ResourceRepo resourceRepo;
......@@ -90,6 +71,9 @@ public class ProjectService implements IProjectService {
private IEmployeeService employeeService;
@Autowired
private IAccountService accountService;
@Override
......@@ -98,23 +82,45 @@ public class ProjectService implements IProjectService {
}
public boolean isProjectExists(String projectName) {
boolean isProjectExists = false;
if (projectName != null && !"".equalsIgnoreCase(projectName)) {
Project project = projectRepo.findByProjectName(projectName);
isProjectExists = (project == null) ? false : true;
}
return isProjectExists;
}
public boolean isProjectExistsById(String projectId) {
boolean isProjectExists = false;
if (projectId != null && !"".equalsIgnoreCase(projectId)) {
Project project = projectRepo.findByProjectId(projectId);
isProjectExists = (project == null) ? false : true;
}
return isProjectExists;
}
@Override
public Project createProject(Project project, String loginEmpId) throws MyTeamException {
if (project.getDomainId() == null) {
public long getProjectsCount() {
return projectRepo.count();
// Domain domain = new Domain();
// domain.setAccountId(project.getAccountId());
// domain.setDomainName(project.getDomain());
// domain.setDeliveryManagers(project.getManagerIds());
// domain.setStatus(project.getStatus());
// domainController.createDomain(domain,null);
}
public Account getProjectAccount(String accountId) {
Account account = null;
if (accountId != null && !"".equalsIgnoreCase(accountId)) {
return accountService.getAccountById(accountId);
}
return account;
}
public Account updateProjSeqinAccount(Account account) throws MyTeamException {
return accountService.updateAccount(account);
}
@Override
public Project createProject(Project project, String loginEmpId) throws MyTeamException {
if (project.getDomainId() == null) {
List<Domain> domainsList = domainRepo
.findByAccountId(project.getAccountId());
Domain savedDomain = domainsList.get(0);
......@@ -667,4 +673,6 @@ public class ProjectService implements IProjectService {
}
return projectsList;
}
}
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