@Override @Transactional( readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Exception.class) public void inviteUserForClass(List<String> emails, final String classUid, final User user) { final UserClass userClass = this.getClassRepository().getClassById(classUid); rejectIfNull(userClass, GL0056, 404, CLASS); // To Do, Fix me CustomTableValue status = this.getCustomTableRepository().getCustomTableValue(INVITE_USER_STATUS, PENDING); List<String> emailIds = new ArrayList<String>(); User creator = getUserRepository().findByGooruId(userClass.getUserUid()); for (String email : emails) { InviteUser inviteUser = this.getInviteRepository().findInviteUserById(email, userClass.getPartyUid(), null); if (inviteUser == null) { inviteUser = new InviteUser(email, userClass.getPartyUid(), CLASS, user, status); this.getInviteRepository().save(inviteUser); emailIds.add(email); } try { String courseGooruOid = null; if (userClass.getCourseContentId() != null) { Content content = this.getContentRepository().findByContent(userClass.getCourseContentId()); if (content != null) { courseGooruOid = content.getGooruOid(); } } if (userClass.getVisibility() != null && !userClass.getVisibility()) { this.getMailHandler() .sendMailToInviteUser( email, userClass.getPartyUid(), creator, userClass.getName(), user.getUsername(), userClass.getGroupCode(), courseGooruOid); } else { this.getMailHandler() .sendMailToOpenClassUser( email, userClass.getPartyUid(), creator, userClass.getName(), user.getUsername(), userClass.getGroupCode(), courseGooruOid); } } catch (Exception e) { LOGGER.error(ERROR, e); } } }