aboutsummaryrefslogtreecommitdiff
path: root/juick-server-jdbc/src/main/java/com/juick/service/EmailServiceImpl.java
blob: b0bf9e20b4edbc379f1e9ca843cca95bd54260e5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package com.juick.service;

import org.apache.commons.lang3.StringUtils;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import javax.inject.Inject;

/**
 * Created by vitalyster on 09.12.2016.
 */
@Repository
@Transactional
public class EmailServiceImpl extends BaseJdbcService implements EmailService {
    @Inject
    public EmailServiceImpl(JdbcTemplate jdbcTemplate) {
        super(jdbcTemplate, null);
    }

    @Override
    public boolean verifyAddressByCode(Integer userId, String code) {
        try {
            String address = getJdbcTemplate().queryForObject("SELECT account FROM auth WHERE user_id=? AND protocol='email' AND authcode=?",
                    String.class, userId, code);
            getJdbcTemplate().update("INSERT INTO emails(user_id,email) VALUES (?,?)", userId, address);
            getJdbcTemplate().update("DELETE FROM auth WHERE user_id=? AND authcode=?", userId, code);
        } catch (EmptyResultDataAccessException e) {
            return false;
        }
        return true;
    }

    @Override
    public boolean addVerificationCode(Integer userId, String account, String code) {
        return getJdbcTemplate().update("INSERT INTO auth(user_id,protocol,account,authcode) VALUES (?,'email',?,?)",
                userId, account, code) > 0;
    }

    @Override
    public boolean deleteEmail(Integer userId, String account) {
        return getJdbcTemplate().update("DELETE FROM emails WHERE user_id=? AND email=?", userId, account) > 0;
    }

    @Override
    public boolean setSubscriptionHour(Integer userId, String account, String hour) {
        getJdbcTemplate().update("UPDATE emails SET subscr_hour=NULL WHERE user_id=?", userId);
        return StringUtils.isNotEmpty(account) && getJdbcTemplate().update(
                "UPDATE emails SET subscr_hour=? WHERE user_id=? AND email=?", hour, userId, account) > 0;
    }
}