/*
* Licensed to csti consulting
* You may obtain a copy of the License at
*
* http://www.csticonsulting.com
* Copyright (c) 2006-Aug 24, 2010 Consultation CS-TI inc.
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package com.salesmanager.core.service.merchant;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.salesmanager.core.constants.ErrorConstants;
import com.salesmanager.core.constants.SecurityConstants;
import com.salesmanager.core.entity.merchant.MerchantConfiguration;
import com.salesmanager.core.entity.merchant.MerchantRegistration;
import com.salesmanager.core.entity.merchant.MerchantStore;
import com.salesmanager.core.entity.merchant.MerchantStoreHeader;
import com.salesmanager.core.entity.merchant.MerchantUserInformation;
import com.salesmanager.core.entity.merchant.MerchantUserRole;
import com.salesmanager.core.entity.merchant.MerchantUserRoleDef;
import com.salesmanager.core.entity.reference.CoreModuleService;
import com.salesmanager.core.entity.reference.MerchantId;
import com.salesmanager.core.module.model.application.AdministrationLogonModule;
import com.salesmanager.core.module.model.application.PasswordGeneratorModule;
import com.salesmanager.core.service.ServiceException;
import com.salesmanager.core.service.ServiceFactory;
import com.salesmanager.core.service.catalog.CatalogService;
import com.salesmanager.core.service.common.CommonService;
import com.salesmanager.core.service.common.impl.ServicesUtil;
import com.salesmanager.core.service.customer.CustomerService;
import com.salesmanager.core.service.merchant.impl.MerchantConfigurationImpl;
import com.salesmanager.core.service.merchant.impl.dao.IMerchantConfigurationDao;
import com.salesmanager.core.service.merchant.impl.dao.IMerchantIdDao;
import com.salesmanager.core.service.merchant.impl.dao.IMerchantRegistrationDao;
import com.salesmanager.core.service.merchant.impl.dao.IMerchantStoreDao;
import com.salesmanager.core.service.merchant.impl.dao.IMerchantUserInformationDao;
import com.salesmanager.core.service.merchant.impl.dao.IMerchantUserRoleDao;
import com.salesmanager.core.service.merchant.impl.dao.IMerchantUserRoleDefDao;
import com.salesmanager.core.service.merchant.impl.dao.MerchantUserRoleDefDao;
import com.salesmanager.core.service.order.OrderService;
import com.salesmanager.core.service.reference.ReferenceService;
import com.salesmanager.core.service.tax.TaxService;
import com.salesmanager.core.util.CurrencyUtil;
import com.salesmanager.core.util.EncryptionUtil;
import com.salesmanager.core.util.LabelUtil;
import com.salesmanager.core.util.LocaleUtil;
import com.salesmanager.core.util.PropertiesUtil;
import com.salesmanager.core.util.ReferenceUtil;
import com.salesmanager.core.util.SpringUtil;
@Service
public class MerchantService {
public final static int INTEGRATION_TYPE_SHIPPING = 1;
public final static int INTEGRATION_TYPE_PAYMENT = 2;
private Logger log = Logger.getLogger(MerchantService.class);
private static Configuration conf = PropertiesUtil.getConfiguration();
@Autowired
private IMerchantConfigurationDao merchantConfigurationDao;
@Autowired
private IMerchantRegistrationDao merchantRegistrationDao;
@Autowired
private IMerchantUserInformationDao merchantUserInformationDao;
@Autowired
private IMerchantStoreDao merchantStoreDao;
@Autowired
private IMerchantIdDao merchantIdDao;
@Autowired
private IMerchantUserRoleDao merchantUserRoleDao;
@Autowired
private IMerchantUserRoleDefDao merchantUserRoleDefDao;
public String getUser(HttpServletRequest request) throws MerchantException {
try {
AdministrationLogonModule module = (AdministrationLogonModule) SpringUtil
.getBean("merchantLogon");
return module.getUser(request);
} catch (Exception e) {
throw new MerchantException(e);
}
}
@Transactional
public Collection<MerchantUserRoleDef> getMerchantUserRoleDef() throws Exception {
return merchantUserRoleDefDao.findAll();
}
/**
* Creates a basic merchant id
* first name
* last name
* email
* admin name
* password
* Sends an email
* @param merchantId
* @param merchantUserInformation
* @param locale
*/
@Transactional
public void createMerchantUserInformation(int merchantId, MerchantUserInformation merchantUserInformation, Collection<MerchantUserRole> roles, Locale locale) throws Exception {
if(merchantUserInformation==null) {
merchantUserInformation = new MerchantUserInformation();
}
merchantUserInformation.setMerchantId(merchantId);
merchantUserInformation.setLastModified(new Date());
merchantUserInformation.setUserlang(locale.getLanguage());
PasswordGeneratorModule passwordGenerator = (PasswordGeneratorModule) SpringUtil
.getBean("passwordgenerator");
String key = EncryptionUtil.generatekey(String
.valueOf(SecurityConstants.idConstant));
String encrypted;
String password = "";
try {
password = passwordGenerator.generatePassword();
encrypted = EncryptionUtil.encrypt(key, password);
} catch (Exception e) {
log.error(e);
throw new ServiceException(e);
}
merchantUserInformation.setAdminPass(encrypted);
MerchantStore store = this.getMerchantStore(merchantId);
merchantUserInformation.setUseraddress(store.getStoreaddress());
merchantUserInformation.setUsercity(store.getStorecity());
merchantUserInformation.setUsercountrycode(store.getCountry());
merchantUserInformation.setUserphone(store.getStorephone());
merchantUserInformation.setUserpostalcode(store.getStorepostalcode());
merchantUserInformation.setUserstate(store.getZone());
this.saveOrUpdateMerchantUserInformation(merchantUserInformation);
// send an introduction email
LabelUtil lhelper = LabelUtil.getInstance();
String title = lhelper.getText(merchantUserInformation.getUserlang(),
"label.profile.newmerchantemailtitle");
String adminInfo = lhelper.getText(merchantUserInformation.getUserlang(),
"label.profile.userinformation");
String username = lhelper.getText(merchantUserInformation.getUserlang(),
"username");
String pwd = lhelper.getText(merchantUserInformation.getUserlang(),
"password");
String url = lhelper.getText(merchantUserInformation.getUserlang(),
"label.profile.adminurl");
String mailTitle = lhelper.getText(merchantUserInformation.getUserlang(),
"label.profile.newusertitle");
Map context = new HashMap();
context.put("EMAIL_NEW_USER_TEXT", title);
context.put("EMAIL_STORE_NAME", store.getStorename());
context.put("EMAIL_ADMIN_LABEL", adminInfo);
context.put("EMAIL_CUSTOMER_FIRSTNAME", merchantUserInformation
.getUserfname());
context.put("EMAIL_CUSTOMER_LAST", merchantUserInformation.getUserlname());
context.put("EMAIL_ADMIN_NAME", merchantUserInformation.getAdminName());
context.put("EMAIL_ADMIN_PASSWORD", password);
context.put("EMAIL_ADMIN_USERNAME_LABEL", username);
context.put("EMAIL_ADMIN_PASSWORD_LABEL", pwd);
context.put("EMAIL_ADMIN_URL_LABEL", url);
context.put("EMAIL_ADMIN_URL", ReferenceUtil
.buildCentralUri(store));
this.saveOrUpdateRoles(roles);
String email = merchantUserInformation.getAdminEmail();
CommonService cservice = new CommonService();
cservice.sendHtmlEmail(email, mailTitle,
store, context, "email_template_new_user.ftl",
merchantUserInformation.getUserlang());
}
/**
* Deletes a MerchantUserInformation entity and roles attached
* @param merchantUserId
*/
@Transactional
public void deleteMerchantUserInformation(MerchantUserInformation user) {
merchantUserRoleDao.deleteByUserName(user.getAdminName());
merchantUserInformationDao.delete(user);
}
/**
* Returns a MerchantUserInformation based on the administration email
* @param adminEmail
* @return
* @throws Exception
*/
@Transactional
public MerchantUserInformation getMerchantUserInformationByAdminEmail(String adminEmail) throws Exception {
return merchantUserInformationDao.findByAdminEmail(adminEmail);
}
@Transactional
public void createNewOrSaveMerchant(MerchantStore creatorStore,
MerchantUserInformation merchantUserInfo,
MerchantRegistration merchantRegistration) throws Exception {
if (merchantUserInfo.getMerchantId() == 0) {
// New Merchant User
if (merchantUserInformationDao.findByAdminEmail(merchantUserInfo
.getAdminEmail()) != null) {
throw new ServiceException("Admin Email Already Exists",
ErrorConstants.EMAIL_ALREADY_EXISTS);
}
String language = conf.getString("core.system.defaultlanguage");
if(!StringUtils.isBlank(merchantUserInfo.getUserlang())) {
language = merchantUserInfo.getUserlang();
} else {
merchantUserInfo.setUserlang(language);
}
Locale locale = LocaleUtil.getLocale(language);
MerchantId merchantId = new MerchantId(0, new Date());
Integer newMerchantId = merchantIdDao.saveMerchantId(merchantId);
merchantUserInfo.setMerchantId(newMerchantId);
merchantUserInfo.setLastModified(new Date());
PasswordGeneratorModule passwordGenerator = (PasswordGeneratorModule) SpringUtil
.getBean("passwordgenerator");
String key = EncryptionUtil.generatekey(String
.valueOf(SecurityConstants.idConstant));
String encrypted;
String password = "";
try {
password = passwordGenerator.generatePassword();
encrypted = EncryptionUtil.encrypt(key, password);
} catch (Exception e) {
log.error(e);
throw new ServiceException(e);
}
merchantUserInfo.setAdminPass(encrypted);
// merchantUserInfo.setAdminPass(password);
merchantUserInformationDao.persist(merchantUserInfo);
merchantRegistration.setMerchantId(newMerchantId);
merchantRegistration.setDateAdded(new Date());
merchantRegistration.setLastModified(new Date());
merchantRegistration.setPromoCode(0);
merchantRegistration.setPromoCodeExpiry(new Date());
merchantRegistrationDao.persist(merchantRegistration);
// create a MerchantStore
MerchantStore mStore = new MerchantStore();
mStore.setMerchantId(newMerchantId);
mStore.setStorename(merchantUserInfo.getUserfname() + " "
+ merchantUserInfo.getUserlname());
mStore.setCountry(merchantUserInfo.getUsercountrycode());
mStore.setZone(merchantUserInfo.getUserstate());
mStore.setCurrency(CurrencyUtil.getDefaultCurrency());
mStore.setTemplateModule("decotemplate");
merchantStoreDao.saveOrUpdate(mStore);
// send an introduction email
LabelUtil lhelper = LabelUtil.getInstance();
String title = lhelper.getText(merchantUserInfo.getUserlang(),
"label.profile.newmerchantemailtitle");
String adminInfo = lhelper.getText(merchantUserInfo.getUserlang(),
"label.profile.userinformation");
String username = lhelper.getText(merchantUserInfo.getUserlang(),
"username");
String pwd = lhelper.getText(merchantUserInfo.getUserlang(),
"password");
String url = lhelper.getText(merchantUserInfo.getUserlang(),
"label.profile.adminurl");
String mailTitle = lhelper.getText(merchantUserInfo.getUserlang(),
"label.profile.newstoretitle");
Map context = new HashMap();
context.put("EMAIL_NEW_STORE_TEXT", title);
context.put("EMAIL_STORE_NAME", mStore.getStorename());
context.put("EMAIL_ADMIN_LABEL", adminInfo);
context.put("EMAIL_CUSTOMER_FIRSTNAME", merchantUserInfo
.getUserfname());
context.put("EMAIL_CUSTOMER_LAST", merchantUserInfo.getUserlname());
context.put("EMAIL_ADMIN_NAME", merchantUserInfo.getAdminName());
context.put("EMAIL_ADMIN_PASSWORD", password);
context.put("EMAIL_ADMIN_USERNAME_LABEL", username);
context.put("EMAIL_ADMIN_PASSWORD_LABEL", pwd);
context.put("EMAIL_ADMIN_URL_LABEL", url);
context.put("EMAIL_ADMIN_URL", ReferenceUtil
.buildCentralUri(mStore));
// create role
MerchantUserRole role = new MerchantUserRole();
role.setAdminName(merchantUserInfo.getAdminName());
role.setRoleCode(SecurityConstants.ADMINISTRATOR);
merchantUserRoleDao.save(role);
String email = merchantUserInfo.getAdminEmail();
CommonService cservice = new CommonService();
cservice.sendHtmlEmail(email, mailTitle,
creatorStore, context, "email_template_new_store.ftl",
merchantUserInfo.getUserlang());
} else {
MerchantUserInformation existingUserInfo = merchantUserInformationDao
.findById(merchantUserInfo.getMerchantUserId().intValue());
existingUserInfo.setLastModified(new Date());
existingUserInfo.setAdminEmail(merchantUserInfo.getAdminEmail());
existingUserInfo.setAdminName(merchantUserInfo.getAdminName());
existingUserInfo.setUserfname(merchantUserInfo.getUserfname());
existingUserInfo.setUserlname(merchantUserInfo.getUserlname());
existingUserInfo.setUseraddress(merchantUserInfo.getUseraddress());
existingUserInfo.setUserphone(merchantUserInfo.getUserphone());
existingUserInfo.setUsercity(merchantUserInfo.getUsercity());
existingUserInfo.setUserpostalcode(merchantUserInfo
.getUserpostalcode());
existingUserInfo.setUserstate(merchantUserInfo.getUserstate());
existingUserInfo.setUsercountrycode(merchantUserInfo
.getUsercountrycode());
existingUserInfo.setUserlang(merchantUserInfo.getUserlang());
merchantUserInformationDao.persist(existingUserInfo);
MerchantRegistration existingMerchantReg = merchantRegistrationDao
.findByMerchantId(merchantUserInfo.getMerchantId());
existingMerchantReg.setLastModified(new Date());
existingMerchantReg
.setMerchantRegistrationDefCode(merchantRegistration
.getMerchantRegistrationDefCode());
merchantRegistrationDao.persist(existingMerchantReg);
}
}
@Transactional
public void deleteMerchant(int merchantId) throws Exception {
MerchantConfiguration config = new MerchantConfiguration();
config.setMerchantId(merchantId);
merchantConfigurationDao.delete(config);
MerchantRegistration merchantReg = merchantRegistrationDao
.findByMerchantId(merchantId);
if (merchantReg != null) {
merchantRegistrationDao.delete(merchantReg);
}
Collection<MerchantUserInformation> merchantUsers = merchantUserInformationDao
.findByMerchantId(merchantId);
if (merchantUsers != null) {
merchantUserInformationDao.deleteAll(merchantUsers);
}
MerchantStore store = merchantStoreDao.findByMerchantId(merchantId);
if (store != null) {
merchantStoreDao.delete(store);
}
MerchantId merchant = merchantIdDao.findById(merchantId);
if (merchant != null) {
merchantIdDao.delete(merchant);
}
// delete roles
for(Object o : merchantUsers) {
MerchantUserInformation userInfo = (MerchantUserInformation)o;
merchantUserRoleDao.deleteByUserName(userInfo.getAdminName());
}
// delete merchant configuration
Collection configs = merchantConfigurationDao
.findListMerchantId(merchantId);
if (configs != null && configs.size() > 0) {
merchantConfigurationDao.delete(configs);
}
// delete geo zones
// delete zones to geozones
// dynamic label
ReferenceService referenceService = (ReferenceService) ServiceFactory
.getService(ServiceFactory.ReferenceService);
// referenceService.deleteGeoZones(merchantId);
referenceService.deleteAllDynamicLabel(merchantId);
// delete products
// delete categories
CatalogService cservice = (CatalogService) ServiceFactory
.getService(ServiceFactory.CatalogService);
cservice.deleteAllProducts(merchantId);
cservice.deleteAllCategories(merchantId);
// delete orders
// delete orders_account
OrderService oservice = (OrderService) ServiceFactory
.getService(ServiceFactory.OrderService);
oservice.deleteAllOrders(merchantId);
// delete customers
CustomerService custservice = (CustomerService) ServiceFactory
.getService(ServiceFactory.CustomerService);
custservice.deleteAllCustomers(merchantId);
// tax class
// tax rates
TaxService taxService = (TaxService) ServiceFactory
.getService(ServiceFactory.TaxService);
taxService.deleteTaxConfiguration(merchantId);
}
@Transactional
public List<MerchantStoreHeader> getAllMerchantStores() {
List<MerchantStoreHeader> merchantStoreList = new ArrayList<MerchantStoreHeader>();
MerchantStoreHeader header = null;
// List<MerchantId> merchantIdList = merchantIdDao.loadAll();
List<MerchantStore> storeList = merchantStoreDao.loadAll();
for (MerchantStore store : storeList) {
header = new MerchantStoreHeader();
header.setMerchantId(store.getMerchantId());
header.setAdminEmail(store.getStoreemailaddress());
Collection<MerchantUserInformation> userInfo = merchantUserInformationDao.findByMerchantId(store.getMerchantId());
if (userInfo != null && userInfo.size()>0) {
//header.setAdminEmail(userInfo.getAdminEmail());
MerchantUserInformation mUserInfo = (MerchantUserInformation)((List)userInfo).get(0);
header.setAdminName(mUserInfo.getAdminName());
}
header.setStorename(store.getStorename());
merchantStoreList.add(header);
}
return merchantStoreList;
}
/**
* Return a collection of roles for a given user
*
* @param request
* @param role
* @return
* @throws Exception
*/
@Transactional
public Collection<MerchantUserRole> getUserRoles(String userName)
throws Exception {
return merchantUserRoleDao.findByUserName(userName);
}
/**
* Deletes all user roles
* @param userName
* @throws Exception
*/
@Transactional
public void deleteUserRoles(String userName) throws Exception {
merchantUserRoleDao.deleteByUserName(userName);
}
@Transactional
public void saveOrUpdateRoles(Collection<MerchantUserRole> roles) throws Exception {
merchantUserRoleDao.saveOrUpdateAll(roles);
}
public MerchantUserInformation adminLogon(HttpServletRequest request, String user, String password)
throws ServiceException {
Class clz = null;
try {
AdministrationLogonModule module = (AdministrationLogonModule) SpringUtil
.getBean("merchantLogon");
return module.logon(request, user, password);
} catch (Exception e) {
if (e instanceof ServiceException) {
throw (ServiceException) e;
}
throw new ServiceException(e);
}
}
/**
* Get configuration for a given merchant ConfigurationRequestVO constructor
* accept: int merchantId, String configurationKey and int merchantId,
* boolean like, String configurationKey if boolean like=true then a request
* is made for configuration key like %configurationKey% and int merchnatId
*
* @param ConfigurationRequest
* request
* @return ConfigurationVO response
* @throws MerchantException
*/
public ConfigurationResponse getConfiguration(ConfigurationRequest request)
throws MerchantException {
try {
MerchantConfigurationImpl impl = (MerchantConfigurationImpl) SpringUtil
.getBean("merchantConfigurationImpl");
ConfigurationResponse vo = impl.getConfigurationVO(request);
return vo;
} catch (Exception e) {
throw new MerchantException(e);
}
}
/**
* Get configurations for a given module for a given merchant
* ConfigurationRequest requires a merchantId
*
* @param request
* @return
* @throws MerchantException
*/
public ConfigurationResponse getConfigurationByModule(
ConfigurationRequest request, String moduleName)
throws MerchantException {
try {
MerchantConfigurationImpl impl = (MerchantConfigurationImpl) SpringUtil
.getBean("merchantConfigurationImpl");
ConfigurationResponse vo = impl.getConfigurationVOByModule(request,
moduleName);
return vo;
} catch (Exception e) {
throw new MerchantException(e);
}
}
/**
* Returns the registration details for a given account
*
* @param merchantid
* @return
* @throws MerchantException
*/
@Transactional
public MerchantRegistration getMerchantRegistration(int merchantid)
throws MerchantException {
return merchantRegistrationDao.findByMerchantId(merchantid);
}
/**
* Retreives MerchantProfile Entity Object based on the merchant id
*
* @param merchantid
* @return MerchantProfile or null
* @throws MerchantException
*/
// @Transactional
// public MerchantProfile getMerchantProfile(int merchantid) throws
// MerchantException {
// return merchantProfileDao.findById(merchantid);
// }
@Transactional
public MerchantStore getMerchantStore(int merchantid)
throws MerchantException {
return merchantStoreDao.findByMerchantId(merchantid);
}
/**
* Retreives MerchantUserInformation Entity Object based on the
* administration name
*
* @param merchantid
* @return MerchantProfile or null
* @throws MerchantException
*/
@Transactional
public MerchantUserInformation getMerchantUserInformation(String adminName)
throws Exception {
return merchantUserInformationDao.findByUserName(adminName);
}
/**
*
* @param long merchantUserInformationId
* @return
* @throws Exception
*/
@Transactional
public MerchantUserInformation getMerchantUserInformation(long merchantUserInformationId)
throws Exception {
return merchantUserInformationDao.findById(merchantUserInformationId);
}
// @Transactional
// public MerchantProfile getMerchantProfile(String adminName) throws
// MerchantException {
// return merchantProfileDao.findByAdminName(adminName);
// }
/**
* Get MerchantUserInformation by username and password. This is used for
* custom authentication
*
* @param username
* @param password
* @return
*/
@Transactional
public MerchantUserInformation getMerchantInformationByUserNameAndPassword(
String username, String password) throws Exception {
// encrypt password
String key = EncryptionUtil.generatekey(String
.valueOf(SecurityConstants.idConstant));
String enc = EncryptionUtil.encrypt(key, password);
return merchantUserInformationDao.findByUserNameAndPassword(username,
enc);
}
/**
* Returns a list of CentralIntegrationServices
*
* @param integrationtype
* @param countryid
* @return
* @throws MerchantException
*/
public List<CoreModuleService> getModuleServices(int integrationtype,
String countryIsoCode) throws MerchantException {
switch (integrationtype) {
case INTEGRATION_TYPE_SHIPPING:// shipping
return ServicesUtil
.getShippingRealTimeQuotesMethods(countryIsoCode);
case INTEGRATION_TYPE_PAYMENT:// shipping
return ServicesUtil.getPaymentMethodsList(countryIsoCode);
}
return null;
}
/**
* Will return a MerchantUserInformation for a given merchantId. There can
* be more than one MerchantUserInformation entity per merchantId, so it
* will return the latest...
*
* @param merchantId
* @return
*/
@Transactional
public Collection<MerchantUserInformation> getMerchantUserInfo(int merchantId) {
return merchantUserInformationDao.findByMerchantId(merchantId);
}
/**
* Removes a MerchantConfiguration entity
*
* @param config
* @throws MerchantException
*/
@Transactional
public void deleteMerchantConfiguration(MerchantConfiguration config)
throws MerchantException {
merchantConfigurationDao.delete(config);
}
/**
* Removes a collection of MerchantConfiguration
*
* @param configs
* @throws MerchantException
*/
@Transactional
public void deleteMerchantConfigurations(
Collection<MerchantConfiguration> configs) throws MerchantException {
merchantConfigurationDao.delete(configs);
}
@Transactional
public void cleanConfigurationKeys(String likeKey, int merchantid)
throws MerchantException {
merchantConfigurationDao.deleteLike(likeKey, merchantid);
}
@Transactional
public void cleanConfigurationKey(String key, int merchantid)
throws MerchantException {
merchantConfigurationDao.deleteKey(key, merchantid);
}
@Transactional
public void cleanConfigurationLikeKey(String likeKey, int merchantid)
throws MerchantException {
merchantConfigurationDao.deleteLike(likeKey, merchantid);
}
@Transactional
public void cleanConfigurationLikeKeyModule(String likeKey,
String moduleid, int merchantid) throws MerchantException {
merchantConfigurationDao
.deleteLikeModule(likeKey, moduleid, merchantid);
}
/**
* Returns a ConfigurationVO object for a given module / merchantId
*
* @param moduleName
* @param merchantId
* @return
* @throws Exception
*/
@Transactional
public ConfigurationResponse getConfigurationByModule(String moduleName,
int merchantId) throws Exception {
MerchantConfigurationImpl impl = (MerchantConfigurationImpl) SpringUtil
.getBean("merchantConfigurationImpl");
ConfigurationResponse vo = impl.getConfigurationVO(moduleName,
merchantId);
return vo;
}
@Transactional
public void saveOrUpdateMerchantStore(MerchantStore store) throws Exception {
merchantStoreDao.saveOrUpdate(store);
}
@Transactional
public void saveOrUpdateMerchantUserInformation(MerchantUserInformation info)
throws Exception {
this.merchantUserInformationDao.saveOrUpdate(info);
}
@Transactional
public void saveOrUpdateMerchantConfiguration(
MerchantConfiguration configuration) throws MerchantException {
merchantConfigurationDao.saveOrUpdate(configuration);
}
@Transactional
public void saveOrUpdateMerchantConfigurations(
List<MerchantConfiguration> configurations)
throws MerchantException {
if (configurations != null) {
merchantConfigurationDao.saveOrUpdateAll(configurations);
}
}
}