Summary Table
Categories |
Total Count |
PII |
0 |
URL |
0 |
DNS |
0 |
EKL |
0 |
IP |
0 |
PORT |
0 |
VsID |
0 |
CF |
0 |
AI |
0 |
VPD |
0 |
PL |
0 |
Other |
0 |
File Content
package gov.va.med.ars.service.impl;
import java.util.AbstractMap.SimpleEntry;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.collections.CollectionUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import gov.va.med.ars.constants.ErrorMessages;
import gov.va.med.ars.dao.ars.ArsUserRoleUsagesRepository;
import gov.va.med.ars.dao.ars.IArsRole;
import gov.va.med.ars.dao.ars.IArsUserRepository;
import gov.va.med.ars.exceptions.GenericException;
import gov.va.med.ars.model.request.UserSearchRequest;
import gov.va.med.ars.service.IUserAdminService;
import gov.va.med.domain.ars.ArsRole;
import gov.va.med.domain.ars.ArsUser;
import gov.va.med.domain.ars.ArsUserRoleUsages;
import gov.va.med.domain.ars.ArsUserRoleUsagesId;
@Service
public class UserAdminServiceImpl implements IUserAdminService {
private static final Logger logger = LogManager.getLogger(UserAdminServiceImpl.class);
@Autowired
IArsUserRepository arsUserRepo;
@Autowired
ArsUserRoleUsagesRepository roleUsagesRepo;
@Autowired
IArsRole arsRoleRepo;
@Override
public SimpleEntry <String,Boolean> createUser(UserSearchRequest request) throws GenericException {
ArsUser arsUser = null;
if(CollectionUtils.isNotEmpty(arsRoleRepo.findBySystem(request.getSystem()))) {
arsUser = arsUserRepo.findByUserNameAndSystem(request.getUserName(), request.getSystem());
if(arsUser != null) {
return new SimpleEntry <>("Username already exists.", false);
} else {
arsUser = arsUserRepo.findByUserNameIgnoreCase(request.getUserName().trim());
if(arsUser == null) {
arsUser = new ArsUser();
arsUser.setCreatedBy(request.getCreatedBy());
arsUser.setDateCreated(new Date());
} else {
arsUser.setDateCreated(new Date());
arsUser.setModifiedBy(request.getCreatedBy());
}
arsUser.setUserName(request.getUserName().trim());
arsUser.setLastName(request.getLastName().trim());
arsUser.setFirstName(request.getFirstName().trim());
arsUser.setPhoneNumber(request.getPhone());
arsUser.setEmailAddress(request.getEmail().trim());
arsUser.setDomain(request.getDomain().trim());
try {
arsUser = arsUserRepo.save(arsUser);
} catch (Exception e) {
logger.error("Internal server error occured in saving the Ars User information: "+e.getMessage(), e);
throw new GenericException(ErrorMessages.INTERNAL_SERVER_ERROR, "error occured in saving user information", HttpStatus.INTERNAL_SERVER_ERROR);
}
//check if the data in the system variable matches with the data in the database
if(CollectionUtils.isNotEmpty(request.getUserRoles())) {
List<ArsRole> arsRolesRequestedForUser = arsRoleRepo.findByRoleNameIn(request.getUserRoles());
setArsRoleUsages(arsRolesRequestedForUser, arsUser);
} else {
return new SimpleEntry <>("Error in creating user",false);
}
}
return new SimpleEntry <>("success",true);
} else {
return new SimpleEntry <>("Error in creating user due to invalid system name",false);
}
}
private void setArsRoleUsages(List<ArsRole> rolesListBySystem, ArsUser arsUser) throws GenericException {
List<ArsUserRoleUsages> arsUserRoleUsagesList = new ArrayList<>();
for(ArsRole arsRole : rolesListBySystem) {
ArsUserRoleUsages arsUserRoleUsages = new ArsUserRoleUsages();
arsUserRoleUsages.setId(new ArsUserRoleUsagesId(arsRole.getArsRoleId(), arsUser.getArsUserId()));
arsUserRoleUsages.setArsUser(arsUser);
arsUserRoleUsages.setArsRole(arsRole);
arsUserRoleUsages.setCreatedBy(arsUser.getCreatedBy());
arsUserRoleUsages.setDateCreated(new Date());
arsUserRoleUsagesList.add(arsUserRoleUsages);
}
try {
roleUsagesRepo.save(arsUserRoleUsagesList);
} catch (Exception e) {
logger.error("saveUserRole: Assignng the roles to the created user failed, userId: " + arsUser.getArsUserId());
throw new GenericException(ErrorMessages.INTERNAL_SERVER_ERROR, "Internal Server Error", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}