Search in sources :

Example 6 with Email

use of com.pratilipi.data.type.Email in project pratilipi by Pratilipi.

the class EmailDataUtil method _sendConsolidatedEmail.

private static void _sendConsolidatedEmail(Long userId, List<Email> emailList) throws UnexpectedServerException {
    DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
    UserData user = UserDataUtil.createUserData(dataAccessor.getUser(userId));
    // Dropping mails if user doesn't have name or language
    if (user.getDisplayName() == null || user.getLanguage() == null) {
        for (Email email : emailList) {
            email.setState(EmailState.DROPPED);
            email.setLastUpdated(new Date());
        }
        emailList = dataAccessor.createOrUpdateEmailList(emailList);
        return;
    }
    String consolidatedContent = new String();
    for (Email email : emailList) {
        if (email.getState() != EmailState.IN_PROGRESS)
            continue;
        if (!_isToday(email.getScheduledDate()) && email.getScheduledDate().before(new Date())) {
            email.setState(EmailState.DROPPED);
            email.setLastUpdated(new Date());
            continue;
        }
        consolidatedContent = consolidatedContent + _getContentSnippet(email, user.getLanguage());
        email.setState(EmailState.SENT);
        email.setLastUpdated(new Date());
    }
    if (consolidatedContent.isEmpty()) {
        // No IN_PROGRESS emails
        dataAccessor.createOrUpdateEmailList(emailList);
        return;
    }
    String content = EmailTemplateUtil.getEmailBody(consolidatedContent, user.getLanguage());
    Pattern senderNamePattern = Pattern.compile("<!-- SENDER_NAME:(.+?) -->");
    Pattern senderEmailPattern = Pattern.compile("<!-- SENDER_EMAIL:(.+?) -->");
    String senderName = null;
    String senderEmail = null;
    String subject = dataAccessor.getI18nStrings(I18nGroup.EMAIL, user.getLanguage()).get("email_consolidated_subject");
    Matcher m = null;
    if ((m = senderNamePattern.matcher(content)).find())
        senderName = m.group(1).trim();
    if ((m = senderEmailPattern.matcher(content)).find())
        senderEmail = m.group(1).trim();
    EmailUtil.sendMail(senderName, senderEmail, user.getDisplayName(), user.getEmail(), subject, content);
    dataAccessor.createOrUpdateEmailList(emailList);
    _updateUserEntity(userId);
}
Also used : Pattern(java.util.regex.Pattern) Email(com.pratilipi.data.type.Email) UserData(com.pratilipi.data.client.UserData) Matcher(java.util.regex.Matcher) DataAccessor(com.pratilipi.data.DataAccessor) Date(java.util.Date)

Example 7 with Email

use of com.pratilipi.data.type.Email in project pratilipi by Pratilipi.

the class AuditLogProcessApi method _createUserPratilipiReviewEmail.

private Email _createUserPratilipiReviewEmail(UserPratilipi userPratilipi, Author author) {
    DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
    if (author.getUserId() == null)
        return null;
    Email email = dataAccessor.getEmail(author.getUserId(), EmailType.USER_PRATILIPI_REVIEW, userPratilipi.getId());
    if (email == null) {
        email = dataAccessor.newEmail(author.getUserId(), EmailType.USER_PRATILIPI_REVIEW, userPratilipi.getId());
    } else if (email.getState() == EmailState.DEFERRED) {
        email.setState(EmailState.PENDING);
        email.setLastUpdated(new Date());
    } else {
        // Do nothing
        return null;
    }
    return email;
}
Also used : Email(com.pratilipi.data.type.Email) DataAccessor(com.pratilipi.data.DataAccessor) Date(java.util.Date)

Example 8 with Email

use of com.pratilipi.data.type.Email in project pratilipi by Pratilipi.

the class AuditLogProcessApi method _createUserAuthorFollowingEmail.

private Email _createUserAuthorFollowingEmail(UserAuthor userAuthor, Author author) {
    DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
    if (// Followed
    author.getUserId() == null)
        return null;
    Email email = dataAccessor.getEmail(author.getUserId(), EmailType.AUTHOR_FOLLOW, userAuthor.getId());
    if (email == null) {
        email = dataAccessor.newEmail(author.getUserId(), EmailType.AUTHOR_FOLLOW, userAuthor.getId());
    } else if (email.getState() == EmailState.DEFERRED) {
        email.setState(EmailState.PENDING);
        email.setLastUpdated(new Date());
    } else {
        // Do nothing
        return null;
    }
    return email;
}
Also used : Email(com.pratilipi.data.type.Email) DataAccessor(com.pratilipi.data.DataAccessor) Date(java.util.Date)

Example 9 with Email

use of com.pratilipi.data.type.Email in project pratilipi by Pratilipi.

the class AuditLogProcessApi method _createCommentAddedReviewerEmail.

private Email _createCommentAddedReviewerEmail(UserPratilipi userPratilipi, Comment comment) {
    DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
    Email email = dataAccessor.getEmail(userPratilipi.getUserId(), EmailType.COMMENT_REVIEW_REVIEWER, comment.getId());
    if (email == null) {
        email = dataAccessor.newEmail(userPratilipi.getUserId(), EmailType.COMMENT_REVIEW_REVIEWER, comment.getId());
    } else if (email.getState() == EmailState.DEFERRED) {
        email.setState(EmailState.PENDING);
        email.setLastUpdated(new Date());
    } else {
        // Do nothing
        return null;
    }
    return email;
}
Also used : Email(com.pratilipi.data.type.Email) DataAccessor(com.pratilipi.data.DataAccessor) Date(java.util.Date)

Example 10 with Email

use of com.pratilipi.data.type.Email in project pratilipi by Pratilipi.

the class AuditLogProcessApi method _createPratilipiPublishedEmail.

private Email _createPratilipiPublishedEmail(Pratilipi pratilipi, Author author) {
    DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
    if (author.getUserId() == null)
        return null;
    Email email = dataAccessor.getEmail(author.getUserId(), EmailType.PRATILIPI_PUBLISHED_AUTHOR, pratilipi.getId());
    if (email == null) {
        email = dataAccessor.newEmail(author.getUserId(), EmailType.PRATILIPI_PUBLISHED_AUTHOR, pratilipi.getId());
    } else if (email.getState() == EmailState.DEFERRED) {
        email.setState(EmailState.PENDING);
        email.setLastUpdated(new Date());
    } else {
        // Do nothing
        return null;
    }
    return email;
}
Also used : Email(com.pratilipi.data.type.Email) DataAccessor(com.pratilipi.data.DataAccessor) Date(java.util.Date)

Aggregations

DataAccessor (com.pratilipi.data.DataAccessor)13 Email (com.pratilipi.data.type.Email)13 Date (java.util.Date)11 ArrayList (java.util.ArrayList)5 HashSet (java.util.HashSet)3 Get (com.pratilipi.api.annotation.Get)2 GenericResponse (com.pratilipi.api.shared.GenericResponse)2 UserData (com.pratilipi.data.client.UserData)2 User (com.pratilipi.data.type.User)2 UserPreferenceRtdb (com.pratilipi.data.type.UserPreferenceRtdb)2 LinkedList (java.util.LinkedList)2 Matcher (java.util.regex.Matcher)2 Pattern (java.util.regex.Pattern)2 GsonLongDateAdapter (com.pratilipi.common.util.GsonLongDateAdapter)1 RtdbAccessor (com.pratilipi.data.RtdbAccessor)1 AppProperty (com.pratilipi.data.type.AppProperty)1 AuditLog (com.pratilipi.data.type.AuditLog)1 Author (com.pratilipi.data.type.Author)1 Comment (com.pratilipi.data.type.Comment)1 Pratilipi (com.pratilipi.data.type.Pratilipi)1