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