001    /**
002     * Copyright (c) 2000-2011 Liferay, Inc. All rights reserved.
003     *
004     * The contents of this file are subject to the terms of the Liferay Enterprise
005     * Subscription License ("License"). You may not use this file except in
006     * compliance with the License. You can obtain a copy of the License by
007     * contacting Liferay, Inc. See the License for the specific language governing
008     * permissions and limitations under the License, including but not limited to
009     * distribution rights of the Software.
010     *
011     *
012     *
013     */
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    /**
034     * @author Brian Wing Shun Chan
035     */
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    }