Search in sources :

Example 1 with EmailVerificationStatus

use of org.pmiops.workbench.model.EmailVerificationStatus in project workbench by all-of-us.

the class ProfileService method getProfile.

public Profile getProfile(User user) throws ApiException {
    // Fetch the user's authorities, since they aren't loaded during normal request interception.
    User userWithAuthorities = userDao.findUserWithAuthorities(user.getUserId());
    if (userWithAuthorities != null) {
        // If the user is already written to the database, use it and whatever authorities are there.
        user = userWithAuthorities;
    }
    boolean enabledInFireCloud = fireCloudService.isRequesterEnabledInFirecloud();
    Profile profile = new Profile();
    profile.setUserId(user.getUserId());
    profile.setUsername(user.getEmail());
    profile.setFamilyName(user.getFamilyName());
    profile.setGivenName(user.getGivenName());
    profile.setContactEmail(user.getContactEmail());
    profile.setPhoneNumber(user.getPhoneNumber());
    profile.setFreeTierBillingProjectName(user.getFreeTierBillingProjectName());
    profile.setFreeTierBillingProjectStatus(user.getFreeTierBillingProjectStatus());
    profile.setEnabledInFireCloud(enabledInFireCloud);
    if (user.getBlockscoreVerificationIsValid() == null) {
        profile.setBlockscoreIdVerificationStatus(BlockscoreIdVerificationStatus.UNVERIFIED);
    } else if (user.getBlockscoreVerificationIsValid() == false) {
        profile.setBlockscoreIdVerificationStatus(BlockscoreIdVerificationStatus.REJECTED);
    } else {
        profile.setBlockscoreIdVerificationStatus(BlockscoreIdVerificationStatus.VERIFIED);
    }
    if (user.getTermsOfServiceCompletionTime() != null) {
        profile.setTermsOfServiceCompletionTime(user.getTermsOfServiceCompletionTime().getTime());
    }
    if (user.getEthicsTrainingCompletionTime() != null) {
        profile.setEthicsTrainingCompletionTime(user.getEthicsTrainingCompletionTime().getTime());
    }
    if (user.getDemographicSurveyCompletionTime() != null) {
        profile.setDemographicSurveyCompletionTime(user.getDemographicSurveyCompletionTime().getTime());
    }
    if (user.getDataAccessLevel() != null) {
        profile.setDataAccessLevel(user.getDataAccessLevel());
    }
    if (user.getAuthorities() != null) {
        profile.setAuthorities(new ArrayList<>(user.getAuthorities()));
    }
    EmailVerificationStatus userEmailVerificationStatus = user.getEmailVerificationStatus();
    // if verification is pending or unverified, need to query MailChimp and update DB accordingly
    if (!userEmailVerificationStatus.equals(EmailVerificationStatus.SUBSCRIBED)) {
        if (userEmailVerificationStatus.equals(EmailVerificationStatus.UNVERIFIED) && user.getContactEmail() != null) {
            mailChimpService.addUserContactEmail(user.getContactEmail());
            userEmailVerificationStatus = EmailVerificationStatus.PENDING;
        } else if (userEmailVerificationStatus.equals(EmailVerificationStatus.PENDING)) {
            userEmailVerificationStatus = EmailVerificationStatus.fromValue(mailChimpService.getMember(user.getContactEmail()));
        }
        user.setEmailVerificationStatus(userEmailVerificationStatus);
        userDao.save(user);
    }
    profile.setEmailVerificationStatus(user.getEmailVerificationStatus());
    return profile;
}
Also used : User(org.pmiops.workbench.db.model.User) EmailVerificationStatus(org.pmiops.workbench.model.EmailVerificationStatus) Profile(org.pmiops.workbench.model.Profile)

Aggregations

User (org.pmiops.workbench.db.model.User)1 EmailVerificationStatus (org.pmiops.workbench.model.EmailVerificationStatus)1 Profile (org.pmiops.workbench.model.Profile)1