Commit e392dd8e authored by vikram singh's avatar vikram singh

added service for endPoint for fetching employees BasedOnSubStatus For GivenDates

parent c9926b1d
...@@ -11,10 +11,12 @@ import javax.servlet.http.HttpServletRequest; ...@@ -11,10 +11,12 @@ import javax.servlet.http.HttpServletRequest;
import com.nisum.myteam.model.dao.EmployeeSubStatus; import com.nisum.myteam.model.dao.EmployeeSubStatus;
import com.nisum.myteam.model.dao.EmployeeVisa; import com.nisum.myteam.model.dao.EmployeeVisa;
import com.nisum.myteam.model.vo.EmployeeSubStatusVO;
import com.nisum.myteam.repository.EmployeeVisaRepo; import com.nisum.myteam.repository.EmployeeVisaRepo;
import com.nisum.myteam.service.ISubStatusService; import com.nisum.myteam.service.ISubStatusService;
import com.nisum.myteam.service.impl.EmployeeService; import com.nisum.myteam.service.impl.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
...@@ -280,6 +282,19 @@ public class EmployeeController { ...@@ -280,6 +282,19 @@ public class EmployeeController {
return new ResponseEntity<ResponseDetails>(responseDetails, HttpStatus.OK); return new ResponseEntity<ResponseDetails>(responseDetails, HttpStatus.OK);
} }
@RequestMapping(value = "/employeesBasedOnSubStatusForGivenDates", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> employeesBasedOnSubStatusForGivenDates(@RequestParam("fromDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date fromDate ,
@RequestParam("fromDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date toDate,
@RequestParam("subStatus") String subStatus ,
HttpServletRequest request){
List<EmployeeSubStatusVO> employees = subStatusService.employeesBasedOnSubStatusForGivenDates(fromDate,toDate,subStatus);
ResponseDetails responseDetails = new ResponseDetails(new Date(), 904, "Fetched Employees Successfully",
"Fetched Employees Successfully", employees , request.getRequestURI(), "Resource details", null);
return new ResponseEntity<ResponseDetails>(responseDetails, HttpStatus.OK);
}
......
package com.nisum.myteam.model.vo;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@ToString
public class EmployeeSubStatusVO {
private String empId;
private String empName;
private String empStatus;
private Date fromDate;
private Date toDate;
private String functionalGroup;
}
...@@ -9,6 +9,7 @@ import com.nisum.myteam.model.dao.Employee; ...@@ -9,6 +9,7 @@ import com.nisum.myteam.model.dao.Employee;
public interface EmployeeRepo public interface EmployeeRepo
extends MongoRepository<Employee, String> { extends MongoRepository<Employee, String> {
Employee findByEmployeeIdAndEmpStatus(String employeeId,String empStatus);
Employee findByEmailId(String emailId); Employee findByEmailId(String emailId);
......
...@@ -8,4 +8,6 @@ import java.util.List; ...@@ -8,4 +8,6 @@ import java.util.List;
public interface EmployeeSubStatusRepo extends MongoRepository<EmployeeSubStatus, String> { public interface EmployeeSubStatusRepo extends MongoRepository<EmployeeSubStatus, String> {
public List<EmployeeSubStatus> findByEmployeeID(String employeeId); public List<EmployeeSubStatus> findByEmployeeID(String employeeId);
public List<EmployeeSubStatus> findBySubStatus(String subStatus);
} }
package com.nisum.myteam.service; package com.nisum.myteam.service;
import java.util.Date;
import java.util.List;
import com.nisum.myteam.model.dao.Employee;
import com.nisum.myteam.model.dao.EmployeeSubStatus; import com.nisum.myteam.model.dao.EmployeeSubStatus;
import com.nisum.myteam.model.vo.EmployeeSubStatusVO;
public interface ISubStatusService { public interface ISubStatusService {
public EmployeeSubStatus getLatestEmployeeSubStatus(String empId); public EmployeeSubStatus getLatestEmployeeSubStatus(String empId);
...@@ -12,4 +17,6 @@ public interface ISubStatusService { ...@@ -12,4 +17,6 @@ public interface ISubStatusService {
public EmployeeSubStatus getCurrentSubStatus(String employeeId); public EmployeeSubStatus getCurrentSubStatus(String employeeId);
public EmployeeSubStatus endSubStatus(String loginnEmployeeId,EmployeeSubStatus subStatus); public EmployeeSubStatus endSubStatus(String loginnEmployeeId,EmployeeSubStatus subStatus);
public List<EmployeeSubStatusVO> employeesBasedOnSubStatusForGivenDates(Date fromDate, Date toDate, String subStatus);
} }
package com.nisum.myteam.service.impl; package com.nisum.myteam.service.impl;
import com.nisum.myteam.model.dao.Employee;
import com.nisum.myteam.model.dao.EmployeeSubStatus; import com.nisum.myteam.model.dao.EmployeeSubStatus;
import com.nisum.myteam.model.vo.EmployeeSubStatusVO;
import com.nisum.myteam.repository.EmployeeRepo;
import com.nisum.myteam.repository.EmployeeSubStatusRepo; import com.nisum.myteam.repository.EmployeeSubStatusRepo;
import com.nisum.myteam.service.ISubStatusService; import com.nisum.myteam.service.ISubStatusService;
import com.nisum.myteam.utils.MyTeamDateUtils; import com.nisum.myteam.utils.MyTeamDateUtils;
...@@ -8,6 +11,7 @@ import com.nisum.myteam.utils.MyTeamUtils; ...@@ -8,6 +11,7 @@ import com.nisum.myteam.utils.MyTeamUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -18,6 +22,8 @@ public class SubStatusService implements ISubStatusService { ...@@ -18,6 +22,8 @@ public class SubStatusService implements ISubStatusService {
@Autowired @Autowired
private EmployeeSubStatusRepo employeeSubStatusRepo; private EmployeeSubStatusRepo employeeSubStatusRepo;
@Autowired
private EmployeeRepo employeeRepo;
public HashMap<String, Object> respMap = new HashMap<>(); public HashMap<String, Object> respMap = new HashMap<>();
...@@ -74,13 +80,15 @@ public class SubStatusService implements ISubStatusService { ...@@ -74,13 +80,15 @@ public class SubStatusService implements ISubStatusService {
} }
return null; return null;
} }
//not called by ANY ONE
public boolean isDatesValid(EmployeeSubStatus subStatus){ public boolean isDatesValid(EmployeeSubStatus subStatus){
boolean isValid = false; boolean isValid = false;
List<EmployeeSubStatus> subStatusList = employeeSubStatusRepo.findByEmployeeID(subStatus.getEmployeeID()); List<EmployeeSubStatus> subStatusList = employeeSubStatusRepo.findByEmployeeID(subStatus.getEmployeeID());
List<EmployeeSubStatus> matchedList = subStatusList.stream().filter(s -> (s.getFromDate().compareTo(subStatus.getFromDate())<=0 && s.getToDate().compareTo(subStatus.getFromDate())>=0) && List<EmployeeSubStatus> matchedList = subStatusList.stream().filter(s -> (s.getFromDate().compareTo(subStatus.getFromDate())<=0 && s.getToDate().compareTo(subStatus.getFromDate())>=0) &&
(s.getFromDate().compareTo(subStatus.getToDate())<=0 && s.getToDate().compareTo(subStatus.getToDate())>=0)).collect(Collectors.toList()); (s.getFromDate().compareTo(subStatus.getToDate())<=0 && s.getToDate().compareTo(subStatus.getToDate())>=0)).collect(Collectors.toList());
if(!matchedList.isEmpty()){ if(!matchedList.isEmpty()){
respMap.put("statusCode", 811);
respMap.put("message", "resource is already on substatus on these days");
//resource is already on substatus on these days //resource is already on substatus on these days
}else{ }else{
isValid = true; isValid = true;
...@@ -89,4 +97,27 @@ public class SubStatusService implements ISubStatusService { ...@@ -89,4 +97,27 @@ public class SubStatusService implements ISubStatusService {
return isValid; return isValid;
} }
@Override
public List<EmployeeSubStatusVO> employeesBasedOnSubStatusForGivenDates(Date fromDate, Date toDate, String subStatus) {
List<EmployeeSubStatusVO> employees=new ArrayList<>();
employeeSubStatusRepo.findBySubStatus(subStatus).stream().filter(e->
( e.getFromDate().compareTo(fromDate)<=0 && e.getToDate().compareTo(fromDate)>=0)
|| (e.getFromDate().compareTo(fromDate)<=0 && e.getToDate().compareTo(fromDate)>=0)
)
.forEach(e->{
Employee employee=employeeRepo.findByEmployeeIdAndEmpStatus(e.getEmployeeID(), MyTeamUtils.ACTIVE);
if(employee!=null) {
EmployeeSubStatusVO empSubStatus=new EmployeeSubStatusVO();
empSubStatus.setEmpId(e.getEmployeeID());
empSubStatus.setEmpName(employee.getEmployeeName());
empSubStatus.setEmpStatus(e.getSubStatus());
empSubStatus.setFromDate(e.getFromDate());
empSubStatus.setToDate(e.getToDate());
empSubStatus.setFunctionalGroup(employee.getFunctionalGroup());
employees.add(empSubStatus);
}});
return employees;
}
} }
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