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