Commit a108af67 authored by Vijay Akula's avatar Vijay Akula

Resolved the dashboard page

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