UnsubscribedRestController.java
package sk.iway.iwcm.dmail.rest;
import java.util.Date;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.common.CloudToolsForCore;
import sk.iway.iwcm.dmail.DmailUtil;
import sk.iway.iwcm.dmail.jpa.UnsubscribedEntity;
import sk.iway.iwcm.dmail.jpa.UnsubscribedRepository;
import sk.iway.iwcm.system.datatable.Datatable;
import sk.iway.iwcm.system.datatable.DatatableRestControllerV2;
/**
* Odhlasene emaily z hromadneho mailingu
*/
@RestController
@RequestMapping("/admin/rest/dmail/unsubscribed")
@PreAuthorize("@WebjetSecurityService.hasPermission('menuEmail')")
@Datatable
public class UnsubscribedRestController extends DatatableRestControllerV2<UnsubscribedEntity, Long> {
@Autowired
public UnsubscribedRestController(UnsubscribedRepository unsubscribedRepository) {
super(unsubscribedRepository);
}
@Override
public UnsubscribedEntity insertItem(UnsubscribedEntity entity) {
Set<String> unsubscribedEmails = DmailUtil.getUnsubscribedEmails();
entity.setEmail(entity.getEmail().toLowerCase());
if (unsubscribedEmails.contains(entity.getEmail())) return null;
return super.insertItem(entity);
}
@Override
public void beforeSave(UnsubscribedEntity entity) {
//Set date created
if (entity.getCreateDate()==null) entity.setCreateDate(new Date());
//do pola je mozne zadat viacero email adries, ulozime vsetky zadane
String[] emails = Tools.getTokens(entity.getEmail(), ", ;\n", true);
if (emails.length>0) {
for (int i=0; i<emails.length; i++) {
String email = emails[i].trim().toLowerCase();
if (Tools.isEmail(email)==false) {
throwConstraintViolation(getProp().getText("components.dmail.unsubscribe.email.error", email));
}
if (i==0) entity.setEmail(email);
else {
//musime vytvorit novu entitu a ulozit separe, je mozne zadat viac email adries
UnsubscribedEntity e = new UnsubscribedEntity();
e.setEmail(email);
e.setCreateDate(new Date());
e.setDomainId(CloudToolsForCore.getDomainId());
insertItem(e);
}
}
}
}
}