diff --git a/cust-services/src/main/java/de/hsadmin/service/customer/ContactService.java b/cust-services/src/main/java/de/hsadmin/service/customer/ContactService.java index 7bb414c..fa3cb81 100644 --- a/cust-services/src/main/java/de/hsadmin/service/customer/ContactService.java +++ b/cust-services/src/main/java/de/hsadmin/service/customer/ContactService.java @@ -1,6 +1,8 @@ package de.hsadmin.service.customer; +import java.util.ArrayList; import java.util.List; +import java.util.Set; import javax.ejb.EJB; import javax.ejb.Stateless; @@ -9,6 +11,7 @@ import javax.persistence.PersistenceContext; import javax.persistence.Query; import de.hsadmin.bo.customer.Contact; +import de.hsadmin.bo.customer.Customer; import de.hsadmin.common.error.TechnicalException; import de.hsadmin.common.error.UserException; import de.hsadmin.dao.customer.CustomerDao; @@ -39,7 +42,22 @@ public class ContactService extends AbstractModule implements Contact throws UserException, TechnicalException { final ContactVO vo = super.create(requestContext, prototype); final Contact bo = new Contact(); - bo.setCustomer(customerDao.findCustomerByName(prototype.getCustomer())); + final Customer cust = customerDao.findCustomerByName(prototype.getCustomer()); + final Set existingContacts = cust.getContacts(); + final String[] givenRoles = vo.getRoles(); + if ((existingContacts == null || existingContacts.isEmpty()) && (givenRoles == null || givenRoles.length == 0)) { + final Query query = entityManager.createNativeQuery("SELECT role_name FROM role"); + final List rolesList = query.getResultList(); + final List roles = new ArrayList<>(); + for (int idx = 0; idx < rolesList.size(); idx++) { + final Object role = rolesList.get(idx); + if (role instanceof String) { + roles.add((String) role); + } + } + bo.setRoles(roles); + } + bo.setCustomer(cust); vo.copyPropertiesToPersistentObject(bo); entityManager.persist(bo); final Contact newBO = findContactByNames(vo);