1
14
15 package com.liferay.portlet.shopping.action;
16
17 import com.liferay.portal.kernel.servlet.SessionErrors;
18 import com.liferay.portal.kernel.util.Constants;
19 import com.liferay.portal.kernel.util.ParamUtil;
20 import com.liferay.portal.kernel.util.StringUtil;
21 import com.liferay.portal.model.Layout;
22 import com.liferay.portal.security.auth.PrincipalException;
23 import com.liferay.portal.struts.PortletAction;
24 import com.liferay.portal.util.WebKeys;
25 import com.liferay.portlet.shopping.CouponCodeException;
26 import com.liferay.portlet.shopping.CouponDateException;
27 import com.liferay.portlet.shopping.CouponDescriptionException;
28 import com.liferay.portlet.shopping.CouponDiscountException;
29 import com.liferay.portlet.shopping.CouponEndDateException;
30 import com.liferay.portlet.shopping.CouponLimitCategoriesException;
31 import com.liferay.portlet.shopping.CouponLimitSKUsException;
32 import com.liferay.portlet.shopping.CouponMinimumOrderException;
33 import com.liferay.portlet.shopping.CouponNameException;
34 import com.liferay.portlet.shopping.CouponStartDateException;
35 import com.liferay.portlet.shopping.DuplicateCouponCodeException;
36 import com.liferay.portlet.shopping.NoSuchCouponException;
37 import com.liferay.portlet.shopping.service.ShoppingCouponServiceUtil;
38
39 import java.util.Calendar;
40
41 import javax.portlet.ActionRequest;
42 import javax.portlet.ActionResponse;
43 import javax.portlet.PortletConfig;
44 import javax.portlet.RenderRequest;
45 import javax.portlet.RenderResponse;
46
47 import org.apache.struts.action.ActionForm;
48 import org.apache.struts.action.ActionForward;
49 import org.apache.struts.action.ActionMapping;
50
51
57 public class EditCouponAction extends PortletAction {
58
59 public void processAction(
60 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
61 ActionRequest actionRequest, ActionResponse actionResponse)
62 throws Exception {
63
64 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
65
66 try {
67 if (cmd.equals(Constants.ADD) || cmd.equals(Constants.UPDATE)) {
68 updateCoupon(actionRequest);
69 }
70 else if (cmd.equals(Constants.DELETE)) {
71 deleteCoupons(actionRequest);
72 }
73
74 sendRedirect(actionRequest, actionResponse);
75 }
76 catch (Exception e) {
77 if (e instanceof NoSuchCouponException ||
78 e instanceof PrincipalException) {
79
80 SessionErrors.add(actionRequest, e.getClass().getName());
81
82 setForward(actionRequest, "portlet.shopping.error");
83 }
84 else if (e instanceof CouponCodeException ||
85 e instanceof CouponDateException ||
86 e instanceof CouponDescriptionException ||
87 e instanceof CouponDiscountException ||
88 e instanceof CouponEndDateException ||
89 e instanceof CouponLimitCategoriesException ||
90 e instanceof CouponLimitSKUsException ||
91 e instanceof CouponMinimumOrderException ||
92 e instanceof CouponNameException ||
93 e instanceof CouponStartDateException ||
94 e instanceof DuplicateCouponCodeException) {
95
96 if (e instanceof CouponLimitCategoriesException) {
97 CouponLimitCategoriesException clce =
98 (CouponLimitCategoriesException)e;
99
100 SessionErrors.add(
101 actionRequest, e.getClass().getName(),
102 clce.getCategoryIds());
103 }
104 else if (e instanceof CouponLimitSKUsException) {
105 CouponLimitSKUsException clskue =
106 (CouponLimitSKUsException)e;
107
108 SessionErrors.add(
109 actionRequest, e.getClass().getName(),
110 clskue.getSkus());
111 }
112 else {
113 SessionErrors.add(actionRequest, e.getClass().getName());
114 }
115 }
116 else {
117 throw e;
118 }
119 }
120 }
121
122 public ActionForward render(
123 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
124 RenderRequest renderRequest, RenderResponse renderResponse)
125 throws Exception {
126
127 try {
128 ActionUtil.getCoupon(renderRequest);
129 }
130 catch (Exception e) {
131 if (e instanceof NoSuchCouponException ||
132 e instanceof PrincipalException) {
133
134 SessionErrors.add(renderRequest, e.getClass().getName());
135
136 return mapping.findForward("portlet.shopping.error");
137 }
138 else {
139 throw e;
140 }
141 }
142
143 return mapping.findForward(
144 getForward(renderRequest, "portlet.shopping.edit_coupon"));
145 }
146
147 protected void deleteCoupons(ActionRequest actionRequest) throws Exception {
148 Layout layout = (Layout)actionRequest.getAttribute(WebKeys.LAYOUT);
149
150 long[] deleteCouponIds = StringUtil.split(
151 ParamUtil.getString(actionRequest, "deleteCouponIds"), 0L);
152
153 for (int i = 0; i < deleteCouponIds.length; i++) {
154 ShoppingCouponServiceUtil.deleteCoupon(
155 layout.getPlid(), deleteCouponIds[i]);
156 }
157 }
158
159 protected void updateCoupon(ActionRequest actionRequest) throws Exception {
160 Layout layout = (Layout)actionRequest.getAttribute(WebKeys.LAYOUT);
161
162 long couponId = ParamUtil.getLong(actionRequest, "couponId");
163
164 String code = ParamUtil.getString(actionRequest, "code");
165 boolean autoCode = ParamUtil.getBoolean(actionRequest, "autoCode");
166
167 String name = ParamUtil.getString(actionRequest, "name");
168 String description = ParamUtil.getString(actionRequest, "description");
169
170 int startDateMonth = ParamUtil.getInteger(
171 actionRequest, "startDateMonth");
172 int startDateDay = ParamUtil.getInteger(actionRequest, "startDateDay");
173 int startDateYear = ParamUtil.getInteger(
174 actionRequest, "startDateYear");
175 int startDateHour = ParamUtil.getInteger(
176 actionRequest, "startDateHour");
177 int startDateMinute = ParamUtil.getInteger(
178 actionRequest, "startDateMinute");
179 int startDateAmPm = ParamUtil.getInteger(
180 actionRequest, "startDateAmPm");
181
182 if (startDateAmPm == Calendar.PM) {
183 startDateHour += 12;
184 }
185
186 int endDateMonth = ParamUtil.getInteger(actionRequest, "endDateMonth");
187 int endDateDay = ParamUtil.getInteger(actionRequest, "endDateDay");
188 int endDateYear = ParamUtil.getInteger(actionRequest, "endDateYear");
189 int endDateHour = ParamUtil.getInteger(actionRequest, "endDateHour");
190 int endDateMinute = ParamUtil.getInteger(
191 actionRequest, "endDateMinute");
192 int endDateAmPm = ParamUtil.getInteger(actionRequest, "endDateAmPm");
193 boolean neverExpire = ParamUtil.getBoolean(
194 actionRequest, "neverExpire");
195
196 if (endDateAmPm == Calendar.PM) {
197 endDateHour += 12;
198 }
199
200 boolean active = ParamUtil.getBoolean(actionRequest, "active");
201 String limitCategories = ParamUtil.getString(
202 actionRequest, "limitCategories");
203 String limitSkus = ParamUtil.getString(actionRequest, "limitSkus");
204 double minOrder = ParamUtil.getDouble(actionRequest, "minOrder", -1.0);
205 double discount = ParamUtil.getDouble(actionRequest, "discount", -1.0);
206 String discountType = ParamUtil.getString(
207 actionRequest, "discountType");
208
209 if (couponId <= 0) {
210
211
213 ShoppingCouponServiceUtil.addCoupon(
214 layout.getPlid(), code, autoCode, name, description,
215 startDateMonth, startDateDay, startDateYear, startDateHour,
216 startDateMinute, endDateMonth, endDateDay, endDateYear,
217 endDateHour, endDateMinute, neverExpire, active,
218 limitCategories, limitSkus, minOrder, discount, discountType);
219 }
220 else {
221
222
224 ShoppingCouponServiceUtil.updateCoupon(
225 layout.getPlid(), couponId, name, description, startDateMonth,
226 startDateDay, startDateYear, startDateHour, startDateMinute,
227 endDateMonth, endDateDay, endDateYear, endDateHour,
228 endDateMinute, neverExpire, active, limitCategories, limitSkus,
229 minOrder, discount, discountType);
230 }
231 }
232
233 }