EmailServiceImpl.java
Home
/
sm-core /
src /
main /
java /
com /
salesmanager /
core /
business /
services /
system /
EmailServiceImpl.java
package com.salesmanager.core.business.services.system;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.salesmanager.core.business.constants.Constants;
import com.salesmanager.core.business.exception.ServiceException;
import com.salesmanager.core.business.modules.email.Email;
import com.salesmanager.core.business.modules.email.EmailConfig;
import com.salesmanager.core.business.modules.email.HtmlEmailSender;
import com.salesmanager.core.model.merchant.MerchantStore;
import com.salesmanager.core.model.system.MerchantConfiguration;
@Service("emailService")
public class EmailServiceImpl implements EmailService {
@Inject
private MerchantConfigurationService merchantConfigurationService;
@Inject
private HtmlEmailSender sender;
@Override
public void sendHtmlEmail(MerchantStore store, Email email) throws ServiceException, Exception {
EmailConfig emailConfig = getEmailConfiguration(store);
sender.setEmailConfig(emailConfig);
sender.send(email);
}
@Override
public EmailConfig getEmailConfiguration(MerchantStore store) throws ServiceException {
MerchantConfiguration configuration = merchantConfigurationService.getMerchantConfiguration(Constants.EMAIL_CONFIG, store);
EmailConfig emailConfig = null;
if(configuration!=null) {
String value = configuration.getValue();
ObjectMapper mapper = new ObjectMapper();
try {
emailConfig = mapper.readValue(value, EmailConfig.class);
} catch(Exception e) {
throw new ServiceException("Cannot parse json string " + value);
}
}
return emailConfig;
}
@Override
public void saveEmailConfiguration(EmailConfig emailConfig, MerchantStore store) throws ServiceException {
MerchantConfiguration configuration = merchantConfigurationService.getMerchantConfiguration(Constants.EMAIL_CONFIG, store);
if(configuration==null) {
configuration = new MerchantConfiguration();
configuration.setMerchantStore(store);
configuration.setKey(Constants.EMAIL_CONFIG);
}
String value = emailConfig.toJSONString();
configuration.setValue(value);
merchantConfigurationService.saveOrUpdate(configuration);
}
}