@Override public void removeShippingQuoteModuleConfiguration(String moduleCode, MerchantStore store) throws ServiceException { try { Map<String, IntegrationConfiguration> modules = new HashMap<String, IntegrationConfiguration>(); MerchantConfiguration merchantConfiguration = merchantConfigurationService.getMerchantConfiguration(SHIPPING_MODULES, store); if (merchantConfiguration != null) { if (!StringUtils.isBlank(merchantConfiguration.getValue())) { String decrypted = encryption.decrypt(merchantConfiguration.getValue()); modules = ConfigurationModulesLoader.loadIntegrationConfigurations(decrypted); } modules.remove(moduleCode); String configs = ConfigurationModulesLoader.toJSONString(modules); String encrypted = encryption.encrypt(configs); merchantConfiguration.setValue(encrypted); merchantConfigurationService.saveOrUpdate(merchantConfiguration); } MerchantConfiguration configuration = merchantConfigurationService.getMerchantConfiguration(moduleCode, store); if (configuration != null) { // custom module merchantConfigurationService.delete(configuration); } } catch (Exception e) { throw new ServiceException(e); } }
@PreAuthorize("hasRole('AUTH')") @RequestMapping( value = "/admin/configuration/saveConfiguration.html", method = RequestMethod.POST) public String saveConfigurations( @ModelAttribute("configuration") ConfigListWrapper configWrapper, BindingResult result, Model model, HttpServletRequest request, Locale locale) throws Exception { setConfigurationMenu(model, request); List<MerchantConfiguration> configs = configWrapper.getMerchantConfigs(); MerchantStore store = (MerchantStore) request.getAttribute(Constants.ADMIN_STORE); for (MerchantConfiguration mConfigs : configs) { mConfigs.setMerchantStore(store); if (!StringUtils.isBlank(mConfigs.getValue())) { mConfigs.setMerchantConfigurationType(MerchantConfigurationType.CONFIG); merchantConfigurationService.saveOrUpdate(mConfigs); } else { // remove if submited blank and exists MerchantConfiguration config = merchantConfigurationService.getMerchantConfiguration(mConfigs.getKey(), store); if (config != null) { merchantConfigurationService.delete(config); } } } model.addAttribute("success", "success"); model.addAttribute("configuration", configWrapper); return com.salesmanager.web.admin.controller.ControllerConstants.Tiles.Configuration.accounts; }
@Override public void saveShippingQuoteModuleConfiguration( IntegrationConfiguration configuration, MerchantStore store) throws ServiceException { // validate entries try { String moduleCode = configuration.getModuleCode(); ShippingQuoteModule quoteModule = (ShippingQuoteModule) shippingModules.get(moduleCode); if (quoteModule == null) { throw new ServiceException("Shipping quote module " + moduleCode + " does not exist"); } quoteModule.validateModuleConfiguration(configuration, store); } catch (IntegrationException ie) { throw ie; } try { Map<String, IntegrationConfiguration> modules = new HashMap<String, IntegrationConfiguration>(); MerchantConfiguration merchantConfiguration = merchantConfigurationService.getMerchantConfiguration(SHIPPING_MODULES, store); if (merchantConfiguration != null) { if (!StringUtils.isBlank(merchantConfiguration.getValue())) { String decrypted = encryption.decrypt(merchantConfiguration.getValue()); modules = ConfigurationModulesLoader.loadIntegrationConfigurations(decrypted); } } else { merchantConfiguration = new MerchantConfiguration(); merchantConfiguration.setMerchantStore(store); merchantConfiguration.setKey(SHIPPING_MODULES); } modules.put(configuration.getModuleCode(), configuration); String configs = ConfigurationModulesLoader.toJSONString(modules); String encrypted = encryption.encrypt(configs); merchantConfiguration.setValue(encrypted); merchantConfigurationService.saveOrUpdate(merchantConfiguration); } catch (Exception e) { throw new ServiceException(e); } }
@Override public Map<String, IntegrationConfiguration> getShippingModulesConfigured(MerchantStore store) throws ServiceException { try { Map<String, IntegrationConfiguration> modules = new HashMap<String, IntegrationConfiguration>(); MerchantConfiguration merchantConfiguration = merchantConfigurationService.getMerchantConfiguration(SHIPPING_MODULES, store); if (merchantConfiguration != null) { if (!StringUtils.isBlank(merchantConfiguration.getValue())) { String decrypted = encryption.decrypt(merchantConfiguration.getValue()); modules = ConfigurationModulesLoader.loadIntegrationConfigurations(decrypted); } } return modules; } catch (Exception e) { throw new ServiceException(e); } }
@Override public List<Country> getShipToCountryList(MerchantStore store, Language language) throws ServiceException { ShippingConfiguration shippingConfiguration = getShippingConfiguration(store); ShippingType shippingType = ShippingType.INTERNATIONAL; List<String> supportedCountries = new ArrayList<String>(); if (shippingConfiguration == null) { shippingConfiguration = new ShippingConfiguration(); } if (shippingConfiguration.getShippingType() != null) { shippingType = shippingConfiguration.getShippingType(); } if (shippingType.name().equals(ShippingType.NATIONAL.name())) { supportedCountries.add(store.getCountry().getIsoCode()); } else { MerchantConfiguration configuration = merchantConfigurationService.getMerchantConfiguration(SUPPORTED_COUNTRIES, store); if (configuration != null) { String countries = configuration.getValue(); if (!StringUtils.isBlank(countries)) { Object objRegions = JSONValue.parse(countries); JSONArray arrayRegions = (JSONArray) objRegions; @SuppressWarnings("rawtypes") Iterator i = arrayRegions.iterator(); while (i.hasNext()) { supportedCountries.add((String) i.next()); } } } } return countryService.getCountries(supportedCountries, language); }
@Override public ShippingConfiguration getShippingConfiguration(MerchantStore store) throws ServiceException { MerchantConfiguration configuration = merchantConfigurationService.getMerchantConfiguration( ShippingConstants.SHIPPING_CONFIGURATION, store); ShippingConfiguration shippingConfiguration = null; if (configuration != null) { String value = configuration.getValue(); ObjectMapper mapper = new ObjectMapper(); try { shippingConfiguration = mapper.readValue(value, ShippingConfiguration.class); } catch (Exception e) { throw new ServiceException("Cannot parse json string " + value); } } return shippingConfiguration; }
@Override public List<String> getSupportedCountries(MerchantStore store) throws ServiceException { List<String> supportedCountries = new ArrayList<String>(); MerchantConfiguration configuration = merchantConfigurationService.getMerchantConfiguration(SUPPORTED_COUNTRIES, store); if (configuration != null) { String countries = configuration.getValue(); if (!StringUtils.isBlank(countries)) { Object objRegions = JSONValue.parse(countries); JSONArray arrayRegions = (JSONArray) objRegions; @SuppressWarnings("rawtypes") Iterator i = arrayRegions.iterator(); while (i.hasNext()) { supportedCountries.add((String) i.next()); } } } return supportedCountries; }