Commit a108af67 authored by Vijay Akula's avatar Vijay Akula

Resolved the dashboard page

parent 465732ba
package com.nisum.myteam.controller; package com.nisum.myteam.controller;
import static org.springframework.data.mongodb.core.aggregation.Aggregation.group; import com.nisum.myteam.exception.handler.MyTeamException;
import static org.springframework.data.mongodb.core.aggregation.Aggregation.newAggregation; import com.nisum.myteam.model.ColumnChartData;
import static org.springframework.data.mongodb.core.aggregation.Aggregation.project; import com.nisum.myteam.model.GroupByCount;
import static org.springframework.data.mongodb.core.aggregation.Aggregation.sort; import com.nisum.myteam.model.ReportSeriesRecord;
import com.nisum.myteam.model.dao.Account;
import java.text.ParseException; import com.nisum.myteam.model.dao.Employee;
import java.text.SimpleDateFormat; import com.nisum.myteam.model.dao.ResourceAllocation;
import java.util.ArrayList; import com.nisum.myteam.service.IEmployeeService;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
...@@ -31,33 +25,26 @@ import org.springframework.web.bind.annotation.RequestMethod; ...@@ -31,33 +25,26 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.nisum.myteam.exception.handler.MyTeamException; import java.text.ParseException;
import com.nisum.myteam.model.dao.Account; import java.text.SimpleDateFormat;
import com.nisum.myteam.model.dao.Billing; import java.util.*;
import com.nisum.myteam.model.ColumnChartData;
import com.nisum.myteam.model.dao.Employee; import static org.springframework.data.mongodb.core.aggregation.Aggregation.*;
import com.nisum.myteam.model.GroupByCount;
import com.nisum.myteam.model.ReportSeriesRecord; //import com.nisum.myteam.model.dao.Resource;
import com.nisum.myteam.model.dao.Resource;
import com.nisum.myteam.service.IEmployeeService;
import com.nisum.myteam.service.IResourceService;
@RestController @RestController
@RequestMapping("/reports") @RequestMapping("/reports")
public class ReportsController { public class ReportsController {
@Autowired @Autowired
private MongoTemplate mongoTemplate; private MongoTemplate mongoTemplate;
@Autowired
private IResourceService resourceService;
@Autowired @Autowired
private IEmployeeService employeeService; private IEmployeeService employeeService;
//Ok Response
@RequestMapping(value = "/getEmployeesByFunctionalGroup1", @RequestMapping(value = "/getEmployeesByFunctionalGroup1",
method = RequestMethod.GET, method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE) produces = MediaType.APPLICATION_JSON_VALUE)
...@@ -85,6 +72,8 @@ public class ReportsController { ...@@ -85,6 +72,8 @@ public class ReportsController {
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
//Ok Response
@RequestMapping(value = "/getEmployeesByFunctionalGroupForReport", @RequestMapping(value = "/getEmployeesByFunctionalGroupForReport",
method = RequestMethod.GET, method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE) produces = MediaType.APPLICATION_JSON_VALUE)
...@@ -115,6 +104,8 @@ public class ReportsController { ...@@ -115,6 +104,8 @@ public class ReportsController {
return new ResponseEntity<>(reportData, HttpStatus.OK); return new ResponseEntity<>(reportData, HttpStatus.OK);
} }
//Not Ok Response
@RequestMapping(value = "/getBillabilityDetailsByAccount", @RequestMapping(value = "/getBillabilityDetailsByAccount",
method = RequestMethod.GET, method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE) produces = MediaType.APPLICATION_JSON_VALUE)
...@@ -133,7 +124,7 @@ public class ReportsController { ...@@ -133,7 +124,7 @@ public class ReportsController {
// Convert the aggregation result into a List // Convert the aggregation result into a List
AggregationResults<ColumnChartData> groupResults = mongoTemplate AggregationResults<ColumnChartData> groupResults = mongoTemplate
.aggregate(aggregate, Billing.class, .aggregate(aggregate, ResourceAllocation.class,
ColumnChartData.class); ColumnChartData.class);
List<ColumnChartData> result = groupResults.getMappedResults(); List<ColumnChartData> result = groupResults.getMappedResults();
List<String> statusList = new ArrayList(); List<String> statusList = new ArrayList();
...@@ -155,11 +146,11 @@ public class ReportsController { ...@@ -155,11 +146,11 @@ public class ReportsController {
for (ColumnChartData columnChartData : result) { for (ColumnChartData columnChartData : result) {
if (columnChartData.getCategories() != null if (columnChartData.getCategories() != null
&& columnChartData.getSeriesName() != null && columnChartData.getSeriesName() != null
& columnChartData.getCategories() & columnChartData.getCategories()
.equalsIgnoreCase( .equalsIgnoreCase(
acct.getAccountName()) acct.getAccountName())
&& columnChartData.getSeriesName() && columnChartData.getSeriesName()
.equalsIgnoreCase(status)) { .equalsIgnoreCase(status)) {
seriesDataExists = true; seriesDataExists = true;
seriesData[i] = columnChartData.getCount(); seriesData[i] = columnChartData.getCount();
} }
...@@ -181,6 +172,8 @@ public class ReportsController { ...@@ -181,6 +172,8 @@ public class ReportsController {
return new ResponseEntity<>(reportData, HttpStatus.OK); return new ResponseEntity<>(reportData, HttpStatus.OK);
} }
//ok response
@RequestMapping(value = "/getBillabilityDetailsByMonth", @RequestMapping(value = "/getBillabilityDetailsByMonth",
method = RequestMethod.GET, method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE) produces = MediaType.APPLICATION_JSON_VALUE)
...@@ -244,11 +237,10 @@ public class ReportsController { ...@@ -244,11 +237,10 @@ public class ReportsController {
// Convert the aggregation result into a List // Convert the aggregation result into a List
AggregationResults<ColumnChartData> groupResults1 = mongoTemplate AggregationResults<ColumnChartData> groupResults1 = mongoTemplate
.aggregate(agg1, Billing.class, .aggregate(agg1, ResourceAllocation.class,
ColumnChartData.class); ColumnChartData.class);
List<ColumnChartData> result1 = groupResults1.getMappedResults(); List<ColumnChartData> result1 = groupResults1.getMappedResults();
// List<ColumnChartData> result2 = groupResults.getMappedResults();
List<String> statusList = new ArrayList(); List<String> statusList = new ArrayList();
statusList.add("Billable"); statusList.add("Billable");
statusList.add("Shadow"); statusList.add("Shadow");
...@@ -259,7 +251,7 @@ public class ReportsController { ...@@ -259,7 +251,7 @@ public class ReportsController {
for (ColumnChartData columnChartData : result1) { for (ColumnChartData columnChartData : result1) {
if (columnChartData.getBillableStatus() != null if (columnChartData.getBillableStatus() != null
&& columnChartData.getBillableStatus() && columnChartData.getBillableStatus()
.equalsIgnoreCase(status)) { .equalsIgnoreCase(status)) {
ReportSeriesRecord record = (ReportSeriesRecord) m ReportSeriesRecord record = (ReportSeriesRecord) m
.get(status); .get(status);
record.getData()[i] = columnChartData.getCount(); record.getData()[i] = columnChartData.getCount();
...@@ -276,6 +268,7 @@ public class ReportsController { ...@@ -276,6 +268,7 @@ public class ReportsController {
return new ResponseEntity<>(reportData, HttpStatus.OK); return new ResponseEntity<>(reportData, HttpStatus.OK);
} }
//ok response
@RequestMapping(value = "/getEmployeesByFunctionalGroup", @RequestMapping(value = "/getEmployeesByFunctionalGroup",
method = RequestMethod.GET, method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE) produces = MediaType.APPLICATION_JSON_VALUE)
...@@ -319,29 +312,29 @@ public class ReportsController { ...@@ -319,29 +312,29 @@ public class ReportsController {
return new ResponseEntity<>(empList, HttpStatus.OK); return new ResponseEntity<>(empList, HttpStatus.OK);
} }
@RequestMapping(value = "/fetchEmployeeDetailsByAccountBillability", // @RequestMapping(value = "/fetchEmployeeDetailsByAccountBillability",
method = RequestMethod.GET, // method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE) // produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<Resource>> fetchEmployeeDetailsByAccountBillability( // public ResponseEntity<List<ResourceAllocation>> fetchEmployeeDetailsByAccountBillability(
@RequestParam("account") String account, // @RequestParam("account") String account,
@RequestParam("billabilityStatus") String billabilityStatus) // @RequestParam("billabilityStatus") String billabilityStatus)
throws MyTeamException { // throws MyTeamException {
List<Resource> empList = new ArrayList<>(); // List<ResourceAllocation> resourcesList = new ArrayList<>();
if (account != null && !account.isEmpty()) { // if (account != null && !account.isEmpty()) {
empList = resourceService.findByAccountAndActiveAndBillableStatus( // resourcesList = resourceService.findByAccountAndActiveAndBillableStatus(
account, true, billabilityStatus); // account, true, billabilityStatus);
} // }
return new ResponseEntity<>(empList, HttpStatus.OK); // return new ResponseEntity<>(resourcesList, HttpStatus.OK);
} // }
@RequestMapping(value = "/fetchEmployeeDetailsByDateBillability", @RequestMapping(value = "/fetchEmployeeDetailsByDateBillability",
method = RequestMethod.GET, method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE) produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<Billing>> fetchEmployeeDetailsByDateBillability( public ResponseEntity<List<ResourceAllocation>> fetchEmployeeDetailsByDateBillability(
@RequestParam("billabilityStatus") String billabilityStatus, @RequestParam("billabilityStatus") String billabilityStatus,
@RequestParam("reportDate") String reportDateString) @RequestParam("reportDate") String reportDateString)
throws MyTeamException { throws MyTeamException {
List<Billing> empList = new ArrayList<>(); List<ResourceAllocation> empList = new ArrayList<>();
if (reportDateString != null && !reportDateString.isEmpty()) { if (reportDateString != null && !reportDateString.isEmpty()) {
String pattern = "MM-dd-yyyy"; String pattern = "MM-dd-yyyy";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
...@@ -364,7 +357,7 @@ public class ReportsController { ...@@ -364,7 +357,7 @@ public class ReportsController {
criteriaV1.orOperator(criteriaV21, criteriaV22)); criteriaV1.orOperator(criteriaV21, criteriaV22));
Query query = new Query(); Query query = new Query();
query.addCriteria(criteriaV221); query.addCriteria(criteriaV221);
empList = mongoTemplate.find(query, Billing.class); empList = mongoTemplate.find(query, ResourceAllocation.class);
} }
return new ResponseEntity<>(empList, HttpStatus.OK); return new ResponseEntity<>(empList, HttpStatus.OK);
} }
......
...@@ -236,9 +236,9 @@ public class ResourceAllocationController { ...@@ -236,9 +236,9 @@ public class ResourceAllocationController {
//@RequestMapping(value = "/getEmployeeBillingDetailsAll" //@RequestMapping(value = "/getEmployeeBillingDetailsAll"
@RequestMapping(value = "/resources/billing", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) @RequestMapping(value = "/resources/billing", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<ResourceAllocation>> getAllBillingsForEmployee(@RequestParam("employeeId") String employeeId) public ResponseEntity<List<ResourceVO>> getAllBillingsForEmployee(@RequestParam("employeeId") String employeeId)
throws MyTeamException { throws MyTeamException {
List<ResourceAllocation> resourceAllocList = resourceAllocService.getBillingsForEmployee(employeeId); List<ResourceVO> resourceAllocList = resourceAllocService.getBillingsForEmployee(employeeId);
return new ResponseEntity<>(resourceAllocList, HttpStatus.OK); return new ResponseEntity<>(resourceAllocList, HttpStatus.OK);
} }
......
...@@ -30,7 +30,7 @@ public class EmployeeDashboardVO { ...@@ -30,7 +30,7 @@ public class EmployeeDashboardVO {
private String shift; private String shift;
private String projectId; private String projectId;
private String projectName; private String projectName;
private String account; private String accountName;
private String managerId; private String managerId;
private String managerName; private String managerName;
private String experience; private String experience;
...@@ -42,10 +42,19 @@ public class EmployeeDashboardVO { ...@@ -42,10 +42,19 @@ public class EmployeeDashboardVO {
private String empSubStatus; private String empSubStatus;
private String employmentType; private String employmentType;
private String domain; private String domain;
@DateTimeFormat(iso = ISO.DATE)
private Date projectStartDate;
@DateTimeFormat(iso = ISO.DATE) @DateTimeFormat(iso = ISO.DATE)
private Date startDate; private Date projectEndDate;
@DateTimeFormat(iso = ISO.DATE) @DateTimeFormat(iso = ISO.DATE)
private Date endDate; private Date billingStartDate;
@DateTimeFormat(iso = ISO.DATE)
private Date billingEndDate;
private boolean active; private boolean active;
private boolean projectAssigned; private boolean projectAssigned;
private boolean hasB1Visa; private boolean hasB1Visa;
......
...@@ -31,4 +31,13 @@ public class MyProjectAllocationVO { ...@@ -31,4 +31,13 @@ public class MyProjectAllocationVO {
private List<HashMap<String, String>> deliveryLeadIds; private List<HashMap<String, String>> deliveryLeadIds;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
private Date projectStartDate;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
private Date projectEndDate;
private String projectStatus;
} }
...@@ -37,4 +37,16 @@ public class ResourceVO { ...@@ -37,4 +37,16 @@ public class ResourceVO {
private String resourceRole; private String resourceRole;
private String mobileNo; private String mobileNo;
private String accountName;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX")
private Date projectStartDate;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX")
private Date projectEndDate;
private String projectStatus;
} }
...@@ -26,6 +26,8 @@ public interface EmployeeRepo ...@@ -26,6 +26,8 @@ public interface EmployeeRepo
List<Employee> findByEmployeeIdIn(Set<String> empIdsSet); List<Employee> findByEmployeeIdIn(Set<String> empIdsSet);
List<Employee> findByEmpSubStatusOrderByEmployeeNameAsc(String subStatus); List<Employee> findByEmpSubStatusOrderByEmployeeNameAsc(String subStatus);
List<Employee> findByEmpStatusAndShiftLikeOrderByEmployeeIdDesc(String status,String shift);
} }
...@@ -50,4 +50,6 @@ public interface IEmployeeService { ...@@ -50,4 +50,6 @@ public interface IEmployeeService {
public List<Employee> getAllEmployees(); public List<Employee> getAllEmployees();
public List<Employee> getEmployeesByEmpStatusAndShift(String empStatus, String shift);
} }
...@@ -2,13 +2,12 @@ package com.nisum.myteam.service; ...@@ -2,13 +2,12 @@ package com.nisum.myteam.service;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.nisum.myteam.model.dao.Resource;
@Service @Service
public interface IEmployeeShiftService { public interface IEmployeeShiftService {
public void addEmployeeShift(Resource resource, String loginEmpId); //public void addEmployeeShift(Resource resource, String loginEmpId);
void updateEmployeeShift(Resource existingTeammate, String loginEmpId); //void updateEmployeeShift(Resource existingTeammate, String loginEmpId);
} }
package com.nisum.myteam.service; package com.nisum.myteam.service;
import com.nisum.myteam.exception.handler.MyTeamException; import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.model.dao.*; import com.nisum.myteam.model.dao.Account;
import com.nisum.myteam.model.dao.EmpLoginData;
import com.nisum.myteam.model.dao.Project;
import com.nisum.myteam.model.dao.ResourceAllocation;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -33,15 +36,12 @@ public interface IProjectService { ...@@ -33,15 +36,12 @@ public interface IProjectService {
List<Project> getProjectsUnderDeliveryLead(String managerId) throws MyTeamException; List<Project> getProjectsUnderDeliveryLead(String managerId) throws MyTeamException;
public Resource addNewBeanchAllocation(Employee employee, String loginEmpId); // public Resource addNewBeanchAllocation(Employee employee, String loginEmpId);
List<EmpLoginData> employeeLoginsBasedOnDate(long id, String fromDate, String toDate) throws MyTeamException; List<EmpLoginData> employeeLoginsBasedOnDate(long id, String fromDate, String toDate) throws MyTeamException;
String generatePdfReport(long id, String fromDate, String toDate) throws MyTeamException; String generatePdfReport(long id, String fromDate, String toDate) throws MyTeamException;
//public List<HashMap<Object, Object>> getProjectsForEmployee(String empId);
public Set<String> accountsAssignedToDl(String empId); public Set<String> accountsAssignedToDl(String empId);
public List<HashMap<Object, Object>> deliveryLeadProjects(String empId) throws MyTeamException; public List<HashMap<Object, Object>> deliveryLeadProjects(String empId) throws MyTeamException;
...@@ -58,7 +58,7 @@ public interface IProjectService { ...@@ -58,7 +58,7 @@ public interface IProjectService {
public List<Project> getProjectsForDeliveryLead(String deliveryLeadId); public List<Project> getProjectsForDeliveryLead(String deliveryLeadId);
List<Resource> getResourcesUnderProject(String empId); List<ResourceAllocation> getResourcesUnderProject(String empId);
} }
...@@ -5,9 +5,7 @@ import com.nisum.myteam.model.dao.Employee; ...@@ -5,9 +5,7 @@ import com.nisum.myteam.model.dao.Employee;
import com.nisum.myteam.model.dao.ResourceAllocation; import com.nisum.myteam.model.dao.ResourceAllocation;
import com.nisum.myteam.model.vo.MyProjectAllocationVO; import com.nisum.myteam.model.vo.MyProjectAllocationVO;
import com.nisum.myteam.model.vo.ResourceVO; import com.nisum.myteam.model.vo.ResourceVO;
import org.bson.types.ObjectId;
import java.util.HashMap;
import java.util.List; import java.util.List;
public interface IResourceAllocationService { public interface IResourceAllocationService {
...@@ -39,7 +37,6 @@ public interface IResourceAllocationService { ...@@ -39,7 +37,6 @@ public interface IResourceAllocationService {
List<ResourceVO> getActiveResources(String empId); List<ResourceVO> getActiveResources(String empId);
// List<Resource> getResourcesForShift(String shift); // List<Resource> getResourcesForShift(String shift);
public List<ResourceVO> getResourcesForProject(String projectId, String statusFlag); public List<ResourceVO> getResourcesForProject(String projectId, String statusFlag);
...@@ -47,13 +44,12 @@ public interface IResourceAllocationService { ...@@ -47,13 +44,12 @@ public interface IResourceAllocationService {
public List<ResourceAllocation> getResourcesUnderDeliveryLead(String empId); public List<ResourceAllocation> getResourcesUnderDeliveryLead(String empId);
public List<ResourceAllocation> getBillingsForEmployee(String empId); public List<ResourceVO> getBillingsForEmployee(String empId);
public List<ResourceAllocation> getBillingsForProject(String empId, String projectId); public List<ResourceAllocation> getBillingsForProject(String empId, String projectId);
public List<MyProjectAllocationVO> getWorkedProjectsForResource(String empId); public List<MyProjectAllocationVO> getWorkedProjectsForResource(String empId);
...@@ -61,6 +57,8 @@ public interface IResourceAllocationService { ...@@ -61,6 +57,8 @@ public interface IResourceAllocationService {
public List<ResourceAllocation> getAllResources(); public List<ResourceAllocation> getAllResources();
public List<ResourceVO> getAllResourcesVO();
public void deleteResourcesUnderProject(String projectId); public void deleteResourcesUnderProject(String projectId);
......
...@@ -12,37 +12,37 @@ import java.util.List; ...@@ -12,37 +12,37 @@ import java.util.List;
@Service @Service
public interface IResourceService { 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; // String updateResource(Resource projectTeamMate, String loginEmpId) throws MyTeamException;
//
Resource deleteResource(String empId, String projectId, ObjectId id, String loginEmpId); // Resource deleteResource(String empId, String projectId, ObjectId id, String loginEmpId);
//
Resource save(Resource resource); // Resource save(Resource resource);
//
void addResources(Employee employee, String loginEmpId); // void addResources(Employee employee, String loginEmpId);
//
void inactivateResource(Employee employeeReq, Employee employeeUpdated, String loginEmpId); // void inactivateResource(Employee employeeReq, Employee employeeUpdated, String loginEmpId);
//
List<Resource> findByAccountAndActiveAndBillableStatus(String account, boolean status, String billableStatus); // List<Resource> findByAccountAndActiveAndBillableStatus(String account, boolean status, String billableStatus);
//
List<Resource> getResourcesSortByStartDate(String employeeId); // List<Resource> getResourcesSortByStartDate(String employeeId);
//
List<Resource> getResourcesForProject(String projectId, String status); // List<Resource> getResourcesForProject(String projectId, String status);
//
List<Resource> getResourcesForEmployee(String empId); // List<Resource> getResourcesForEmployee(String empId);
//
List<Resource> getResourcesForProject(String projectId); // List<Resource> getResourcesForProject(String projectId);
//
List<Resource> getActiveResources(String empId); // List<Resource> getActiveResources(String empId);
//
List<Resource> getResourcesForActiveProjects(); // List<Resource> getResourcesForActiveProjects();
//
List<Resource> getResourcesForShift(String shift); // List<Resource> getResourcesForShift(String shift);
//
public List<Resource> getResourcesUnderDeliveryLead(String empId); // public List<Resource> getResourcesUnderDeliveryLead(String empId);
//
public HashMap<String, Object> verifyResourceAssignedToAnyProject(Resource projectTeamMate, String loginEmpId) throws MyTeamException; // public HashMap<String, Object> verifyResourceAssignedToAnyProject(Resource projectTeamMate, String loginEmpId) throws MyTeamException;
} }
package com.nisum.myteam.service.impl; package com.nisum.myteam.service.impl;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.nisum.myteam.configuration.DbConnection; import com.nisum.myteam.configuration.DbConnection;
import com.nisum.myteam.exception.handler.MyTeamException; import com.nisum.myteam.exception.handler.MyTeamException;
import com.nisum.myteam.model.AttendenceData; import com.nisum.myteam.model.AttendenceData;
import com.nisum.myteam.model.dao.EmpLoginData; import com.nisum.myteam.model.dao.EmpLoginData;
import com.nisum.myteam.model.dao.Resource; import com.nisum.myteam.model.dao.Employee;
import com.nisum.myteam.repository.ResourceRepo; import com.nisum.myteam.repository.ResourceRepo;
import com.nisum.myteam.service.IAttendanceService; import com.nisum.myteam.service.IAttendanceService;
import com.nisum.myteam.service.IEmployeeService;
import com.nisum.myteam.utils.CommomUtil; import com.nisum.myteam.utils.CommomUtil;
import com.nisum.myteam.utils.MyTeamLogger; import com.nisum.myteam.utils.MyTeamLogger;
import com.nisum.myteam.utils.MyTeamUtils; import com.nisum.myteam.utils.MyTeamUtils;
import com.nisum.myteam.utils.PdfReportGenerator; import com.nisum.myteam.utils.PdfReportGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Service @Service
public class AttendanceService implements IAttendanceService { public class AttendanceService implements IAttendanceService {
@Autowired @Autowired
private EmployeeDataService employeeDataBaseService; private EmployeeDataService employeeDataBaseService;
@Autowired @Autowired
DbConnection dbConnection; DbConnection dbConnection;
@Autowired @Autowired
ResourceRepo projectTeamMatesRepo; ResourceRepo projectTeamMatesRepo;
@Autowired @Autowired
private PdfReportGenerator pdfReportGenerator; private PdfReportGenerator pdfReportGenerator;
@Override @Autowired
public List<AttendenceData> getAttendanciesReport(String reportDate, String shift) throws MyTeamException { private IEmployeeService employeeService;
long start_ms = System.currentTimeMillis();
String reportDateInReqDateFormat = reportDate.replace("-", "/"); @Override
List<AttendenceData> listOfEmployees = getEmpsAttendenceByShiftWise(reportDateInReqDateFormat, shift); public List<AttendenceData> getAttendanciesReport(String reportDate, String shift) throws MyTeamException {
MyTeamLogger.getInstance().info("Time Taken for " + (System.currentTimeMillis() - start_ms)); long start_ms = System.currentTimeMillis();
return listOfEmployees; String reportDateInReqDateFormat = reportDate.replace("-", "/");
} List<AttendenceData> listOfEmployees = getEmpsAttendenceByShiftWise(reportDateInReqDateFormat, shift);
MyTeamLogger.getInstance().info("Time Taken for " + (System.currentTimeMillis() - start_ms));
@Override return listOfEmployees;
public List<EmpLoginData> employeeLoginReportBasedOnDateTime(long id, String fromDate, String toDate,String fromTime,String toTime) throws MyTeamException, ParseException { }
String timeFrom= CommomUtil.convertTimeFormat(fromTime);
String timeTo= CommomUtil.convertTimeFormat(toTime); @Override
String nextDayDate = CommomUtil.getNextDay(fromDate,fromTime,toTime); public List<EmpLoginData> employeeLoginReportBasedOnDateTime(long id, String fromDate, String toDate, String fromTime, String toTime) throws MyTeamException, ParseException {
String timeFrom = CommomUtil.convertTimeFormat(fromTime);
String timeTo = CommomUtil.convertTimeFormat(toTime);
String nextDayDate = CommomUtil.getNextDay(fromDate, fromTime, toTime);
return employeeDataBaseService.fetchEmployeeLoginsBasedOnDatesTime(id, fromDate, nextDayDate, toDate, timeFrom, timeTo); return employeeDataBaseService.fetchEmployeeLoginsBasedOnDatesTime(id, fromDate, nextDayDate, toDate, timeFrom, timeTo);
} }
@Override @Override
public List generatePdfReport(long id, String fromDate, String toDate, String fromTime, String toTime) public List generatePdfReport(long id, String fromDate, String toDate, String fromTime, String toTime)
throws MyTeamException { throws MyTeamException {
return pdfReportGenerator.generateEmployeeReport(id, fromDate, toDate); return pdfReportGenerator.generateEmployeeReport(id, fromDate, toDate);
} }
private List<AttendenceData> getEmpsAttendenceByShiftWise(String reportDate, String shift) throws MyTeamException {
List<AttendenceData> listOfEmployees = new ArrayList<AttendenceData>();
private List<AttendenceData> getEmpsAttendenceByShiftWise(String reportDate, String shift) throws MyTeamException { List<Employee> list = findEmpIdsByShiftWise(shift);
List<AttendenceData> listOfEmployees = new ArrayList<AttendenceData>(); if (list.size() > 0) {
Optional<List<Resource>> list = findEmpIdsByShiftWise(shift); List<String> empIdList = list.stream().map(Employee::getEmployeeId).collect(Collectors.toList());
if(list.isPresent()) { if (null != empIdList && empIdList.size() > MyTeamUtils.INT_ZERO) {
List<String> empIdList = list.get().stream().map(Resource::getEmployeeId).collect(Collectors.toList()); String query = buildSqlQuery(reportDate, empIdList.toString().substring(1, empIdList.toString().length() - 1), MyTeamUtils.PRESENT);
if(null != empIdList && empIdList.size() > MyTeamUtils.INT_ZERO) { listOfEmployees.addAll(getAttendenceData(query, MyTeamUtils.PRESENT));
String query = buildSqlQuery(reportDate,empIdList.toString().substring(1, empIdList.toString().length()-1), MyTeamUtils.PRESENT);
listOfEmployees.addAll(getAttendenceData(query, MyTeamUtils.PRESENT)); List<String> presentList = listOfEmployees.stream().map(AttendenceData::getEmployeeId).collect(Collectors.toList());
empIdList.removeAll(presentList);
List<String> presentList = listOfEmployees.stream().map(AttendenceData :: getEmployeeId).collect(Collectors.toList()); if (empIdList.size() > MyTeamUtils.INT_ZERO) {
empIdList.removeAll(presentList); query = buildSqlQuery(reportDate, empIdList.toString().substring(1, empIdList.toString().length() - 1), MyTeamUtils.ABSENT);
if(empIdList.size() > MyTeamUtils.INT_ZERO) { listOfEmployees.addAll(getAttendenceData(query, MyTeamUtils.ABSENT));
query = buildSqlQuery(reportDate, empIdList.toString().substring(1, empIdList.toString().length()-1), MyTeamUtils.ABSENT); }
listOfEmployees .addAll(getAttendenceData(query, MyTeamUtils.ABSENT)); }
} }
} return listOfEmployees;
} }
return listOfEmployees;
} private List<Employee> findEmpIdsByShiftWise(String shift) {
List<Employee> list = null;
private Optional<List<Resource>> findEmpIdsByShiftWise(String shift) {
Optional<List<Resource>> list = null; if (MyTeamUtils.ALL.equalsIgnoreCase(shift)) {
if(MyTeamUtils.ALL.equalsIgnoreCase(shift)) { list = employeeService.getEmployeesByEmpStatusAndShift("Active", MyTeamUtils.SHIFT);
list = projectTeamMatesRepo.findByActiveAndShiftLikeOrderByEmployeeIdDesc( true, MyTeamUtils.SHIFT); } else {
}else { list = employeeService.getEmployeesByEmpStatusAndShift("Active", shift);
list = projectTeamMatesRepo.findByActiveAndShiftLikeOrderByEmployeeIdDesc( true,shift); }
} return list;
return list;
} }
private String buildSqlQuery(String reportDate, String empIdsStr, String type) { private String buildSqlQuery(String reportDate, String empIdsStr, String type) {
String query = null; String query = null;
if(MyTeamUtils.PRESENT.equals(type)) { if (MyTeamUtils.PRESENT.equals(type)) {
query = MyTeamUtils.PRESENT_QUERY.replace("<REPORTDATE>", reportDate) query = MyTeamUtils.PRESENT_QUERY.replace("<REPORTDATE>", reportDate)
.replace("<EMPIDS>",empIdsStr); .replace("<EMPIDS>", empIdsStr);
}else { } else {
query = MyTeamUtils.ABSENT_QUERY.replace("<ABSENTLIST>", empIdsStr); query = MyTeamUtils.ABSENT_QUERY.replace("<ABSENTLIST>", empIdsStr);
} }
return query; return query;
} }
private List<AttendenceData> getAttendenceData(String query, String type) throws MyTeamException { private List<AttendenceData> getAttendenceData(String query, String type) throws MyTeamException {
List<AttendenceData> listOfEmployees = null; List<AttendenceData> listOfEmployees = null;
try(Connection connection = dbConnection.getDBConnection(); try (Connection connection = dbConnection.getDBConnection();
Statement statement = connection.createStatement(); Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query)) { ResultSet resultSet = statement.executeQuery(query)) {
AttendenceData attendData = null; AttendenceData attendData = null;
listOfEmployees = new ArrayList<AttendenceData>(); listOfEmployees = new ArrayList<AttendenceData>();
while (resultSet.next()) { while (resultSet.next()) {
attendData = new AttendenceData(); attendData = new AttendenceData();
attendData.setEmployeeId(resultSet.getString("EmployeeCode")); attendData.setEmployeeId(resultSet.getString("EmployeeCode"));
attendData.setEmployeeName(resultSet.getString("FirstName")); attendData.setEmployeeName(resultSet.getString("FirstName"));
attendData.setEmailId(resultSet.getString("EmailId")); attendData.setEmailId(resultSet.getString("EmailId"));
attendData.setPresent(type); attendData.setPresent(type);
listOfEmployees.add(attendData); listOfEmployees.add(attendData);
attendData = null; attendData = null;
} }
} catch (Exception e) { } catch (Exception e) {
MyTeamLogger.getInstance().error("Exception occured due to : ", e); MyTeamLogger.getInstance().error("Exception occured due to : ", e);
throw new MyTeamException(e.getMessage()); throw new MyTeamException(e.getMessage());
} }
return listOfEmployees; return listOfEmployees;
} }
// @Override
// @Override public Boolean fetchEmployeesData(String perticularDate, boolean resynchFlag) throws MyTeamException {
public Boolean fetchEmployeesData(String perticularDate, boolean resynchFlag) throws MyTeamException { return true;
return true; }
}
// @Override
// @Override public List<EmpLoginData> employeeLoginsBasedOnDate(long id, String fromDate, String toDate)
public List<EmpLoginData> employeeLoginsBasedOnDate(long id, String fromDate, String toDate) throws MyTeamException {
throws MyTeamException { return employeeDataBaseService.fetchEmployeeLoginsBasedOnDates(id, fromDate, toDate);
return employeeDataBaseService.fetchEmployeeLoginsBasedOnDates(id, fromDate, toDate); }
}
@Override
@Override public List generatePdfReport(long id, String fromDate, String toDate) throws MyTeamException {
public List generatePdfReport(long id, String fromDate, String toDate) throws MyTeamException { return pdfReportGenerator.generateEmployeeReport(id, fromDate, toDate);
return pdfReportGenerator.generateEmployeeReport(id, fromDate, toDate); }
}
} }
...@@ -4,6 +4,7 @@ import com.nisum.myteam.model.dao.Employee; ...@@ -4,6 +4,7 @@ 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.dao.ResourceAllocation; import com.nisum.myteam.model.dao.ResourceAllocation;
import com.nisum.myteam.model.vo.EmployeeDashboardVO; import com.nisum.myteam.model.vo.EmployeeDashboardVO;
import com.nisum.myteam.model.vo.ResourceVO;
import com.nisum.myteam.service.IDashboardService; import com.nisum.myteam.service.IDashboardService;
import com.nisum.myteam.service.IEmployeeService; import com.nisum.myteam.service.IEmployeeService;
import com.nisum.myteam.service.IProjectService; import com.nisum.myteam.service.IProjectService;
...@@ -34,31 +35,35 @@ public class DashboardService implements IDashboardService { ...@@ -34,31 +35,35 @@ public class DashboardService implements IDashboardService {
List<Employee> allEmployees = employeeService.getAllEmployees(); List<Employee> allEmployees = employeeService.getAllEmployees();
List<EmployeeDashboardVO> employeeDashboard = new ArrayList<>(); List<EmployeeDashboardVO> employeeDashboard = new ArrayList<>();
Map<String, Object> teamMatesMap = new HashMap(); Map<String, Object> resourcesMap = new HashMap();
Map<String, Object> teamMatesStatusMap = new HashMap(); Map<String, Object> teamMatesStatusMap = new HashMap();
// Find all active employees // Find all active employees
List<ResourceAllocation> resources = resourceService.getAllResources(); //List<ResourceAllocation> resources = resourceService.getAllResources();
for (ResourceAllocation resource : resources) { List<ResourceVO> resources = resourceService.getAllResourcesVO();
for (ResourceVO resource : resources) {
//if (resource.isActive()) { //if (resource.isActive()) {
if (resource.getBillingEndDate().compareTo(new Date())>0) { if (resource.getBillingEndDate().compareTo(new Date()) > 0) {
Project project = projectService.getProjectByProjectId(resource.getProjectId()); Project project = projectService.getProjectByProjectId(resource.getProjectId());
if (project != null && project.getStatus() != null if (project != null && project.getStatus() != null
&& !"Completed".equalsIgnoreCase(project.getStatus())) { && !"Completed".equalsIgnoreCase(project.getStatus())) {
Object projectTeamMate = teamMatesMap Object projectResource = resourcesMap.get(resource.getEmployeeId());
.get(resource.getEmployeeId());
if (projectTeamMate == null) { if (projectResource == null) {
List listOfObjects = new ArrayList<>(); List listOfObjects = new ArrayList<>();
listOfObjects.add(resource); listOfObjects.add(resource);
// A person can have multiple active projects with billability // A person can have multiple active projects with billability
teamMatesMap.put(resource.getEmployeeId(), listOfObjects); resourcesMap.put(resource.getEmployeeId(), listOfObjects);
} else { } else {
List existingRecordsInMap = (List) teamMatesMap List existingRecordsInMap = (List) resourcesMap
.get(resource.getEmployeeId()); .get(resource.getEmployeeId());
existingRecordsInMap.add(resource); existingRecordsInMap.add(resource);
teamMatesMap.put(resource.getEmployeeId(), resourcesMap.put(resource.getEmployeeId(),
existingRecordsInMap); existingRecordsInMap);
} }
...@@ -66,13 +71,13 @@ public class DashboardService implements IDashboardService { ...@@ -66,13 +71,13 @@ public class DashboardService implements IDashboardService {
} }
} }
for (Employee emp : allEmployees) { for (Employee emp : allEmployees) {
if (teamMatesMap.containsKey(emp.getEmployeeId())) { if (resourcesMap.containsKey(emp.getEmployeeId())) {
Object value = teamMatesMap.get(emp.getEmployeeId()); Object value = resourcesMap.get(emp.getEmployeeId());
if (value instanceof List) { if (value instanceof List) {
List listOfTeamMates = (List) value; List listOfTeamMates = (List) value;
String billableStatus = "NA"; String billableStatus = "NA";
for (Object obj : listOfTeamMates) { for (Object obj : listOfTeamMates) {
ResourceAllocation projectTeamMate = (ResourceAllocation) obj; ResourceVO projectTeamMate = (ResourceVO) obj;
String status = projectTeamMate.getBillableStatus(); String status = projectTeamMate.getBillableStatus();
if (status == null) { if (status == null) {
status = "NA"; status = "NA";
......
...@@ -4,7 +4,6 @@ import com.nisum.myteam.exception.handler.MyTeamException; ...@@ -4,7 +4,6 @@ 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.Resource;
import com.nisum.myteam.repository.EmployeeRepo; import com.nisum.myteam.repository.EmployeeRepo;
import com.nisum.myteam.service.*; import com.nisum.myteam.service.*;
import com.nisum.myteam.utils.MyTeamUtils; import com.nisum.myteam.utils.MyTeamUtils;
...@@ -28,325 +27,298 @@ import java.util.stream.Collectors; ...@@ -28,325 +27,298 @@ import java.util.stream.Collectors;
public class EmployeeService implements IEmployeeService { public class EmployeeService implements IEmployeeService {
@Autowired
private EmployeeRepo employeeRepo;
@Autowired @Autowired
private EmployeeRepo employeeRepo; private MongoTemplate mongoTemplate;
@Autowired @Autowired
private MongoTemplate mongoTemplate; private IAccountService accountService;
@Autowired @Autowired
private IAccountService accountService; private IProjectService projectService;
@Autowired @Autowired
private IProjectService projectService; private IDomainService domainService;
@Autowired @Autowired
private IDomainService domainService; private IEmployeeRoleService employeeRoleService;
@Autowired @Autowired
private IEmployeeRoleService employeeRoleService; private IEmployeeLocationService empLocationService;
@Autowired
private IEmployeeLocationService empLocationService; @Override
public Employee createEmployee(Employee employee, String loginEmpId) throws MyTeamException {
@Autowired employee.setCreatedOn(new Date());
private IResourceService resourceService; employee.setCreatedBy(loginEmpId);
employee.setModifiedBy(loginEmpId);
@Override
public Employee createEmployee(Employee employee, String loginEmpId) throws MyTeamException { // adding employee to Bench Allocation
employee.setCreatedOn(new Date()); // projectService.addNewBeanchAllocation(employee, loginEmpId);
employee.setCreatedBy(loginEmpId);
employee.setModifiedBy(loginEmpId); // Saving employee Location Details.
empLocationService.save(employee);
// adding employee to Bench Allocation
projectService.addNewBeanchAllocation(employee, loginEmpId); return employeeRepo.save(employee);
}
// Saving employee Location Details.
empLocationService.save(employee); @Override
public Employee updateEmployee(Employee employeeReq, String loginEmpId) {
return employeeRepo.save(employee); // update all emp details to inactive if employee is inactive
} Query query = new Query(Criteria.where("employeeId").is(employeeReq.getEmployeeId()));
Update update = new Update();
@Override update.set("employeeName", employeeReq.getEmployeeName());
public Employee updateEmployee(Employee employeeReq, String loginEmpId) { update.set("emailId", employeeReq.getEmailId());
// update all emp details to inactive if employee is inactive update.set("role", employeeReq.getRole());
Query query = new Query(Criteria.where("employeeId").is(employeeReq.getEmployeeId())); update.set("gender", employeeReq.getGender());
Update update = new Update(); update.set("functionalGroup", employeeReq.getFunctionalGroup());
update.set("employeeName", employeeReq.getEmployeeName()); update.set("empStatus", employeeReq.getEmpStatus());
update.set("emailId", employeeReq.getEmailId()); update.set("empSubStatus", employeeReq.getEmpSubStatus());
update.set("role", employeeReq.getRole()); update.set("employmentType", employeeReq.getEmploymentType());
update.set("gender", employeeReq.getGender()); update.set("empLocation", employeeReq.getEmpLocation());
update.set("functionalGroup", employeeReq.getFunctionalGroup()); update.set("domain", employeeReq.getDomain());
update.set("empStatus", employeeReq.getEmpStatus()); update.set("designation", employeeReq.getDesignation());
update.set("empSubStatus", employeeReq.getEmpSubStatus()); update.set("dateOfBirth", employeeReq.getDateOfBirth());
update.set("employmentType", employeeReq.getEmploymentType()); update.set("dateOfJoining", employeeReq.getDateOfJoining());
update.set("empLocation", employeeReq.getEmpLocation()); update.set("lastModifiedOn", new Date());
update.set("domain", employeeReq.getDomain()); update.set("hasPassort", employeeReq.getHasPassort());
update.set("designation", employeeReq.getDesignation()); update.set("hasB1", employeeReq.getHasB1());
update.set("dateOfBirth", employeeReq.getDateOfBirth()); update.set("passportExpiryDate", employeeReq.getPassportExpiryDate());
update.set("dateOfJoining", employeeReq.getDateOfJoining()); update.set("b1ExpiryDate", employeeReq.getB1ExpiryDate());
update.set("lastModifiedOn", new Date());
update.set("hasPassort", employeeReq.getHasPassort()); update.set("modifiedBy", loginEmpId);
update.set("hasB1", employeeReq.getHasB1());
update.set("passportExpiryDate", employeeReq.getPassportExpiryDate()); if (employeeReq.getEmpStatus().equalsIgnoreCase(MyTeamUtils.IN_ACTIVE_SPACE)) {
update.set("b1ExpiryDate", employeeReq.getB1ExpiryDate()); update.set("endDate", employeeReq.getEndDate());
update.set("empSubStatus", null);
update.set("modifiedBy", loginEmpId);
}
if (employeeReq.getEmpStatus().equalsIgnoreCase(MyTeamUtils.IN_ACTIVE_SPACE)) { // update employee location
update.set("endDate", employeeReq.getEndDate()); if (employeeReq.getEmpLocation() != null && !employeeReq.getEmpLocation().equals("")) {
update.set("empSubStatus", null); Employee existingEmployee = employeeRepo.findByEmployeeId(employeeReq.getEmployeeId());
if (!existingEmployee.getEmpLocation().equals(employeeReq.getEmpLocation())) {
} empLocationService.update(employeeReq, false);
// update employee location }
if (employeeReq.getEmpLocation() != null && !employeeReq.getEmpLocation().equals("")) {
Employee existingEmployee = employeeRepo.findByEmployeeId(employeeReq.getEmployeeId()); }
if (!existingEmployee.getEmpLocation().equals(employeeReq.getEmpLocation())) {
empLocationService.update(employeeReq, false); // update employee details
} FindAndModifyOptions options = new FindAndModifyOptions();
options.returnNew(true);
} options.upsert(true);
Employee employeeUpdated = mongoTemplate.findAndModify(query, update, options, Employee.class);
// update employee details
FindAndModifyOptions options = new FindAndModifyOptions(); try {
options.returnNew(true); // add to resource collection
options.upsert(true); //resourceService.addResources(employeeUpdated, loginEmpId);
Employee employeeUpdated = mongoTemplate.findAndModify(query, update, options, Employee.class);
// inactive the employee from the assigned project.
try { //resourceService.inactivateResource(employeeReq, employeeUpdated, loginEmpId);
// add to resource collection
resourceService.addResources(employeeUpdated, loginEmpId); } catch (Exception e) {
}
// inactive the employee from the assigned project. return employeeUpdated;
resourceService.inactivateResource(employeeReq, employeeUpdated, loginEmpId); }
} catch (Exception e) { @Override
} public Employee deleteEmployee(String employeeId) {
return employeeUpdated; Query query = new Query();
} query.addCriteria(Criteria.where("employeeId").is(employeeId));
Update update = new Update();
@Override update.set("empStatus", "InActive");
public Employee deleteEmployee(String employeeId) { Employee employeeUpdated = mongoTemplate.findAndModify(query, update, Employee.class);
// Employee employee = employeeRepo.findByEmployeeId(employeeId); log.info("The Deletion operation Result::" + employeeUpdated);
// employee.setEmpStatus("InActive"); return employeeUpdated;
// employeeRepo.save(employee); }
Query query = new Query(); @Override
query.addCriteria(Criteria.where("employeeId").is(employeeId)); public Employee updateProfile(Employee employeeReq) throws MyTeamException {
Update update = new Update(); boolean mobileNumberChanged = false;
update.set("empStatus", "InActive"); employeeReq.setLastModifiedOn(new Date());
Employee employeeUpdated = mongoTemplate.findAndModify(query, update, Employee.class); Employee existingEmployee = employeeRepo.findByEmployeeId(employeeReq.getEmployeeId());
log.info("The Deletion operation Result::" + employeeUpdated); String newMobileNumber = employeeReq.getMobileNumber();
return employeeUpdated; if (newMobileNumber != null && !newMobileNumber.equalsIgnoreCase("")) {
} if ((existingEmployee != null && existingEmployee.getMobileNumber() != null
&& !existingEmployee.getMobileNumber().equalsIgnoreCase(newMobileNumber))
@Override || (existingEmployee.getMobileNumber() == null)) {
public Employee updateProfile(Employee employeeReq) throws MyTeamException { mobileNumberChanged = true;
boolean mobileNumberChanged = false; }
employeeReq.setLastModifiedOn(new Date()); }
Employee existingEmployee = employeeRepo.findByEmployeeId(employeeReq.getEmployeeId()); existingEmployee.setMobileNumber(employeeReq.getMobileNumber());
String newMobileNumber = employeeReq.getMobileNumber(); existingEmployee.setAlternateMobileNumber(employeeReq.getAlternateMobileNumber());
if (newMobileNumber != null && !newMobileNumber.equalsIgnoreCase("")) { existingEmployee.setPersonalEmailId(employeeReq.getPersonalEmailId());
if ((existingEmployee != null && existingEmployee.getMobileNumber() != null existingEmployee.setBaseTechnology(employeeReq.getBaseTechnology());
&& !existingEmployee.getMobileNumber().equalsIgnoreCase(newMobileNumber)) existingEmployee.setTechnologyKnown(employeeReq.getTechnologyKnown());
|| (existingEmployee.getMobileNumber() == null)) { Employee employeePersisted = employeeRepo.save(existingEmployee);
mobileNumberChanged = true; return employeePersisted;
}
} }
existingEmployee.setMobileNumber(employeeReq.getMobileNumber());
existingEmployee.setAlternateMobileNumber(employeeReq.getAlternateMobileNumber()); public boolean isEmployeeExistsById(String employeeId) {
existingEmployee.setPersonalEmailId(employeeReq.getPersonalEmailId()); Employee employeeFound = getEmployeeById(employeeId);
existingEmployee.setBaseTechnology(employeeReq.getBaseTechnology()); return (employeeFound == null) ? false : true;
existingEmployee.setTechnologyKnown(employeeReq.getTechnologyKnown());
Employee employeePersisted = employeeRepo.save(existingEmployee); }
if (mobileNumberChanged) {
try { @Override
List<Resource> resourcesList = resourceService.getResourcesForEmployee(employeeReq.getEmployeeId()); public Employee getEmployeeById(String employeeId) {
log.info("The employeeId::" + employeeId);
if (resourcesList != null && !resourcesList.isEmpty()) {
for (Resource resource : resourcesList) { Employee employee = employeeRepo.findByEmployeeId(employeeId);
resource.setMobileNumber(employeePersisted.getMobileNumber()); log.info("Employee Found in Repo::" + employee);
resourceService.save(resource); return employee;
} }
} @Override
public Employee getEmployeeByEmaillId(String emailId) {
return employeeRepo.findByEmailId(emailId);
}
} catch (Exception e) {
} public List<Employee> getManagers() throws MyTeamException {
} List<Employee> activeEmpsList = getActiveEmployees();
return employeePersisted; List<Employee> managers = activeEmpsList.stream()
.filter(e -> ("Director".equalsIgnoreCase(e.getRole())
} || "Delivery Manager".equalsIgnoreCase(e.getRole()) || "Manager".equalsIgnoreCase(e.getRole())
|| "HR Manager".equalsIgnoreCase(e.getRole()) || "Lead".equalsIgnoreCase(e.getRole())))
public boolean isEmployeeExistsById(String employeeId) { .sorted(Comparator.comparing(Employee::getEmployeeName)).collect(Collectors.toList());
Employee employeeFound = getEmployeeById(employeeId); return managers;
return (employeeFound == null) ? false : true; }
} @Override
public List<Employee> getActiveEmployees() throws MyTeamException {
@Override return employeeRepo.findByEmpStatus(MyTeamUtils.ACTIVE);
public Employee getEmployeeById(String employeeId) { }
log.info("The employeeId::"+employeeId);
@Override
Employee employee=employeeRepo.findByEmployeeId(employeeId); public List<Employee> getEmployeesByStatus(String status) {
log.info("Employee Found in Repo::"+employee);
return employee;
}
@Override
public Employee getEmployeeByEmaillId(String emailId) {
return employeeRepo.findByEmailId(emailId);
}
public List<Employee> getManagers() throws MyTeamException {
List<Employee> activeEmpsList = getActiveEmployees();
List<Employee> managers = activeEmpsList.stream()
.filter(e -> ("Director".equalsIgnoreCase(e.getRole())
|| "Delivery Manager".equalsIgnoreCase(e.getRole()) || "Manager".equalsIgnoreCase(e.getRole())
|| "HR Manager".equalsIgnoreCase(e.getRole()) || "Lead".equalsIgnoreCase(e.getRole())))
.sorted(Comparator.comparing(Employee::getEmployeeName)).collect(Collectors.toList());
return managers;
}
@Override
public List<Employee> getActiveEmployees() throws MyTeamException {
return employeeRepo.findByEmpStatus(MyTeamUtils.ACTIVE);
}
@Override
public List<Employee> getEmployeesByStatus(String status) {
if (status.equals("all")) { if (status.equals("all")) {
return employeeRepo.findAll(new Sort(Sort.Direction.ASC, "employeeName")); return employeeRepo.findAll(new Sort(Sort.Direction.ASC, "employeeName"));
} else if(status.equals("Vacation")) { } else if (status.equals("Vacation")) {
Query query = new Query(); Query query = new Query();
query.addCriteria(Criteria.where("empSubStatus").ne("Resigned").andOperator(Criteria.where("empSubStatus").ne(null))); query.addCriteria(Criteria.where("empSubStatus").ne("Resigned").andOperator(Criteria.where("empSubStatus").ne(null)));
return mongoTemplate.find(query, Employee.class); return mongoTemplate.find(query, Employee.class);
} else if (status.equals("Resigned")) {
return employeeRepo.findByEmpSubStatusOrderByEmployeeNameAsc("Resigned");
} else {
return employeeRepo.findByEmpStatus(status);
}
}
@Override
public List<Account> getAccounts() throws MyTeamException {
return accountService.getAccounts();
}
@Override
public Employee getEmployeeRoleDataForSearchCriteria(String searchId, String searchAttribute) {
if (MyTeamUtils.EMPLOYEE_NAME.equals(searchAttribute)) {
return employeeRepo.findByEmployeeName(searchId);
} else if (MyTeamUtils.EMAIL_ID.equals(searchAttribute)) {
return employeeRepo.findByEmailId(searchId);
} }
else if(status.equals("Resigned")) { return null;
return employeeRepo.findByEmpSubStatusOrderByEmployeeNameAsc("Resigned");
}
@Override
public List<String> getEmployeeDetailsForAutocomplete() {
List<Employee> employeeList = employeeRepo.findAll();
List<String> resultList = new ArrayList<>();
employeeList.stream().sorted(java.util.Comparator.comparing(Employee::getEmployeeId))
.collect(Collectors.toList()).forEach(employee -> {
resultList.add(employee.getEmployeeId());
});
employeeList.stream().sorted(java.util.Comparator.comparing(Employee::getEmployeeName))
.collect(Collectors.toList()).forEach(employee -> {
resultList.add(employee.getEmployeeName());
});
employeeList.stream().sorted(java.util.Comparator.comparing(Employee::getEmailId)).collect(Collectors.toList())
.forEach(employee -> {
resultList.add(employee.getEmailId());
});
return resultList;
}
@Override
public List<HashMap<String, String>> getDeliveryLeads(String domainId) {
Domain domain = domainService.getDomainById(domainId);
return getDeliveryManagerMap(domain.getDeliveryManagers());
}
@Override
public List<HashMap<String, String>> getDeliveryManagerMap(List deliveryManagerIdsList) {
List<HashMap<String, String>> employeeList = new ArrayList<>();
Query query = new Query(Criteria.where("employeeId").in(deliveryManagerIdsList));
List<Employee> employeePersistedList = mongoTemplate.find(query, Employee.class);
for (Employee employee : employeePersistedList) {
HashMap<String, String> managerMap = new HashMap<>();
managerMap.put("employeeId", employee.getEmployeeId());
managerMap.put("employeeName", employee.getEmployeeName());
employeeList.add(managerMap);
} }
else { return employeeList;
return employeeRepo.findByEmpStatus(status); }
@Override
public List<Employee> getEmployeesByFunctionalGrp(String functionalGrp) {
return employeeRepo.findByEmpStatusAndFunctionalGroup("Active", functionalGrp);
}
@Override
public boolean verifyEmployeeRole(String empId, String roleIdReq) {
boolean flag = false;
log.info("The employeeId::" + empId);
Employee employee = getEmployeeById(empId);
log.info("Employee::::in EmployeeService::" + employee);
String roleName = employee.getRole();
log.info("The employee role::" + roleName);
if (StringUtils.isNotBlank(roleName) && !ApplicationRole.ADMIN.getRoleName().equalsIgnoreCase(roleName)) {
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(roleIdReq)) {
flag = true;
}
}
}
} }
} log.info("before return flag::" + flag);
return flag;
@Override }
public List<Account> getAccounts() throws MyTeamException {
return accountService.getAccounts(); public List<Employee> getEmployeesFromList(Set<String> empIdsSet) {
return employeeRepo.findByEmployeeIdIn(empIdsSet);
}
}
@Override
public Employee getEmployeeRoleDataForSearchCriteria(String searchId, String searchAttribute) { @Override
if (MyTeamUtils.EMPLOYEE_NAME.equals(searchAttribute)) { public List<Employee> getAllEmployees() {
return employeeRepo.findByEmployeeName(searchId); return employeeRepo.findAll();
} else if (MyTeamUtils.EMAIL_ID.equals(searchAttribute)) { }
return employeeRepo.findByEmailId(searchId);
} @Override
return null; public List<Employee> getEmployeesByEmpStatusAndShift(String empStatus, String shift) {
return employeeRepo.findByEmpStatusAndShiftLikeOrderByEmployeeIdDesc(empStatus, shift);
} }
@Override
public List<String> getEmployeeDetailsForAutocomplete() {
List<Employee> employeeList = employeeRepo.findAll();
List<String> resultList = new ArrayList<>();
employeeList.stream().sorted(java.util.Comparator.comparing(Employee::getEmployeeId))
.collect(Collectors.toList()).forEach(employee -> {
resultList.add(employee.getEmployeeId());
});
employeeList.stream().sorted(java.util.Comparator.comparing(Employee::getEmployeeName))
.collect(Collectors.toList()).forEach(employee -> {
resultList.add(employee.getEmployeeName());
});
employeeList.stream().sorted(java.util.Comparator.comparing(Employee::getEmailId)).collect(Collectors.toList())
.forEach(employee -> {
resultList.add(employee.getEmailId());
});
return resultList;
}
@Override
public List<HashMap<String, String>> getDeliveryLeads(String domainId) {
Domain domain = domainService.getDomainById(domainId);
return getDeliveryManagerMap(domain.getDeliveryManagers());
}
@Override
public List<HashMap<String, String>> getDeliveryManagerMap(List deliveryManagerIdsList) {
List<HashMap<String, String>> employeeList = new ArrayList<>();
Query query = new Query(Criteria.where("employeeId").in(deliveryManagerIdsList));
List<Employee> employeePersistedList = mongoTemplate.find(query,Employee.class);
for (Employee employee : employeePersistedList) {
HashMap<String, String> managerMap = new HashMap<>();
managerMap.put("employeeId", employee.getEmployeeId());
managerMap.put("employeeName", employee.getEmployeeName());
employeeList.add(managerMap);
}
return employeeList;
}
@Override
public List<Employee> getEmployeesByFunctionalGrp(String functionalGrp) {
return employeeRepo.findByEmpStatusAndFunctionalGroup("Active", functionalGrp);
}
@Override
public boolean verifyEmployeeRole(String empId, String roleIdReq) {
boolean flag = false;
log.info("The employeeId::" + empId);
Employee employee = getEmployeeById(empId);
log.info("Employee::::in EmployeeService::" + employee);
String roleName = employee.getRole();
log.info("The employee role::" + roleName);
if (StringUtils.isNotBlank(roleName) && !ApplicationRole.ADMIN.getRoleName().equalsIgnoreCase(roleName)) {
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(roleIdReq)) {
flag = true;
}
}
}
}
log.info("before return flag::"+flag);
return flag;
}
public List<Employee> getEmployeesFromList(Set<String> empIdsSet) {
return employeeRepo.findByEmployeeIdIn(empIdsSet);
}
@Override
public List<Employee> getAllEmployees() {
return employeeRepo.findAll();
}
} }
...@@ -7,7 +7,6 @@ import org.springframework.data.mongodb.core.query.Query; ...@@ -7,7 +7,6 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.nisum.myteam.model.dao.EmployeeShift; import com.nisum.myteam.model.dao.EmployeeShift;
import com.nisum.myteam.model.dao.Resource;
import com.nisum.myteam.repository.EmployeeShiftRepo; import com.nisum.myteam.repository.EmployeeShiftRepo;
import com.nisum.myteam.service.IEmployeeShiftService; import com.nisum.myteam.service.IEmployeeShiftService;
import com.nisum.myteam.utils.MyTeamUtils; import com.nisum.myteam.utils.MyTeamUtils;
...@@ -24,29 +23,29 @@ public class EmployeeShiftService implements IEmployeeShiftService { ...@@ -24,29 +23,29 @@ public class EmployeeShiftService implements IEmployeeShiftService {
@Autowired @Autowired
private MongoTemplate mongoTemplate; private MongoTemplate mongoTemplate;
@Override // @Override
public void addEmployeeShift(Resource resource, String loginEmpId) { // public void addEmployeeShift(Resource resource, String loginEmpId) {
EmployeeShift empShift = new EmployeeShift(); // EmployeeShift empShift = new EmployeeShift();
empShift.setEmployeeName(resource.getEmployeeName()); // empShift.setEmployeeName(resource.getEmployeeName());
empShift.setEmployeeId(resource.getEmployeeId()); // empShift.setEmployeeId(resource.getEmployeeId());
empShift.setShift(resource.getShift()); // empShift.setShift(resource.getShift());
empShift.setActive(resource.isActive()); // empShift.setActive(resource.isActive());
empShift.setAuditFields(loginEmpId, MyTeamUtils.CREATE); // empShift.setAuditFields(loginEmpId, MyTeamUtils.CREATE);
empShiftsRepo.save(empShift); // empShiftsRepo.save(empShift);
log.info("The Employee Shift has been Persisted ::" + empShift); // log.info("The Employee Shift has been Persisted ::" + empShift);
} // }
public void updateEmployeeShift(Resource resource, String loginEmpId) { // public void updateEmployeeShift(Resource resource, String loginEmpId) {
Query getQuery = new Query(); // Query getQuery = new Query();
getQuery.addCriteria(new Criteria().andOperator(Criteria.where("active").is(true), // getQuery.addCriteria(new Criteria().andOperator(Criteria.where("active").is(true),
Criteria.where("employeeId").is(resource.getEmployeeId()))); // Criteria.where("employeeId").is(resource.getEmployeeId())));
EmployeeShift existingEmpShift = mongoTemplate.findOne(getQuery, EmployeeShift.class); // EmployeeShift existingEmpShift = mongoTemplate.findOne(getQuery, EmployeeShift.class);
if (existingEmpShift != null) { // if (existingEmpShift != null) {
existingEmpShift.setActive(false); // existingEmpShift.setActive(false);
existingEmpShift.setAuditFields(loginEmpId, MyTeamUtils.UPDATE); // existingEmpShift.setAuditFields(loginEmpId, MyTeamUtils.UPDATE);
mongoTemplate.save(existingEmpShift); // mongoTemplate.save(existingEmpShift);
log.info("The shift has been updated::" + existingEmpShift); // log.info("The shift has been updated::" + existingEmpShift);
} // }
} // }
} }
...@@ -2,9 +2,7 @@ package com.nisum.myteam.service.impl; ...@@ -2,9 +2,7 @@ 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.*; import com.nisum.myteam.model.dao.*;
import com.nisum.myteam.model.vo.EmployeeDashboardVO;
import com.nisum.myteam.repository.ProjectRepo; import com.nisum.myteam.repository.ProjectRepo;
import com.nisum.myteam.repository.ResourceRepo;
import com.nisum.myteam.service.IAccountService; import com.nisum.myteam.service.IAccountService;
import com.nisum.myteam.service.IDomainService; import com.nisum.myteam.service.IDomainService;
import com.nisum.myteam.service.IEmployeeService; import com.nisum.myteam.service.IEmployeeService;
...@@ -13,13 +11,10 @@ import com.nisum.myteam.utils.MyTeamUtils; ...@@ -13,13 +11,10 @@ import com.nisum.myteam.utils.MyTeamUtils;
import com.nisum.myteam.utils.PdfReportGenerator; import com.nisum.myteam.utils.PdfReportGenerator;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.FindAndModifyOptions;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
...@@ -29,13 +24,9 @@ import java.util.stream.Collectors; ...@@ -29,13 +24,9 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public class ProjectService implements IProjectService { public class ProjectService implements IProjectService {
@Autowired @Autowired
private ProjectRepo projectRepo; private ProjectRepo projectRepo;
@Autowired
private ResourceRepo resourceRepo;
@Autowired @Autowired
private EmployeeDataService employeeDataBaseService; private EmployeeDataService employeeDataBaseService;
...@@ -45,22 +36,11 @@ public class ProjectService implements IProjectService { ...@@ -45,22 +36,11 @@ public class ProjectService implements IProjectService {
@Autowired @Autowired
private MongoTemplate mongoTemplate; private MongoTemplate mongoTemplate;
@Autowired @Autowired
private IDomainService domainService; private IDomainService domainService;
@Autowired
private BillingService billingService;
@Autowired @Autowired
private ResourceService resourceService; private ResourceAllocationService resourceAllocService;
@Autowired
private EmployeeShiftService empShiftService;
@Autowired @Autowired
private IEmployeeService employeeService; private IEmployeeService employeeService;
...@@ -94,7 +74,6 @@ public class ProjectService implements IProjectService { ...@@ -94,7 +74,6 @@ public class ProjectService implements IProjectService {
return isProjectExists; return isProjectExists;
} }
public long getProjectsCount() { public long getProjectsCount() {
return projectRepo.count(); return projectRepo.count();
...@@ -128,10 +107,7 @@ public class ProjectService implements IProjectService { ...@@ -128,10 +107,7 @@ public class ProjectService implements IProjectService {
@Override @Override
public Project updateProject(Project project, String loginEmpId) throws MyTeamException { public Project updateProject(Project project, String loginEmpId) throws MyTeamException {
//Inactivate the Project based on endDate
Project existingProject = projectRepo.findByProjectId(project.getProjectId()); Project existingProject = projectRepo.findByProjectId(project.getProjectId());
List<Resource> existingTeammates = resourceRepo.findByProjectId(project.getProjectId());
if (project.getProjectEndDate().compareTo(new Date()) <= 0 if (project.getProjectEndDate().compareTo(new Date()) <= 0
&& project.getProjectEndDate().compareTo(existingProject.getProjectEndDate()) != 0) { && project.getProjectEndDate().compareTo(existingProject.getProjectEndDate()) != 0) {
...@@ -139,119 +115,19 @@ public class ProjectService implements IProjectService { ...@@ -139,119 +115,19 @@ public class ProjectService implements IProjectService {
existingProject.setProjectEndDate(project.getProjectEndDate()); existingProject.setProjectEndDate(project.getProjectEndDate());
existingProject.setAuditFields(loginEmpId, MyTeamUtils.UPDATE); existingProject.setAuditFields(loginEmpId, MyTeamUtils.UPDATE);
projectRepo.save(existingProject); projectRepo.save(existingProject);
for (Resource existingTeammate : existingTeammates) {
existingTeammate.setActive(false);
existingTeammate.setEndDate(project.getProjectEndDate());
existingTeammate.setAuditFields(loginEmpId, MyTeamUtils.UPDATE);
resourceRepo.save(existingTeammate);
Billing billingDetails = new Billing();
Resource newBenchAllocation = new Resource();
billingDetails.setBillableStatus(MyTeamUtils.BENCH_BILLABILITY_STATUS);
List<Billing> listBD = billingService.getActiveBillings(existingTeammate.getEmployeeId(),
existingTeammate.getProjectId());
if (listBD != null && !listBD.isEmpty()) {
Billing billingDetailsExisting = listBD.get(0);
billingDetailsExisting.setBillingEndDate(project.getProjectEndDate());
billingDetailsExisting.setActive(false);
billingService.updateBilling(billingDetailsExisting, loginEmpId);
}
Project benchProject = projectRepo.findByProjectId(MyTeamUtils.BENCH_PROJECT_ID);
Date sd = project.getProjectEndDate();
billingDetails.setBillingStartDate(sd);
billingDetails.setAccount(MyTeamUtils.BENCH_ACCOUNT);
billingDetails.setActive(true);
billingDetails.setEmployeeId(existingTeammate.getEmployeeId());
billingDetails.setEmployeeName(existingTeammate.getEmployeeName());
//billingDetails.setCreateDate(new Date());// Commented as added common audit fields
billingDetails.setProjectId(MyTeamUtils.BENCH_PROJECT_ID);
billingDetails.setProjectName(MyTeamUtils.FREE_POLL);
if (benchProject != null) {
billingDetails.setBillingEndDate(benchProject.getProjectEndDate());
newBenchAllocation.setAccountId(benchProject.getAccountId());
newBenchAllocation.setProjectName(benchProject.getProjectName());
newBenchAllocation.setDomainId(benchProject.getDomainId());
newBenchAllocation.setEndDate(benchProject.getProjectEndDate());
}
//addEmployeeBillingDetails(billingDetails,loginEmpId);
billingService.addBilling(billingDetails, loginEmpId);
newBenchAllocation.setRole(existingTeammate.getRole());
newBenchAllocation.setAccount(MyTeamUtils.BENCH_ACCOUNT);
newBenchAllocation.setShift(existingTeammate.getShift());
newBenchAllocation.setBillableStatus(MyTeamUtils.BENCH_BILLABILITY_STATUS);
newBenchAllocation.setDesignation(existingTeammate.getDesignation());
newBenchAllocation.setEmailId(existingTeammate.getEmailId());
newBenchAllocation.setEmployeeId(existingTeammate.getEmployeeId());
newBenchAllocation.setActive(true);
newBenchAllocation.setEmployeeName(existingTeammate.getEmployeeName());
newBenchAllocation.setProjectId(MyTeamUtils.BENCH_PROJECT_ID);
newBenchAllocation.setStartDate(sd);
newBenchAllocation.setAuditFields(loginEmpId, MyTeamUtils.CREATE);
resourceRepo.save(newBenchAllocation);
empShiftService.updateEmployeeShift(existingTeammate, loginEmpId);
}
return existingProject;
} else {
Query query = new Query(
Criteria.where("projectId").is(project.getProjectId()));
Update update = new Update();
update.set("projectName", project.getProjectName());
if (project.getDeliveryLeadIds() != null) {
update.set("deliveryLeadIds", project.getDeliveryLeadIds());
}
/*
* if(project.getManagerIds()!= null) { update.set("managerIds",
* project.getManagerIds()); }
*//*
* else{
* update.set("managerIds",Arrays.asList(project.getManagerId())); }
*/
//update.set("domain", project.getDomain());
update.set("domain", domainService.getDomainById(project.getDomainId()).getDomainName());
update.set("domainId", project.getDomainId());
update.set("accountId", project.getAccountId());
update.set("status", project.getStatus());
update.set("projectStartDate", project.getProjectStartDate());
update.set("projectEndDate", project.getProjectEndDate());
FindAndModifyOptions options = new FindAndModifyOptions();
//Setting audit fileds
update.set("modifiedBy", loginEmpId);
update.set("lastModifiedOn", new Date());
options.returnNew(true);
options.upsert(true);
Project projectDB = mongoTemplate.findAndModify(query, update, options, Project.class);
List<Resource> employeeDetails = resourceRepo.findByProjectId(project.getProjectId());
if (employeeDetails != null && projectDB != null) {
for (Resource teamMate : employeeDetails) {
// emp.setManagerId(projectDB.getManagerId());
// emp.setManagerName(projectDB.getManagerName());
teamMate.setAccountId(projectDB.getAccountId());
teamMate.setProjectName(projectDB.getProjectName());
// MT-79:Maintatin the managerids in List
// emp.setManagerIds(projectDB.getManagerIds());
teamMate.setEndDate(projectDB.getProjectEndDate());
teamMate.setAuditFields(loginEmpId, MyTeamUtils.UPDATE);//Setting audit fields
resourceRepo.save(teamMate);
}
}
return projectDB;
} }
return existingProject;
} }
@Override @Override
public void deleteProject(String projectId) { public void deleteProject(String projectId) {
Project project = projectRepo.findByProjectId(projectId); Project project = projectRepo.findByProjectId(projectId);
projectRepo.delete(project); projectRepo.delete(project);
Query query = new Query(Criteria.where("projectId").is(projectId));
List<Resource> list = mongoTemplate.find(query, Resource.class);
resourceRepo.delete(list); resourceAllocService.deleteResourcesUnderProject(projectId);
} }
...@@ -307,44 +183,7 @@ public class ProjectService implements IProjectService { ...@@ -307,44 +183,7 @@ public class ProjectService implements IProjectService {
} }
public Resource addNewBeanchAllocation(Employee employee, String loginEmpId) {
Resource resourcePersisted = null;
Resource resourceBench = new Resource();
resourceBench.setAccount(MyTeamUtils.BENCH_ACCOUNT);
resourceBench.setBillableStatus(MyTeamUtils.BENCH_BILLABILITY_STATUS);
resourceBench.setDesignation(employee.getDesignation());
resourceBench.setEmailId(employee.getEmailId());
resourceBench.setEmployeeId(employee.getEmployeeId());
resourceBench.setMobileNumber(employee.getMobileNumber());
resourceBench.setEmployeeName(employee.getEmployeeName());
resourceBench.setProjectId(MyTeamUtils.BENCH_PROJECT_ID);
resourceBench.setStartDate(employee.getDateOfJoining() != null ? employee.getDateOfJoining() : new Date());
Project project = projectRepo.findByProjectId(MyTeamUtils.BENCH_PROJECT_ID);
resourceBench.setProjectName(project.getProjectName());
resourceBench.setAccountId(project.getAccountId());
resourceBench.setDomainId(project.getDomainId());
resourceBench.setShift(employee.getShift());
resourceBench.setRole(employee.getRole());
if (null != employee.getEmpStatus() && employee.getEmpStatus().trim().equalsIgnoreCase(MyTeamUtils.IN_ACTIVE_SPACE)) {
resourceBench.setEndDate(employee.getEndDate());
resourceBench.setActive(false);
} else {
employee.setEmpStatus(MyTeamUtils.ACTIVE);
resourceBench.setEndDate(project.getProjectEndDate());
resourceBench.setActive(true);
}
try {
resourcePersisted = resourceService.addResource(resourceBench, loginEmpId);
} catch (MyTeamException e) {
e.printStackTrace();
}
return resourcePersisted;
}
@Override @Override
...@@ -359,19 +198,19 @@ public class ProjectService implements IProjectService { ...@@ -359,19 +198,19 @@ public class ProjectService implements IProjectService {
} }
@Override @Override
public List<Resource> getResourcesUnderProject(String empId) { public List<ResourceAllocation> getResourcesUnderProject(String empId) {
List<String> projectsIdsList = new ArrayList<>(); List<String> projectsIdsList = new ArrayList<>();
List<Resource> resourcesList = new ArrayList<>(); List<ResourceAllocation> resourcesList = new ArrayList<>();
List<Project> projectsList = projectRepo.findByDeliveryLeadIds(empId); List<Project> projectsList = projectRepo.findByDeliveryLeadIds(empId);
for (Project project : projectsList) for (Project project : projectsList)
projectsIdsList.add(project.getProjectId()); projectsIdsList.add(project.getProjectId());
Query query = new Query(Criteria.where("projectId").in(projectsIdsList)); Query query = new Query(Criteria.where("projectId").in(projectsIdsList));
List<Resource> resourcesListPersisted = mongoTemplate.find(query, Resource.class); List<ResourceAllocation> resourcesListPersisted = mongoTemplate.find(query, ResourceAllocation.class);
for (Resource resource : resourcesListPersisted) { for (ResourceAllocation resource : resourcesListPersisted) {
if (!resource.getEmployeeId().equals(empId)) if (!resource.getEmployeeId().equals(empId))
resourcesList.add(resource); resourcesList.add(resource);
} }
...@@ -386,8 +225,6 @@ public class ProjectService implements IProjectService { ...@@ -386,8 +225,6 @@ public class ProjectService implements IProjectService {
List<Project> projectList = new ArrayList<>(); List<Project> projectList = new ArrayList<>();
List<Project> projectListPersisted = projectRepo.findByDeliveryLeadIds(deliveryLeadId); List<Project> projectListPersisted = projectRepo.findByDeliveryLeadIds(deliveryLeadId);
for (Project project : projectListPersisted) { for (Project project : projectListPersisted) {
//accountService.getAccountById(project.getAccountId()).getAccountName();
if (!project.getStatus().equals("Completed")) { if (!project.getStatus().equals("Completed")) {
projectList.add(project); projectList.add(project);
} }
...@@ -413,14 +250,11 @@ public class ProjectService implements IProjectService { ...@@ -413,14 +250,11 @@ public class ProjectService implements IProjectService {
} }
private String validateAgainstDOJ(Resource projectTeamMate) { private String validateAgainstDOJ(ResourceAllocation resource) {
String response = null; String response = null;
//Date empDoj = employeeRepo.findByEmployeeId(projectTeamMate.getEmployeeId()).getDateOfJoining(); Date empDoj = employeeService.getEmployeeById(resource.getEmployeeId()).getDateOfJoining();
Date empDoj = employeeService.getEmployeeById(projectTeamMate.getEmployeeId()).getDateOfJoining(); if (resource.getBillingStartDate().compareTo(empDoj) < 0) {
response = "Resource Start Date (" + resource.getBillingStartDate() + " ) in " + getProjectByProjectId(resource.getProjectId()).getProjectName()
if (projectTeamMate.getNewBillingStartDate().compareTo(empDoj) < 0) {
response = "Resource Start Date (" + projectTeamMate.getNewBillingStartDate() + " ) in " + projectTeamMate.getProjectName()
+ " project should not be before Date of Joining ( " + empDoj + ")."; + " project should not be before Date of Joining ( " + empDoj + ").";
} }
return response; return response;
...@@ -481,8 +315,6 @@ public class ProjectService implements IProjectService { ...@@ -481,8 +315,6 @@ public class ProjectService implements IProjectService {
} }
/* /*
Need to refactor the following code Need to refactor the following code
...@@ -574,3 +406,139 @@ public class ProjectService implements IProjectService { ...@@ -574,3 +406,139 @@ public class ProjectService implements IProjectService {
} }
//List<Resource> existingTeammates = resourceRepo.findByProjectId(project.getProjectId());
// for (Resource existingTeammate : existingTeammates) {
// existingTeammate.setActive(false);
// existingTeammate.setEndDate(project.getProjectEndDate());
// existingTeammate.setAuditFields(loginEmpId, MyTeamUtils.UPDATE);
// resourceRepo.save(existingTeammate);
// Billing billingDetails = new Billing();
// Resource newBenchAllocation = new Resource();
// billingDetails.setBillableStatus(MyTeamUtils.BENCH_BILLABILITY_STATUS);
// List<Billing> listBD = billingService.getActiveBillings(existingTeammate.getEmployeeId(),
// existingTeammate.getProjectId());
// if (listBD != null && !listBD.isEmpty()) {
// Billing billingDetailsExisting = listBD.get(0);
// billingDetailsExisting.setBillingEndDate(project.getProjectEndDate());
// billingDetailsExisting.setActive(false);
// billingService.updateBilling(billingDetailsExisting, loginEmpId);
// }
// Project benchProject = projectRepo.findByProjectId(MyTeamUtils.BENCH_PROJECT_ID);
// Date sd = project.getProjectEndDate();
// billingDetails.setBillingStartDate(sd);
// billingDetails.setAccount(MyTeamUtils.BENCH_ACCOUNT);
// billingDetails.setActive(true);
// billingDetails.setEmployeeId(existingTeammate.getEmployeeId());
// billingDetails.setEmployeeName(existingTeammate.getEmployeeName());
// //billingDetails.setCreateDate(new Date());// Commented as added common audit fields
// billingDetails.setProjectId(MyTeamUtils.BENCH_PROJECT_ID);
// billingDetails.setProjectName(MyTeamUtils.FREE_POLL);
// if (benchProject != null) {
// billingDetails.setBillingEndDate(benchProject.getProjectEndDate());
// newBenchAllocation.setAccountId(benchProject.getAccountId());
// newBenchAllocation.setProjectName(benchProject.getProjectName());
// newBenchAllocation.setDomainId(benchProject.getDomainId());
// newBenchAllocation.setEndDate(benchProject.getProjectEndDate());
// }
// billingService.addBilling(billingDetails, loginEmpId);
// newBenchAllocation.setRole(existingTeammate.getRole());
// newBenchAllocation.setAccount(MyTeamUtils.BENCH_ACCOUNT);
// newBenchAllocation.setShift(existingTeammate.getShift());
// newBenchAllocation.setBillableStatus(MyTeamUtils.BENCH_BILLABILITY_STATUS);
// newBenchAllocation.setDesignation(existingTeammate.getDesignation());
// newBenchAllocation.setEmailId(existingTeammate.getEmailId());
// newBenchAllocation.setEmployeeId(existingTeammate.getEmployeeId());
// newBenchAllocation.setActive(true);
// newBenchAllocation.setEmployeeName(existingTeammate.getEmployeeName());
// newBenchAllocation.setProjectId(MyTeamUtils.BENCH_PROJECT_ID);
// newBenchAllocation.setStartDate(sd);
// newBenchAllocation.setAuditFields(loginEmpId, MyTeamUtils.CREATE);
// resourceRepo.save(newBenchAllocation);
//empShiftService.updateEmployeeShift(existingTeammate, loginEmpId);
// }
// else {
// Query query = new Query(
// Criteria.where("projectId").is(project.getProjectId()));
// Update update = new Update();
// update.set("projectName", project.getProjectName());
// if (project.getDeliveryLeadIds() != null) {
// update.set("deliveryLeadIds", project.getDeliveryLeadIds());
// }
//
// update.set("domain", domainService.getDomainById(project.getDomainId()).getDomainName());
//
// update.set("domainId", project.getDomainId());
// update.set("accountId", project.getAccountId());
// update.set("status", project.getStatus());
// update.set("projectStartDate", project.getProjectStartDate());
// update.set("projectEndDate", project.getProjectEndDate());
// FindAndModifyOptions options = new FindAndModifyOptions();
// //Setting audit fileds
// update.set("modifiedBy", loginEmpId);
// update.set("lastModifiedOn", new Date());
//
// options.returnNew(true);
// options.upsert(true);
// Project projectDB = mongoTemplate.findAndModify(query, update, options, Project.class);
// List<Resource> employeeDetails = resourceRepo.findByProjectId(project.getProjectId());
//// if (employeeDetails != null && projectDB != null) {
//// for (Resource teamMate : employeeDetails) {
//// teamMate.setAccountId(projectDB.getAccountId());
//// teamMate.setProjectName(projectDB.getProjectName());
//// teamMate.setEndDate(projectDB.getProjectEndDate());
//// teamMate.setAuditFields(loginEmpId, MyTeamUtils.UPDATE);//Setting audit fields
//// resourceRepo.save(teamMate);
//// }
//// }
// return projectDB;
// }
// public Resource addNewBeanchAllocation(Employee employee, String loginEmpId) {
// Resource resourcePersisted = null;
// Resource resourceBench = new Resource();
// resourceBench.setAccount(MyTeamUtils.BENCH_ACCOUNT);
// resourceBench.setBillableStatus(MyTeamUtils.BENCH_BILLABILITY_STATUS);
// resourceBench.setDesignation(employee.getDesignation());
// resourceBench.setEmailId(employee.getEmailId());
// resourceBench.setEmployeeId(employee.getEmployeeId());
// resourceBench.setMobileNumber(employee.getMobileNumber());
//
// resourceBench.setEmployeeName(employee.getEmployeeName());
// resourceBench.setProjectId(MyTeamUtils.BENCH_PROJECT_ID);
// resourceBench.setStartDate(employee.getDateOfJoining() != null ? employee.getDateOfJoining() : new Date());
//
// Project project = projectRepo.findByProjectId(MyTeamUtils.BENCH_PROJECT_ID);
// resourceBench.setProjectName(project.getProjectName());
// resourceBench.setAccountId(project.getAccountId());
// resourceBench.setDomainId(project.getDomainId());
// resourceBench.setShift(employee.getShift());
// resourceBench.setRole(employee.getRole());
//
// if (null != employee.getEmpStatus() && employee.getEmpStatus().trim().equalsIgnoreCase(MyTeamUtils.IN_ACTIVE_SPACE)) {
// resourceBench.setEndDate(employee.getEndDate());
// resourceBench.setActive(false);
// } else {
// employee.setEmpStatus(MyTeamUtils.ACTIVE);
// resourceBench.setEndDate(project.getProjectEndDate());
// resourceBench.setActive(true);
// }
//
// try {
// resourcePersisted = resourceService.addResource(resourceBench, loginEmpId);
// } catch (MyTeamException e) {
// e.printStackTrace();
// }
//
// return resourcePersisted;
// }
\ No newline at end of file
...@@ -193,6 +193,54 @@ public class ResourceAllocationService implements IResourceAllocationService { ...@@ -193,6 +193,54 @@ public class ResourceAllocationService implements IResourceAllocationService {
} }
public List<ResourceVO> getAllResourcesVO() {
return getAllResources().stream().map(resource -> {
ResourceVO resourceVO = new ResourceVO();
resourceVO.setId(resource.getId());
resourceVO.setProjectId(resource.getProjectId());
resourceVO.setEmployeeId(resource.getEmployeeId());
Employee employee = employeeService.getEmployeeById(resource.getEmployeeId());
if (employee != null) {
resourceVO.setEmployeeName(employee.getEmployeeName());
resourceVO.setDesignation(employee.getDesignation());
resourceVO.setEmailId(employee.getEmailId());
resourceVO.setMobileNo(employee.getMobileNumber());
}
Project project = projectService.getProjectByProjectId(resource.getProjectId());
if (project != null) {
resourceVO.setProjectName(project.getProjectName());
resourceVO.setProjectStartDate(project.getProjectStartDate());
resourceVO.setProjectEndDate(project.getProjectEndDate());
resourceVO.setProjectStatus(project.getStatus());
if (project.getAccountId() != null) {
Account account = accountService.getAccountById(project.getAccountId());
if (account != null) {
resourceVO.setAccountName(account.getAccountName());
}
}
}
//Account account=accountService.getAccountById(domainService.getDomainById(project.getProjectId()).getAccountId());
resourceVO.setBillableStatus(resource.getBillableStatus());
resourceVO.setBillingStartDate(resource.getBillingStartDate());
resourceVO.setBillingEndDate(resource.getBillingEndDate());
resourceVO.setResourceRole(resource.getResourceRole());
if (resource.getBillingEndDate().compareTo(new Date()) > 0) {
resourceVO.setResourceStatus(ResourceStatus.ACTIVE.getStatus());
} else {
resourceVO.setResourceStatus(ResourceStatus.IN_ACTIVE.getStatus());
}
return resourceVO;
}).collect(Collectors.toList());
}
public List<ResourceAllocation> getResourcesSortByBillingStartDate(String employeeId) { public List<ResourceAllocation> getResourcesSortByBillingStartDate(String employeeId) {
Query query = prepareQuery(employeeId, MyTeamUtils.BILLING_START_DATE); Query query = prepareQuery(employeeId, MyTeamUtils.BILLING_START_DATE);
return mongoTemplate.find(query, ResourceAllocation.class); return mongoTemplate.find(query, ResourceAllocation.class);
...@@ -334,6 +382,9 @@ public class ResourceAllocationService implements IResourceAllocationService { ...@@ -334,6 +382,9 @@ public class ResourceAllocationService implements IResourceAllocationService {
MyProjectAllocationVO myProject = new MyProjectAllocationVO(); MyProjectAllocationVO myProject = new MyProjectAllocationVO();
myProject.setProjectId(project.getProjectId()); myProject.setProjectId(project.getProjectId());
myProject.setProjectName(project.getProjectName()); myProject.setProjectName(project.getProjectName());
myProject.setProjectStartDate(project.getProjectStartDate());
myProject.setProjectEndDate(project.getProjectEndDate());
myProject.setProjectStatus(project.getStatus());
myProject.setAccountName(account.getAccountName()); myProject.setAccountName(account.getAccountName());
myProject.setBillableStatus(resourceAlloc.getBillableStatus()); myProject.setBillableStatus(resourceAlloc.getBillableStatus());
...@@ -377,17 +428,17 @@ public class ResourceAllocationService implements IResourceAllocationService { ...@@ -377,17 +428,17 @@ public class ResourceAllocationService implements IResourceAllocationService {
@Override @Override
public List<ResourceAllocation> getBillingsForEmployee(String empId) { public List<ResourceVO> getBillingsForEmployee(String empId) {
// List<Billing> billingsList = billingRepo.findByEmployeeId(empId); List<ResourceVO> finalList=new ArrayList<>();
List<ResourceAllocation> resourcesList = resourceAllocationRepo.findByEmployeeId(empId); List<ResourceAllocation> resourcesList = resourceAllocationRepo.findByEmployeeId(empId);
if (resourcesList == null || resourcesList.size() == 0) { if (resourcesList != null && resourcesList.size() > 0) {
return resourcesList;
} else {
log.info("The resources billing list before sorting::" + resourcesList); log.info("The resources billing list before sorting::" + resourcesList);
//return billingsList.stream().sorted(Comparator.comparing(Billing::getCreatedOn).reversed()).collect(Collectors.toList()); //return billingsList.stream().sorted(Comparator.comparing(Billing::getCreatedOn).reversed()).collect(Collectors.toList());
return resourcesList.stream().sorted(Comparator.comparing(ResourceAllocation::getBillingStartDate).reversed()).collect(Collectors.toList()); List<ResourceAllocation> sortedList = resourcesList.stream().sorted(Comparator.comparing(ResourceAllocation::getBillingStartDate).reversed()).collect(Collectors.toList());
finalList= convertResourcesToResourcesVO(sortedList);
} }
return finalList;
} }
@Override @Override
...@@ -434,6 +485,59 @@ public class ResourceAllocationService implements IResourceAllocationService { ...@@ -434,6 +485,59 @@ public class ResourceAllocationService implements IResourceAllocationService {
} }
private List<ResourceVO> convertResourcesToResourcesVO(List<ResourceAllocation> resourcesList) {
List<ResourceVO> finalList = new ArrayList<>();
if (resourcesList != null && resourcesList.size() > 0) {
finalList = resourcesList.stream().map(resource -> {
ResourceVO resourceVO = new ResourceVO();
resourceVO.setId(resource.getId());
resourceVO.setProjectId(resource.getProjectId());
resourceVO.setEmployeeId(resource.getEmployeeId());
Employee employee = employeeService.getEmployeeById(resource.getEmployeeId());
if (employee != null) {
resourceVO.setEmployeeName(employee.getEmployeeName());
resourceVO.setDesignation(employee.getDesignation());
resourceVO.setEmailId(employee.getEmailId());
resourceVO.setMobileNo(employee.getMobileNumber());
}
Project project = projectService.getProjectByProjectId(resource.getProjectId());
if (project != null) {
resourceVO.setProjectName(project.getProjectName());
resourceVO.setProjectStartDate(project.getProjectStartDate());
resourceVO.setProjectEndDate(project.getProjectEndDate());
resourceVO.setProjectStatus(project.getStatus());
if (project.getAccountId() != null) {
Account account = accountService.getAccountById(project.getAccountId());
if (account != null) {
resourceVO.setAccountName(account.getAccountName());
}
}
}
//Account account=accountService.getAccountById(domainService.getDomainById(project.getProjectId()).getAccountId());
resourceVO.setBillableStatus(resource.getBillableStatus());
resourceVO.setBillingStartDate(resource.getBillingStartDate());
resourceVO.setBillingEndDate(resource.getBillingEndDate());
resourceVO.setResourceRole(resource.getResourceRole());
if (resource.getBillingEndDate().compareTo(new Date()) > 0) {
resourceVO.setResourceStatus(ResourceStatus.ACTIVE.getStatus());
} else {
resourceVO.setResourceStatus(ResourceStatus.IN_ACTIVE.getStatus());
}
return resourceVO;
}).collect(Collectors.toList());
}
return finalList;
}
} }
......
...@@ -67,7 +67,6 @@ public class ResourceService implements IResourceService { ...@@ -67,7 +67,6 @@ public class ResourceService implements IResourceService {
return resourceRepo.save(resource); return resourceRepo.save(resource);
} }
@Override
public Resource addResource(Resource resourceReq, String loginEmpId) throws MyTeamException { public Resource addResource(Resource resourceReq, String loginEmpId) throws MyTeamException {
// calling a method // calling a method
...@@ -111,7 +110,7 @@ public class ResourceService implements IResourceService { ...@@ -111,7 +110,7 @@ public class ResourceService implements IResourceService {
billingService.addBilling(billings, loginEmpId); billingService.addBilling(billings, loginEmpId);
empShiftService.addEmployeeShift(resourceReq, loginEmpId); //empShiftService.addEmployeeShift(resourceReq, loginEmpId);
// calling method // calling method
addOrUpdateTeamMateRole(resourceReq.getRole(), resourceReq.getProjectId(), resourceReq.getEmployeeId(), false, addOrUpdateTeamMateRole(resourceReq.getRole(), resourceReq.getProjectId(), resourceReq.getEmployeeId(), false,
...@@ -120,7 +119,6 @@ public class ResourceService implements IResourceService { ...@@ -120,7 +119,6 @@ public class ResourceService implements IResourceService {
return resourcePersisted; return resourcePersisted;
} }
@Override
public String updateResource(Resource resourceReq, String loginEmpId) throws MyTeamException { public String updateResource(Resource resourceReq, String loginEmpId) throws MyTeamException {
// String result = null; // String result = null;
MyTeamResultDTO myResultDto = new MyTeamResultDTO(); MyTeamResultDTO myResultDto = new MyTeamResultDTO();
...@@ -303,7 +301,7 @@ public class ResourceService implements IResourceService { ...@@ -303,7 +301,7 @@ public class ResourceService implements IResourceService {
|| (resourceReq.getShift() != null) || (resourceReq.getShift() != null)
&& !resourceReq.getShift().equalsIgnoreCase(existingResource.getShift())) { && !resourceReq.getShift().equalsIgnoreCase(existingResource.getShift())) {
empShiftService.updateEmployeeShift(existingResource, loginEmpId); //empShiftService.updateEmployeeShift(existingResource, loginEmpId);
existingResource.setShift(resourceReq.getShift()); existingResource.setShift(resourceReq.getShift());
Employee employeeDB = employeeRepo.findByEmployeeId(resourceReq.getEmployeeId()); Employee employeeDB = employeeRepo.findByEmployeeId(resourceReq.getEmployeeId());
...@@ -336,7 +334,7 @@ public class ResourceService implements IResourceService { ...@@ -336,7 +334,7 @@ public class ResourceService implements IResourceService {
} }
@Override // @Override
public Resource deleteResource(String empId, String projectId, ObjectId id, String loginEmpId) { public Resource deleteResource(String empId, String projectId, ObjectId id, String loginEmpId) {
Resource existingResource = resourceRepo.findById(id); Resource existingResource = resourceRepo.findById(id);
existingResource.setActive(false); existingResource.setActive(false);
...@@ -384,7 +382,7 @@ public class ResourceService implements IResourceService { ...@@ -384,7 +382,7 @@ public class ResourceService implements IResourceService {
// audit // audit
// fields // fields
Resource resource=resourceRepo.save(resourceBench); Resource resource=resourceRepo.save(resourceBench);
empShiftService.updateEmployeeShift(existingResource, loginEmpId); //empShiftService.updateEmployeeShift(existingResource, loginEmpId);
return resource; return resource;
} }
...@@ -471,43 +469,43 @@ public class ResourceService implements IResourceService { ...@@ -471,43 +469,43 @@ public class ResourceService implements IResourceService {
// return null; // return null;
} }
public void inactivateResource(Employee employeeReq, Employee employeeUpdated, String loginEmpId) { //public void inactivateResource(Employee employeeReq, Employee employeeUpdated, String loginEmpId) {
// inactive the employee from the assigned project // // inactive the employee from the assigned project
if (employeeReq.getEmpStatus().equals(MyTeamUtils.IN_ACTIVE_SPACE) && employeeReq.getEndDate() != null // if (employeeReq.getEmpStatus().equals(MyTeamUtils.IN_ACTIVE_SPACE) && employeeReq.getEndDate() != null
&& employeeReq.getEndDate().compareTo(new Date()) <= 0) { // && employeeReq.getEndDate().compareTo(new Date()) <= 0) {
//
List<Resource> resourcesList = resourceRepo.findByEmployeeIdAndActive(employeeReq.getEmployeeId(), true); // List<Resource> resourcesList = resourceRepo.findByEmployeeIdAndActive(employeeReq.getEmployeeId(), true);
if (resourcesList.size() == 1) { // if (resourcesList.size() == 1) {
Resource resource = resourcesList.get(0); // Resource resource = resourcesList.get(0);
resource.setActive(false); // resource.setActive(false);
resource.setEndDate(employeeReq.getEndDate()); // resource.setEndDate(employeeReq.getEndDate());
//
List<Billing> billingList = billingService.getActiveBillings(resource.getEmployeeId(), // List<Billing> billingList = billingService.getActiveBillings(resource.getEmployeeId(),
resource.getProjectId()); // resource.getProjectId());
if (billingList != null && !billingList.isEmpty()) { // if (billingList != null && !billingList.isEmpty()) {
billingService.addBillingtoResource(billingList.get(0), employeeUpdated, loginEmpId); // billingService.addBillingtoResource(billingList.get(0), employeeUpdated, loginEmpId);
} // }
resource.setAuditFields(loginEmpId, MyTeamUtils.UPDATE); // resource.setAuditFields(loginEmpId, MyTeamUtils.UPDATE);
resourceRepo.save(resource); // resourceRepo.save(resource);
empShiftService.updateEmployeeShift(resource, loginEmpId); // empShiftService.updateEmployeeShift(resource, loginEmpId);
} // }
} // }
} // }
@Override // @Override
public List<Resource> findByAccountAndActiveAndBillableStatus(String account, boolean status, public List<Resource> findByAccountAndActiveAndBillableStatus(String account, boolean status,
String billableStatus) { String billableStatus) {
return resourceRepo.findByAccountAndActiveAndBillableStatus(account, status, billableStatus); return resourceRepo.findByAccountAndActiveAndBillableStatus(account, status, billableStatus);
} }
@Override // @Override
public List<Resource> getResourcesSortByStartDate(String employeeId) { public List<Resource> getResourcesSortByStartDate(String employeeId) {
Query query = prepareQuery(employeeId, MyTeamUtils.START_DATE); Query query = prepareQuery(employeeId, MyTeamUtils.START_DATE);
return mongoTemplate.find(query, Resource.class); return mongoTemplate.find(query, Resource.class);
} }
@Override // @Override
public List<Resource> getResourcesForProject(String projectId, String statusFlag) { public List<Resource> getResourcesForProject(String projectId, String statusFlag) {
List<Resource> resourcesList = new ArrayList<>(); List<Resource> resourcesList = new ArrayList<>();
List<Resource> resourceListPersisted = resourceRepo.findByProjectId(projectId); List<Resource> resourceListPersisted = resourceRepo.findByProjectId(projectId);
...@@ -526,7 +524,7 @@ public class ResourceService implements IResourceService { ...@@ -526,7 +524,7 @@ public class ResourceService implements IResourceService {
return resourcesList; return resourcesList;
} }
@Override // @Override
public List<Resource> getResourcesForEmployee(String empId) { public List<Resource> getResourcesForEmployee(String empId) {
return resourceRepo.findByEmployeeId(empId); return resourceRepo.findByEmployeeId(empId);
} }
...@@ -539,7 +537,7 @@ public class ResourceService implements IResourceService { ...@@ -539,7 +537,7 @@ public class ResourceService implements IResourceService {
return resourceRepo.findAll(); return resourceRepo.findAll();
} }
@Override // @Override
public List<Resource> getActiveResources(String empId) { public List<Resource> getActiveResources(String empId) {
List<Resource> resourcesList = new ArrayList<>(); List<Resource> resourcesList = new ArrayList<>();
List<Resource> resourcesListPers = resourceRepo.findByEmployeeId(empId); List<Resource> resourcesListPers = resourceRepo.findByEmployeeId(empId);
...@@ -551,7 +549,7 @@ public class ResourceService implements IResourceService { ...@@ -551,7 +549,7 @@ public class ResourceService implements IResourceService {
return resourcesList; return resourcesList;
} }
@Override // @Override
public List<Resource> getResourcesForActiveProjects() { public List<Resource> getResourcesForActiveProjects() {
List<Project> projects = projectService.getAllProjects(); List<Project> projects = projectService.getAllProjects();
List<Resource> resourceList = new ArrayList<>(); List<Resource> resourceList = new ArrayList<>();
...@@ -565,7 +563,7 @@ public class ResourceService implements IResourceService { ...@@ -565,7 +563,7 @@ public class ResourceService implements IResourceService {
return resourceList; return resourceList;
} }
@Override // @Override
public List<Resource> getResourcesForShift(String shift) { public List<Resource> getResourcesForShift(String shift) {
List<Resource> resourcesListPers = null; List<Resource> resourcesListPers = null;
List<Resource> resourcesList = new ArrayList<>(); List<Resource> resourcesList = new ArrayList<>();
...@@ -588,7 +586,7 @@ public class ResourceService implements IResourceService { ...@@ -588,7 +586,7 @@ public class ResourceService implements IResourceService {
@Override // @Override
public List<Resource> getResourcesUnderDeliveryLead(String deliveryLeadId) { public List<Resource> getResourcesUnderDeliveryLead(String deliveryLeadId) {
List<String> projectIdsList = new ArrayList<>(); List<String> projectIdsList = new ArrayList<>();
List<Resource> resourcesList = new ArrayList<>(); List<Resource> resourcesList = new ArrayList<>();
...@@ -614,7 +612,7 @@ public class ResourceService implements IResourceService { ...@@ -614,7 +612,7 @@ public class ResourceService implements IResourceService {
@Override // @Override
public HashMap<String,Object> verifyResourceAssignedToAnyProject(Resource resourceReq, String loginEmpId) throws MyTeamException { public HashMap<String,Object> verifyResourceAssignedToAnyProject(Resource resourceReq, String loginEmpId) throws MyTeamException {
boolean flag = false; boolean flag = false;
String projectName = null; String projectName = null;
......
...@@ -31,11 +31,11 @@ myApp.controller("dashboardController", function($scope, $http, myFactory,export ...@@ -31,11 +31,11 @@ myApp.controller("dashboardController", function($scope, $http, myFactory,export
columnDefs : [ columnDefs : [
{field : 'employeeId',displayName: 'Emp ID', enableColumnMenu: false, enableSorting: false,enableFiltering:true, width:100,cellTemplate: getEmpDetTemplate}, {field : 'employeeId',displayName: 'Emp ID', enableColumnMenu: false, enableSorting: false,enableFiltering:true, width:100,cellTemplate: getEmpDetTemplate},
{field : 'employeeName',displayName: 'Employee Name ', enableColumnMenu: false, enableSorting: true,enableFiltering:true,width:200}, {field : 'employeeName',displayName: 'Employee Name ', enableColumnMenu: false, enableSorting: true,enableFiltering:true,width:200},
{field : 'account',displayName: 'Client', enableColumnMenu: false, enableSorting: true,enableFiltering:false,width:100}, {field : 'accountName',displayName: 'Client', enableColumnMenu: false, enableSorting: true,enableFiltering:false,width:100},
{field : 'domain',displayName: 'Domain', enableColumnMenu: false, enableSorting: true,enableFiltering:false,width:100}, {field : 'domain',displayName: 'Domain', enableColumnMenu: false, enableSorting: true,enableFiltering:false,width:100},
{field : 'projectName',displayName: 'Project', enableColumnMenu: false, enableSorting: false,enableFiltering:false,width:150}, {field : 'projectName',displayName: 'Project', enableColumnMenu: false, enableSorting: false,enableFiltering:false,width:150},
{field : 'startDate',displayName: 'Billing Start Date', enableColumnMenu: false, enableSorting: true,cellFilter: 'date:"dd-MMM-yyyy"',enableFiltering:false,width:150}, {field : 'billingStartDate',displayName: 'Billing Start Date', enableColumnMenu: false, enableSorting: true,cellFilter: 'date:"dd-MMM-yyyy"',enableFiltering:false,width:150},
{field : 'endDate',displayName: 'Billing End Date', enableColumnMenu: false, enableSorting: true,cellFilter: 'date:"dd-MMM-yyyy"',enableFiltering:false,width:150}, {field : 'billingEndDate',displayName: 'Billing End Date', enableColumnMenu: false, enableSorting: true,cellFilter: 'date:"dd-MMM-yyyy"',enableFiltering:false,width:150},
{field : 'empStatus',displayName: 'Status', enableColumnMenu: false, enableSorting: true,enableFiltering: true,width:80}, {field : 'empStatus',displayName: 'Status', enableColumnMenu: false, enableSorting: true,enableFiltering: true,width:80},
{field : 'empSubStatus',displayName: 'Sub Status', enableColumnMenu: false, enableSorting: true,enableFiltering:true,width:120,cellClass:function(grid,row,col){ {field : 'empSubStatus',displayName: 'Sub Status', enableColumnMenu: false, enableSorting: true,enableFiltering:true,width:120,cellClass:function(grid,row,col){
...@@ -208,11 +208,12 @@ myApp.controller("dashboardController", function($scope, $http, myFactory,export ...@@ -208,11 +208,12 @@ myApp.controller("dashboardController", function($scope, $http, myFactory,export
{field : 'billableStatus',displayName: 'Billability', enableColumnMenu: false, enableSorting: false,minWidth : 100,width: 150}, {field : 'billableStatus',displayName: 'Billability', enableColumnMenu: false, enableSorting: false,minWidth : 100,width: 150},
{field : 'projectStartDate',displayName: 'Start Date', enableColumnMenu: false, enableSorting: false, cellFilter: 'date:"dd-MMM-yyyy"',minWidth : 100,width: 150}, {field : 'projectStartDate',displayName: 'Start Date', enableColumnMenu: false, enableSorting: false, cellFilter: 'date:"dd-MMM-yyyy"',minWidth : 100,width: 150},
{field : 'projectEndDate',displayName: 'End Date', enableColumnMenu: false, enableSorting: false, cellFilter: 'date:"dd-MMM-yyyy"' ,minWidth : 100,width: 150}, {field : 'projectEndDate',displayName: 'End Date', enableColumnMenu: false, enableSorting: false, cellFilter: 'date:"dd-MMM-yyyy"' ,minWidth : 100,width: 150},
{field : 'resourceStatus',displayName: 'Status', enableColumnMenu: false,enableSorting: false,minWidth : 100,width: 150} {field : 'projectStatus',displayName: 'Status', enableColumnMenu: false,enableSorting: false,minWidth : 100,width: 150}
] ]
}; };
$scope.gridOptionsEmpLocationDetails = { $scope.gridOptionsEmpLocationDetails = {
paginationPageSizes : [ 10, 20, 30, 40, 50, 100], paginationPageSizes : [ 10, 20, 30, 40, 50, 100],
paginationPageSize : 10, paginationPageSize : 10,
...@@ -257,7 +258,7 @@ myApp.controller("dashboardController", function($scope, $http, myFactory,export ...@@ -257,7 +258,7 @@ myApp.controller("dashboardController", function($scope, $http, myFactory,export
enableCellEditOnFocus: true, enableCellEditOnFocus: true,
columnDefs : [ columnDefs : [
{field : 'projectName',displayName: 'Project', enableColumnMenu: true, enableSorting: true,minWidth : 100,width: 150}, {field : 'projectName',displayName: 'Project', enableColumnMenu: true, enableSorting: true,minWidth : 100,width: 150},
{field : 'account',displayName: 'Account', enableColumnMenu: false, enableSorting: false,minWidth : 100,width: 150}, {field : 'accountName',displayName: 'Account', enableColumnMenu: false, enableSorting: false,minWidth : 100,width: 150},
{field: 'billingStartDate',displayName: 'Start Date', {field: 'billingStartDate',displayName: 'Start Date',
cellFilter: 'date:"dd-MMM-yyyy"',minWidth : 100,width: 150 cellFilter: 'date:"dd-MMM-yyyy"',minWidth : 100,width: 150
}, },
...@@ -267,7 +268,7 @@ myApp.controller("dashboardController", function($scope, $http, myFactory,export ...@@ -267,7 +268,7 @@ myApp.controller("dashboardController", function($scope, $http, myFactory,export
cellFilter: 'date:"dd-MMM-yyyy"',minWidth : 100,width: 150 cellFilter: 'date:"dd-MMM-yyyy"',minWidth : 100,width: 150
}, },
{field : 'comments',displayName: 'Comments', enableColumnMenu: false, enableSorting: false,minWidth : 100,width: 150}, {field : 'comments',displayName: 'Comments', enableColumnMenu: false, enableSorting: false,minWidth : 100,width: 150},
{field : 'active',displayName: 'Active',enableColumnMenu: false, enableSorting: false,cellTemplate:getCellActiveTemplateBilling,enableCellEdit: false,minWidth : 100,width: 150} {field : 'resourceStatus',displayName: 'Status',enableColumnMenu: false, enableSorting: false,cellTemplate:getCellActiveTemplateBilling,enableCellEdit: false,minWidth : 100,width: 150}
] ]
}; };
......
...@@ -16,10 +16,8 @@ function($mdDateLocaleProvider) { ...@@ -16,10 +16,8 @@ function($mdDateLocaleProvider) {
//TODO: Replace this appUri with the domain name created //TODO: Replace this appUri with the domain name created
myApp.constant('appConfig', { myApp.constant('appConfig', {
appName: "MyTime", appName: "MyTime",
<<<<<<< Updated upstream
=======
//appUri: "http://10.3.45.11:8080/myTeam/", //appUri: "http://10.3.45.11:8080/myTeam/",
>>>>>>> Stashed changes
appUri: "http://localhost:8080/myTeam/", appUri: "http://localhost:8080/myTeam/",
version:"1.0", version:"1.0",
empStartId:16001, empStartId:16001,
......
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