Commit a6af0bdb authored by sakoju-nisum-com's avatar sakoju-nisum-com Committed by rbonthala-nisum-com

MT-72: updated the previous project end date while employee allocating to the new project. (#16)

parent a0fdd508
......@@ -20,7 +20,10 @@ 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 org.springframework.util.CollectionUtils;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.nisum.mytime.exception.handler.MyTimeException;
import com.nisum.mytime.model.BillingDetails;
import com.nisum.mytime.model.EmpLoginData;
......@@ -34,6 +37,7 @@ import com.nisum.mytime.repository.EmployeeRolesRepo;
import com.nisum.mytime.repository.ProjectRepo;
import com.nisum.mytime.repository.ProjectTeamMatesRepo;
import com.nisum.mytime.repository.TeamMatesBillingRepo;
import com.nisum.mytime.utils.MyTimeUtils;
import com.nisum.mytime.utils.PdfReportGenerator;
@Service("projectService")
......@@ -139,20 +143,18 @@ public class ProjectServiceImpl implements ProjectService {
}
//MT-72
@Override
public List<ProjectTeamMate> getProjectInfo(String empId) {
Query query = new Query(Criteria.where("employeeId").is(empId));
query.limit(1);
query.with(new Sort(Sort.Direction.DESC, "startDate"));
List<ProjectTeamMate> projectTeamMate = mongoTemplate.find(query, ProjectTeamMate.class);
return projectTeamMate;
}
// MT-72: fetching the projectteammate details.
@Override
public List<ProjectTeamMate> getProjectInfo(String employeeId) {
return mongoTemplate.find(getQuery(employeeId, MyTimeUtils.START_DATE), ProjectTeamMate.class);
}
@Override
public ProjectTeamMate addProjectTeamMate(ProjectTeamMate projectTeamMate)
throws MyTimeException {
updateProjectEndDateInProjectTeamMate(projectTeamMate);
ProjectTeamMate pT = projectTeamMatesRepo.save(projectTeamMate);
List<BillingDetails> listBD = getEmployeeActiveNisumBench(
pT.getEmployeeId());
......@@ -178,7 +180,7 @@ public class ProjectServiceImpl implements ProjectService {
DateUtils.truncate(pT.getEndDate(), Calendar.DATE));
}
billings.setCreateDate(new Date());
updateProjectEndDateInBillingDetails(projectTeamMate.getNewBillingStartDate(), billings);
addEmployeeBillingDetails(billings);
addShiftDetails(projectTeamMate);
if (projectTeamMate.getProjectId() != null && !projectTeamMate
......@@ -517,17 +519,70 @@ public class ProjectServiceImpl implements ProjectService {
* for (BillingDetails tB : billingsPast) { tB.setActive(false);
* teamMatesBillingRepo.save(tB); }
*/
teamMate.setCreateDate(new Date());
return teamMatesBillingRepo.save(teamMate);
}
@Override
public BillingDetails updateEmployeeBilling(BillingDetails teamMate) {
// TODO Auto-generated method stub
return teamMatesBillingRepo.save(teamMate);
}
@Override
// Updating the projectenddate field in ProjectTeamMate .
private void updateProjectEndDateInProjectTeamMate(ProjectTeamMate projectTeamMate) {
List<ProjectTeamMate> projectTeamMateList = mongoTemplate
.find(getQuery(projectTeamMate.getEmployeeId(), MyTimeUtils.ENDDATE_COLUMN), ProjectTeamMate.class);
if (!CollectionUtils.isEmpty(projectTeamMateList)) {
for (ProjectTeamMate teamMate : projectTeamMateList) {
if (teamMate.getEndDate() != null
&& !teamMate.getProjectName().equalsIgnoreCase(MyTimeUtils.FREE_POLL)) {
updateProjectEndDate(projectTeamMate.getNewBillingStartDate(), teamMate.getEmployeeId(),
teamMate.getProjectName(), MyTimeUtils.ENDDATE_COLUMN,
MyTimeUtils.TEAMDETAILS_COLLECTION_NAME);
}
}
}
}
// Updating the billingenddate in BillingDetails .
private void updateProjectEndDateInBillingDetails(Date newBillingStartDate, BillingDetails billingDetails) {
List<BillingDetails> billingDetailsList = mongoTemplate
.find(getQuery(billingDetails.getEmployeeId(), MyTimeUtils.CREATED_DATE_COLUMN), BillingDetails.class);
if (!CollectionUtils.isEmpty(billingDetailsList)) {
for (BillingDetails billing : billingDetailsList) {
if (billing.getBillingEndDate() != null
&& !billing.getProjectName().equalsIgnoreCase(MyTimeUtils.FREE_POLL)) {
updateProjectEndDate(newBillingStartDate, billing.getEmployeeId(), billing.getProjectName(),
MyTimeUtils.BILLING_ENDDATE_COLUMN, MyTimeUtils.BILLINGDETAILS_COLLECTION_NAME);
}
}
}
}
// Updating the projectenddate
private void updateProjectEndDate(Date newBillingStartDate, String employeeId, String projectName,
String dateColumn, String collectionName) {
DBCollection collection = mongoTemplate.getCollection(collectionName);
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.append(MyTimeUtils.EMPLOYEE_ID, employeeId);
searchQuery.append(MyTimeUtils.PROJECT_NAME, projectName);
BasicDBObject updateQuery = new BasicDBObject();
updateQuery.append(MyTimeUtils.SET,
new BasicDBObject().append(dateColumn, DateUtils.addDays(newBillingStartDate, MyTimeUtils.MINUS_ONE)));
collection.update(searchQuery, updateQuery);
}
private Query getQuery(String employeeId, String dateColumn) {
Query query = new Query();
query.addCriteria(Criteria.where(MyTimeUtils.EMPLOYEE_ID).is(employeeId));
query.limit(MyTimeUtils.ONE);
query.with(new Sort(Sort.Direction.DESC, dateColumn));
return query;
}
@Override
public void deleteEmployeeBilling(BillingDetails teamMate) {
// TODO Auto-generated method stub
teamMatesBillingRepo.delete(teamMate);
......
......@@ -37,5 +37,17 @@ public class MyTimeUtils {
public final static String ABESENT_QUERY1 = ") AND STATUS='Working' AND EMPLOYEECODE NOT LIKE 'del%' ";
public final static String ABESENT ="Absent";
public final static String EMAIL_ID = "emailId";
public final static String TEAMDETAILS_COLLECTION_NAME = "TeamDetails";
public final static String BILLINGDETAILS_COLLECTION_NAME = "BillingDetails";
public final static String ENDDATE_COLUMN = "endDate";
public final static String BILLING_ENDDATE_COLUMN = "billingEndDate";
public final static String CREATED_DATE_COLUMN = "createDate";
public final static String PROJECT_NAME = "projectName";
public final static String SET = "$set";
public final static int MINUS_ONE = -1;
public final static int ONE = 1;
public final static String FREE_POLL="Free Pool";
public final static String START_DATE="startDate";
}
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