DoubleOptInComponent.java
package sk.iway.iwcm.components.form;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.ui.ModelMap;
import sk.iway.iwcm.Adminlog;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.components.WebjetComponentAbstract;
import sk.iway.iwcm.database.SimpleQuery;
import sk.iway.iwcm.i18n.Prop;
import sk.iway.iwcm.system.annotations.DefaultHandler;
import sk.iway.iwcm.system.annotations.WebjetComponent;
@WebjetComponent("sk.iway.iwcm.components.form.DoubleOptInComponent")
public class DoubleOptInComponent extends WebjetComponentAbstract {
public enum Status {
SUCCESS,
ALREADY_CONFIRMED,
FAIL
}
private final String VIEW = "/components/form/double_opt_in";
@SuppressWarnings("unchecked")
@DefaultHandler
public String render(HttpServletRequest request, ModelMap model, Integer formId, String hash) {
Status status = Status.FAIL;
if (formId != null && formId.intValue() > 0 && Tools.isNotEmpty(hash)) {
SimpleQuery simpleQuery = new SimpleQuery();
List<String> list = simpleQuery.forList("SELECT * FROM forms WHERE id = ? AND double_optin_hash = ?", formId, hash);
if (list.size() == 1) {
list = simpleQuery.forList("SELECT * FROM forms WHERE id = ? AND double_optin_hash = ? AND double_optin_confirmation_date IS NOT NULL", formId, hash);
if (list.size() > 0) {
status = Status.ALREADY_CONFIRMED;
}
else {
simpleQuery.execute("UPDATE forms SET double_optin_confirmation_date = ? WHERE id = ? AND double_optin_hash = ?", new Timestamp(new Date().getTime()), formId, hash);
status = Status.SUCCESS;
Adminlog.add(Adminlog.TYPE_FORMMAIL, Tools.getUserId(request), String.format("Double opt in success, formId: %d, hash: %s", formId, hash), formId, 0, new Timestamp(new Date().getTime()));
}
}
}
Prop prop = Prop.getInstance(request);
model.addAttribute("status", status);
model.addAttribute("text", prop.getText("doubleoptin.confirm_text." + status.name().toLowerCase()));
model.addAttribute("title", prop.getText("doubleoptin.confirm_title." + status.name().toLowerCase()));
return VIEW;
}
@Override
public String getViewFolder() {
return null;
}
}