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