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; ...@@ -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.Query;
import org.springframework.data.mongodb.core.query.Update; import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service; 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.exception.handler.MyTimeException;
import com.nisum.mytime.model.BillingDetails; import com.nisum.mytime.model.BillingDetails;
import com.nisum.mytime.model.EmpLoginData; import com.nisum.mytime.model.EmpLoginData;
...@@ -34,6 +37,7 @@ import com.nisum.mytime.repository.EmployeeRolesRepo; ...@@ -34,6 +37,7 @@ import com.nisum.mytime.repository.EmployeeRolesRepo;
import com.nisum.mytime.repository.ProjectRepo; import com.nisum.mytime.repository.ProjectRepo;
import com.nisum.mytime.repository.ProjectTeamMatesRepo; import com.nisum.mytime.repository.ProjectTeamMatesRepo;
import com.nisum.mytime.repository.TeamMatesBillingRepo; import com.nisum.mytime.repository.TeamMatesBillingRepo;
import com.nisum.mytime.utils.MyTimeUtils;
import com.nisum.mytime.utils.PdfReportGenerator; import com.nisum.mytime.utils.PdfReportGenerator;
@Service("projectService") @Service("projectService")
...@@ -139,20 +143,18 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -139,20 +143,18 @@ public class ProjectServiceImpl implements ProjectService {
} }
//MT-72 // MT-72: fetching the projectteammate details.
@Override @Override
public List<ProjectTeamMate> getProjectInfo(String empId) { public List<ProjectTeamMate> getProjectInfo(String employeeId) {
Query query = new Query(Criteria.where("employeeId").is(empId)); return mongoTemplate.find(getQuery(employeeId, MyTimeUtils.START_DATE), ProjectTeamMate.class);
query.limit(1); }
query.with(new Sort(Sort.Direction.DESC, "startDate"));
List<ProjectTeamMate> projectTeamMate = mongoTemplate.find(query, ProjectTeamMate.class);
return projectTeamMate;
}
@Override @Override
public ProjectTeamMate addProjectTeamMate(ProjectTeamMate projectTeamMate) public ProjectTeamMate addProjectTeamMate(ProjectTeamMate projectTeamMate)
throws MyTimeException { throws MyTimeException {
updateProjectEndDateInProjectTeamMate(projectTeamMate);
ProjectTeamMate pT = projectTeamMatesRepo.save(projectTeamMate); ProjectTeamMate pT = projectTeamMatesRepo.save(projectTeamMate);
List<BillingDetails> listBD = getEmployeeActiveNisumBench( List<BillingDetails> listBD = getEmployeeActiveNisumBench(
pT.getEmployeeId()); pT.getEmployeeId());
...@@ -178,7 +180,7 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -178,7 +180,7 @@ public class ProjectServiceImpl implements ProjectService {
DateUtils.truncate(pT.getEndDate(), Calendar.DATE)); DateUtils.truncate(pT.getEndDate(), Calendar.DATE));
} }
billings.setCreateDate(new Date()); billings.setCreateDate(new Date());
updateProjectEndDateInBillingDetails(projectTeamMate.getNewBillingStartDate(), billings);
addEmployeeBillingDetails(billings); addEmployeeBillingDetails(billings);
addShiftDetails(projectTeamMate); addShiftDetails(projectTeamMate);
if (projectTeamMate.getProjectId() != null && !projectTeamMate if (projectTeamMate.getProjectId() != null && !projectTeamMate
...@@ -517,17 +519,70 @@ public class ProjectServiceImpl implements ProjectService { ...@@ -517,17 +519,70 @@ public class ProjectServiceImpl implements ProjectService {
* for (BillingDetails tB : billingsPast) { tB.setActive(false); * for (BillingDetails tB : billingsPast) { tB.setActive(false);
* teamMatesBillingRepo.save(tB); } * teamMatesBillingRepo.save(tB); }
*/ */
teamMate.setCreateDate(new Date());
return teamMatesBillingRepo.save(teamMate); return teamMatesBillingRepo.save(teamMate);
} }
@Override @Override
public BillingDetails updateEmployeeBilling(BillingDetails teamMate) { public BillingDetails updateEmployeeBilling(BillingDetails teamMate) {
// TODO Auto-generated method stub
return teamMatesBillingRepo.save(teamMate); 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) { public void deleteEmployeeBilling(BillingDetails teamMate) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
teamMatesBillingRepo.delete(teamMate); teamMatesBillingRepo.delete(teamMate);
......
...@@ -37,5 +37,17 @@ public class MyTimeUtils { ...@@ -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_QUERY1 = ") AND STATUS='Working' AND EMPLOYEECODE NOT LIKE 'del%' ";
public final static String ABESENT ="Absent"; public final static String ABESENT ="Absent";
public final static String EMAIL_ID = "emailId"; 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