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