@Override public void sendDelegationRequestEmail(OrcidProfile managed, OrcidProfile trusted, String link) { // Create map of template params String orcid = managed.getOrcidIdentifier().getPath(); Map<String, Object> templateParams = new HashMap<String, Object>(); templateParams.put("baseUri", orcidUrlManager.getBaseUrl()); templateParams.put("baseUriHttp", orcidUrlManager.getBaseUriHttp()); templateParams.put("link", link); String trustedOrcidValue = trusted.retrieveOrcidPath(); String managedOrcidValue = managed.retrieveOrcidPath(); String emailNameForDelegate = deriveEmailFriendlyName(managed); String trustedOrcidName = deriveEmailFriendlyName(trusted); templateParams.put("emailNameForDelegate", emailNameForDelegate); templateParams.put("trustedOrcidName", trustedOrcidName); templateParams.put("trustedOrcidValue", trustedOrcidValue); templateParams.put("managedOrcidValue", managedOrcidValue); Email primaryEmail = managed.getOrcidBio().getContactDetails().retrievePrimaryEmail(); if (primaryEmail == null) { LOGGER.info("Cant send admin delegate email if primary email is null: {}", orcid); return; } addMessageParams(templateParams, managed); String htmlBody = templateManager.processTemplate("admin_delegate_request_html.ftl", templateParams); // Send message if (apiRecordCreationEmailEnabled) { String subject = getSubject("email.subject.admin_as_delegate", managed, trustedOrcidName); ProfileEntity trustedProfileEntity = profileDao.find(trusted.getOrcidIdentifier().getPath()); boolean notificationsEnabled = trustedProfileEntity != null ? trustedProfileEntity.getEnableNotifications() : false; if (notificationsEnabled) { NotificationCustom notification = new NotificationCustom(); notification.setNotificationType(NotificationType.CUSTOM); notification.setSubject(subject); notification.setBodyHtml(htmlBody); createNotification(managed.getOrcidIdentifier().getPath(), notification); } else { mailGunManager.sendEmail( DELEGATE_NOTIFY_ORCID_ORG, primaryEmail.getValue(), subject, null, htmlBody); } profileEventDao.persist( new ProfileEventEntity(orcid, ProfileEventType.ADMIN_PROFILE_DELEGATION_REQUEST)); } else { LOGGER.debug( "Not sending admin delegate email, because API record creation email option is disabled. Message would have been: {}", htmlBody); } }
@Override public void sendClaimReminderEmail(OrcidProfile orcidProfile, int daysUntilActivation) { // Create map of template params Map<String, Object> templateParams = new HashMap<String, Object>(); templateParams.put("emailName", deriveEmailFriendlyName(orcidProfile)); String orcid = orcidProfile.getOrcidIdentifier().getPath(); templateParams.put("orcid", orcid); templateParams.put("subject", getSubject("email.subject.claim_reminder", orcidProfile)); Source source = orcidProfile.getOrcidHistory().getSource(); String creatorName = ""; if (source != null) { if (source.getSourceName() != null && source.getSourceName().getContent() != null) { creatorName = source.getSourceName().getContent(); } else { creatorName = source.retrieveSourcePath(); } } templateParams.put("creatorName", creatorName); templateParams.put("baseUri", orcidUrlManager.getBaseUrl()); templateParams.put("baseUriHttp", orcidUrlManager.getBaseUriHttp()); templateParams.put("daysUntilActivation", daysUntilActivation); Email primaryEmail = orcidProfile.getOrcidBio().getContactDetails().retrievePrimaryEmail(); if (primaryEmail == null) { LOGGER.info("Cant send claim reminder email if primary email is null: {}", orcid); return; } String verificationUrl = createClaimVerificationUrl(primaryEmail.getValue(), orcidUrlManager.getBaseUrl()); templateParams.put("verificationUrl", verificationUrl); addMessageParams(templateParams, orcidProfile); String email = orcidProfile.getOrcidBio().getContactDetails().retrievePrimaryEmail().getValue(); // Generate body from template String body = templateManager.processTemplate("claim_reminder_email.ftl", templateParams); String htmlBody = templateManager.processTemplate("claim_reminder_email_html.ftl", templateParams); // Send message if (apiRecordCreationEmailEnabled) { mailGunManager.sendEmail( CLAIM_NOTIFY_ORCID_ORG, email, getSubject("email.subject.claim_reminder", orcidProfile), body, htmlBody); profileEventDao.persist(new ProfileEventEntity(orcid, ProfileEventType.CLAIM_REMINDER_SENT)); } else { LOGGER.debug( "Not sending claim reminder email, because API record creation email option is disabled. Message would have been: {}", body); } }
/** Creates an external identifier in the org_disambiguated_external_identifier table */ private boolean createExternalIdentifier( OrgDisambiguatedEntity disambiguatedOrg, String identifier) { LOGGER.info("Creating external identifier for {}", disambiguatedOrg.getId()); Date creationDate = new Date(); OrgDisambiguatedExternalIdentifierEntity externalIdentifier = new OrgDisambiguatedExternalIdentifierEntity(); externalIdentifier.setIdentifier(identifier); externalIdentifier.setIdentifierType(FUNDREF_SOURCE_TYPE); externalIdentifier.setOrgDisambiguated(disambiguatedOrg); externalIdentifier.setDateCreated(creationDate); externalIdentifier.setLastModified(creationDate); orgDisambiguatedExternalIdentifierDao.persist(externalIdentifier); return true; }