001
014
015 package com.liferay.portlet.shopping.action;
016
017 import com.liferay.portal.kernel.portlet.DefaultConfigurationAction;
018 import com.liferay.portal.kernel.servlet.SessionErrors;
019 import com.liferay.portal.kernel.servlet.SessionMessages;
020 import com.liferay.portal.kernel.util.Constants;
021 import com.liferay.portal.kernel.util.ParamUtil;
022 import com.liferay.portal.kernel.util.StringUtil;
023 import com.liferay.portal.kernel.util.Validator;
024 import com.liferay.portal.theme.ThemeDisplay;
025 import com.liferay.portal.util.PortletKeys;
026 import com.liferay.portal.util.WebKeys;
027 import com.liferay.portlet.shopping.util.ShoppingPreferences;
028
029 import javax.portlet.ActionRequest;
030 import javax.portlet.ActionResponse;
031 import javax.portlet.PortletConfig;
032
033
036 public class ConfigurationActionImpl extends DefaultConfigurationAction {
037
038 @Override
039 public void processAction(
040 PortletConfig portletConfig, ActionRequest actionRequest,
041 ActionResponse actionResponse)
042 throws Exception {
043
044 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
045
046 if (!cmd.equals(Constants.UPDATE)) {
047 return;
048 }
049
050 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
051 WebKeys.THEME_DISPLAY);
052
053 ShoppingPreferences preferences = ShoppingPreferences.getInstance(
054 themeDisplay.getCompanyId(), themeDisplay.getScopeGroupId());
055
056 String tabs2 = ParamUtil.getString(actionRequest, "tabs2");
057 String tabs3 = ParamUtil.getString(actionRequest, "tabs3");
058
059 if (tabs2.equals("payment-settings")) {
060 updatePayment(actionRequest, preferences);
061 }
062 else if (tabs2.equals("shipping-calculation")) {
063 updateShippingCalculation(actionRequest, preferences);
064 }
065 else if (tabs2.equals("insurance-calculation")) {
066 updateInsuranceCalculation(actionRequest, preferences);
067 }
068 else if (tabs2.equals("emails")) {
069 if (tabs3.equals("email-from")) {
070 updateEmailFrom(actionRequest, preferences);
071 }
072 else if (tabs3.equals("confirmation-email")) {
073 updateEmailOrderConfirmation(actionRequest, preferences);
074 }
075 else if (tabs3.equals("shipping-email")) {
076 updateEmailOrderShipping(actionRequest, preferences);
077 }
078 }
079
080 if (SessionErrors.isEmpty(actionRequest)) {
081 preferences.store();
082
083 SessionMessages.add(
084 actionRequest, portletConfig.getPortletName() + ".doConfigure");
085
086 SessionMessages.add(
087 actionRequest, portletConfig.getPortletName() + ".doRefresh",
088 PortletKeys.SHOPPING);
089 }
090 }
091
092 protected void updateEmailFrom(
093 ActionRequest actionRequest, ShoppingPreferences preferences)
094 throws Exception {
095
096 String emailFromName = ParamUtil.getString(
097 actionRequest, "emailFromName");
098 String emailFromAddress = ParamUtil.getString(
099 actionRequest, "emailFromAddress");
100
101 if (Validator.isNull(emailFromName)) {
102 SessionErrors.add(actionRequest, "emailFromName");
103 }
104 else if (!Validator.isEmailAddress(emailFromAddress)) {
105 SessionErrors.add(actionRequest, "emailFromAddress");
106 }
107 else {
108 preferences.setEmailFromName(emailFromName);
109 preferences.setEmailFromAddress(emailFromAddress);
110 }
111 }
112
113 protected void updateEmailOrderConfirmation(
114 ActionRequest actionRequest, ShoppingPreferences preferences)
115 throws Exception {
116
117 boolean emailOrderConfirmationEnabled = ParamUtil.getBoolean(
118 actionRequest, "emailOrderConfirmationEnabled");
119 String emailOrderConfirmationSubject = ParamUtil.getString(
120 actionRequest, "emailOrderConfirmationSubject");
121 String emailOrderConfirmationBody = ParamUtil.getString(
122 actionRequest, "emailOrderConfirmationBody");
123
124 if (Validator.isNull(emailOrderConfirmationSubject)) {
125 SessionErrors.add(actionRequest, "emailOrderConfirmationSubject");
126 }
127 else if (Validator.isNull(emailOrderConfirmationBody)) {
128 SessionErrors.add(actionRequest, "emailOrderConfirmationBody");
129 }
130 else {
131 preferences.setEmailOrderConfirmationEnabled(
132 emailOrderConfirmationEnabled);
133 preferences.setEmailOrderConfirmationSubject(
134 emailOrderConfirmationSubject);
135 preferences.setEmailOrderConfirmationBody(
136 emailOrderConfirmationBody);
137 }
138 }
139
140 protected void updateEmailOrderShipping(
141 ActionRequest actionRequest, ShoppingPreferences preferences)
142 throws Exception {
143
144 boolean emailOrderShippingEnabled = ParamUtil.getBoolean(
145 actionRequest, "emailOrderShippingEnabled");
146 String emailOrderShippingSubject = ParamUtil.getString(
147 actionRequest, "emailOrderShippingSubject");
148 String emailOrderShippingBody = ParamUtil.getString(
149 actionRequest, "emailOrderShippingBody");
150
151 if (Validator.isNull(emailOrderShippingSubject)) {
152 SessionErrors.add(actionRequest, "emailOrderShippingSubject");
153 }
154 else if (Validator.isNull(emailOrderShippingBody)) {
155 SessionErrors.add(actionRequest, "emailOrderShippingBody");
156 }
157 else {
158 preferences.setEmailOrderShippingEnabled(emailOrderShippingEnabled);
159 preferences.setEmailOrderShippingSubject(emailOrderShippingSubject);
160 preferences.setEmailOrderShippingBody(emailOrderShippingBody);
161 }
162 }
163
164 protected void updateInsuranceCalculation(
165 ActionRequest actionRequest, ShoppingPreferences preferences)
166 throws Exception {
167
168 String insuranceFormula = ParamUtil.getString(
169 actionRequest, "insuranceFormula");
170
171 String[] insurance = new String[5];
172
173 for (int i = 0; i < insurance.length; i++) {
174 insurance[i] = String.valueOf(
175 ParamUtil.getDouble(actionRequest, "insurance" + i));
176 }
177
178 preferences.setInsuranceFormula(insuranceFormula);
179 preferences.setInsurance(insurance);
180 }
181
182 protected void updatePayment(
183 ActionRequest actionRequest, ShoppingPreferences preferences)
184 throws Exception {
185
186 String payPalEmailAddress = ParamUtil.getString(
187 actionRequest, "payPalEmailAddress");
188 String[] ccTypes = StringUtil.split(
189 ParamUtil.getString(actionRequest, "ccTypes"));
190 String currencyId = ParamUtil.getString(actionRequest, "currencyId");
191 String taxState = ParamUtil.getString(actionRequest, "taxState");
192 double taxRate = ParamUtil.getDouble(actionRequest, "taxRate") / 100;
193 double minOrder = ParamUtil.getDouble(actionRequest, "minOrder");
194
195 preferences.setPayPalEmailAddress(payPalEmailAddress);
196 preferences.setCcTypes(ccTypes);
197 preferences.setCurrencyId(currencyId);
198 preferences.setTaxState(taxState);
199 preferences.setTaxRate(taxRate);
200 preferences.setMinOrder(minOrder);
201 }
202
203 protected void updateShippingCalculation(
204 ActionRequest actionRequest, ShoppingPreferences preferences)
205 throws Exception {
206
207 String shippingFormula = ParamUtil.getString(
208 actionRequest, "shippingFormula");
209
210 String[] shipping = new String[5];
211
212 for (int i = 0; i < shipping.length; i++) {
213 shipping[i] = String.valueOf(
214 ParamUtil.getDouble(actionRequest, "shipping" + i));
215 }
216
217 preferences.setShippingFormula(shippingFormula);
218 preferences.setShipping(shipping);
219 }
220
221 }