Commit bfd0ed71 authored by Vijay Chaitanya's avatar Vijay Chaitanya Committed by rbonthala-nisum-com

Mt 98 domain changes (#47)

* update code changes

* changes done for saving with Id and Name
parent 0152d951
......@@ -27,7 +27,7 @@ public class Domains implements Serializable {
private ObjectId id;
private String domainId;
private String domainName;
private String accountName;
private String accountId;
private String status;
List<String> deliveryManagers;
}
......@@ -5,6 +5,6 @@ import com.nisum.mytime.model.Domains;
public interface DomainRepo extends MongoRepository<Domains, String> {
List<Domains> findByDomainNameAndAccountName(String domianName,String accountName);
List<Domains> findByDomainNameAndAccountId(String domianName,String accountId);
}
\ No newline at end of file
......@@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
......@@ -15,6 +16,7 @@ import org.springframework.util.StringUtils;
import com.mongodb.WriteResult;
import com.nisum.mytime.exception.handler.MyTimeException;
import com.nisum.mytime.model.AccountInfo;
import com.nisum.mytime.model.Domains;
import com.nisum.mytime.model.EmployeeRoles;
import com.nisum.mytime.repository.DomainRepo;
......@@ -49,7 +51,7 @@ public class DomainServiceImpl implements DomainService {
@Override
public String addDomains(Domains d) throws MyTimeException {
String response=null;
List<Domains> domainList=domainRepo.findByDomainNameAndAccountName(d.getDomainName(),d.getAccountName());
List<Domains> domainList=domainRepo.findByDomainNameAndAccountId(d.getDomainName(), d.getAccountId());
if(domainList.size()>0) {
response="Domain already exists";
......@@ -77,20 +79,26 @@ public class DomainServiceImpl implements DomainService {
domainList=domainRepo.findAll();
updatedDomainList = new ArrayList<>();
Map<String, String> accountMap = new HashMap<String, String>();
for (Domains domain : domainList) {
HashMap<Object, Object> domainMap = new HashMap<>();
domainMap.put(MyTimeUtils.ID,domain.getId());
domainMap.put(MyTimeUtils.DOMAIN_ID, domain.getDomainId());
domainMap.put(MyTimeUtils.DOMAIN_NAME,domain.getDomainName());
domainMap.put(MyTimeUtils.ACCOUNT_NAME,domain.getAccountName());
domainMap.put(MyTimeUtils.STATUS,domain.getStatus());
updatedEmployeeList = new ArrayList<>();
List<String> employeeIds=domain.getDeliveryManagers();
String accountId=domain.getAccountId();
Query accountInfoQuery = new Query(Criteria.where("accountId").in(accountId));
List<AccountInfo> accountList = mongoTemplate.find(accountInfoQuery, AccountInfo.class);
accountMap.put("Account Id", accountId);
accountMap.put("Account Name", accountList.get(0).getAccountName());
domainMap.put("AccountInfo", accountMap);
Query query = new Query(Criteria.where(MyTimeUtils.EMPLOYEE_ID).in(employeeIds));
updatedEmployeeList = new ArrayList<>();
List<String> employeeIds=domain.getDeliveryManagers();
Query query = new Query(Criteria.where(MyTimeUtils.EMPLOYEE_ID).in(employeeIds));
List<EmployeeRoles> employeeRoles = mongoTemplate.find(query, EmployeeRoles.class);
for(EmployeeRoles employeesRole : employeeRoles){
HashMap<String, String> employeeMap = new HashMap<>();
employeeMap.put(MyTimeUtils.EMPLOYEE_ID,employeesRole.getEmployeeId());
......@@ -98,6 +106,7 @@ public class DomainServiceImpl implements DomainService {
updatedEmployeeList.add(employeeMap);
}
domainMap.put(MyTimeUtils.DELIVERY_MANAGERS,updatedEmployeeList);
updatedDomainList.add(domainMap);
}
return updatedDomainList;
......@@ -105,31 +114,48 @@ public class DomainServiceImpl implements DomainService {
@Override
public String updateDomain(Domains d) throws MyTimeException{
String response=null;
List<String> domEmpIds=new ArrayList<String>();
List<String> updatedEmpIds=new ArrayList<String>();
domainList=domainRepo.findAll();
String roleId = roleInfoService.getRole(MyTimeUtils.DOMAIN);
for (Domains domain : domainList) {
List<String> employeeIds=domain.getDeliveryManagers();
for(String eIds:employeeIds)
domEmpIds.add(eIds);
}
d.setStatus(MyTimeUtils.ACTIVE);
domainRepo.save(d);
Query selectedDomainQuery = new Query(Criteria.where(MyTimeUtils.DOMAIN_ID).in(d.getDomainId()).and(MyTimeUtils.STATUS).in(MyTimeUtils.ACTIVE) );
List<Domains> selectedDomain = mongoTemplate.find(selectedDomainQuery, Domains.class);
for (String empId : selectedDomain.get(0).getDeliveryManagers()) {
int occurrences = Collections.frequency(domEmpIds, empId);
if(occurrences==0) {
//roleMappingService.saveUniqueEmployeeAndRole(empId, roleId);
updatedEmpIds.add(empId);
}
}
roleMappingService.saveUniqueEmployeeAndRole(updatedEmpIds, roleId);
String response = null;
List<String> deliveryManagersListFromUser = null;
List<String> deliveryManagersListFromDb = null;
List<String> managersAddedByUser = null;
List<String> managersDeletedByUser = null;
Map<String, Integer> managersDomainCount = new HashMap<String,Integer>();
Domains domainDetailsFromDb = getDomainById(d.getDomainId());
deliveryManagersListFromUser = d.getDeliveryManagers();
if (null != domainDetailsFromDb)
deliveryManagersListFromDb = domainDetailsFromDb.getDeliveryManagers();
managersAddedByUser = getAddedManagersList(deliveryManagersListFromDb, deliveryManagersListFromUser);
managersDeletedByUser = getDeletedManagersList(deliveryManagersListFromDb, deliveryManagersListFromUser);
domainList = domainRepo.findAll();
String roleId = roleInfoService.getRole(MyTimeUtils.DOMAIN);
for (Domains domain : domainList) {
List<String> employeeIds = domain.getDeliveryManagers();
for (String eId : employeeIds) {
if(managersDomainCount.get(eId)!=null)
managersDomainCount.put(eId, managersDomainCount.get(eId)+1);
else
managersDomainCount.put(eId, 1);
}
}
for(String managerId : managersDeletedByUser) {
if(managersDomainCount.get(managerId)==1) {
// Call service to delete manager
roleMappingService.deleteRole(managerId,roleId);
}
}
d.setStatus(MyTimeUtils.ACTIVE);
domainRepo.save(d);
roleMappingService.saveUniqueEmployeeAndRole(managersAddedByUser, roleId);
return response;
}
@Override
public WriteResult deleteDomain(String id) throws MyTimeException{
List<String> domEmpIds=new ArrayList<String>();
......@@ -155,4 +181,34 @@ public class DomainServiceImpl implements DomainService {
update.set(MyTimeUtils.STATUS,MyTimeUtils.IN_ACTIVE);
return mongoTemplate.upsert(selectedDomainQuery, update,Domains.class);
}
//Custom methods
private Domains getDomainById(String id) {
Query selectedDomainQuery = new Query(Criteria.where(MyTimeUtils.DOMAIN_ID).in(id).and(MyTimeUtils.STATUS).in(MyTimeUtils.ACTIVE) );
List<Domains> selectedDomain = mongoTemplate.find(selectedDomainQuery, Domains.class);
if(selectedDomain.size()==1)
return selectedDomain.get(0);
return null;
}
private List<String> getAddedManagersList(List<String> fromDb, List<String> fromUser) {
List<String> addedManagers = new ArrayList<String>();
if (fromDb != null)
for (String managerFromUser : fromUser) {
if (!fromDb.contains(managerFromUser))
addedManagers.add(managerFromUser);
}
return addedManagers;
}
private List<String> getDeletedManagersList(List<String> fromDb, List<String> fromUser) {
List<String> deletedManager = new ArrayList<String>();
if (fromDb != null)
for (String managerFromDb : fromDb) {
if (!fromUser.contains(managerFromDb))
deletedManager.add(managerFromDb);
}
return deletedManager;
}
}
\ No newline at end of file
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