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.CouponEndDateException;
37 import com.liferay.portlet.shopping.CouponLimitCategoriesException;
38 import com.liferay.portlet.shopping.CouponLimitSKUsException;
39 import com.liferay.portlet.shopping.CouponNameException;
40 import com.liferay.portlet.shopping.CouponStartDateException;
41 import com.liferay.portlet.shopping.DuplicateCouponCodeException;
42 import com.liferay.portlet.shopping.NoSuchCouponException;
43 import com.liferay.portlet.shopping.service.ShoppingCouponServiceUtil;
44
45 import java.util.Calendar;
46
47 import javax.portlet.ActionRequest;
48 import javax.portlet.ActionResponse;
49 import javax.portlet.PortletConfig;
50 import javax.portlet.RenderRequest;
51 import javax.portlet.RenderResponse;
52
53 import org.apache.struts.action.ActionForm;
54 import org.apache.struts.action.ActionForward;
55 import org.apache.struts.action.ActionMapping;
56
57
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 CouponEndDateException ||
94 e instanceof CouponLimitCategoriesException ||
95 e instanceof CouponLimitSKUsException ||
96 e instanceof CouponNameException ||
97 e instanceof CouponStartDateException ||
98 e instanceof DuplicateCouponCodeException) {
99
100 if (e instanceof CouponLimitCategoriesException) {
101 CouponLimitCategoriesException clce =
102 (CouponLimitCategoriesException)e;
103
104 SessionErrors.add(
105 actionRequest, e.getClass().getName(),
106 clce.getCategoryIds());
107 }
108 else if (e instanceof CouponLimitSKUsException) {
109 CouponLimitSKUsException clskue =
110 (CouponLimitSKUsException)e;
111
112 SessionErrors.add(
113 actionRequest, e.getClass().getName(),
114 clskue.getSkus());
115 }
116 else {
117 SessionErrors.add(actionRequest, e.getClass().getName());
118 }
119 }
120 else {
121 throw e;
122 }
123 }
124 }
125
126 public ActionForward render(
127 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
128 RenderRequest renderRequest, RenderResponse renderResponse)
129 throws Exception {
130
131 try {
132 ActionUtil.getCoupon(renderRequest);
133 }
134 catch (Exception e) {
135 if (e instanceof NoSuchCouponException ||
136 e instanceof PrincipalException) {
137
138 SessionErrors.add(renderRequest, e.getClass().getName());
139
140 return mapping.findForward("portlet.shopping.error");
141 }
142 else {
143 throw e;
144 }
145 }
146
147 return mapping.findForward(
148 getForward(renderRequest, "portlet.shopping.edit_coupon"));
149 }
150
151 protected void deleteCoupons(ActionRequest actionRequest) throws Exception {
152 Layout layout = (Layout)actionRequest.getAttribute(WebKeys.LAYOUT);
153
154 long[] deleteCouponIds = StringUtil.split(
155 ParamUtil.getString(actionRequest, "deleteCouponIds"), 0L);
156
157 for (int i = 0; i < deleteCouponIds.length; i++) {
158 ShoppingCouponServiceUtil.deleteCoupon(
159 layout.getPlid(), deleteCouponIds[i]);
160 }
161 }
162
163 protected void updateCoupon(ActionRequest actionRequest) throws Exception {
164 Layout layout = (Layout)actionRequest.getAttribute(WebKeys.LAYOUT);
165
166 long couponId = ParamUtil.getLong(actionRequest, "couponId");
167
168 String code = ParamUtil.getString(actionRequest, "code");
169 boolean autoCode = ParamUtil.getBoolean(actionRequest, "autoCode");
170
171 String name = ParamUtil.getString(actionRequest, "name");
172 String description = ParamUtil.getString(actionRequest, "description");
173
174 int startDateMonth = ParamUtil.getInteger(
175 actionRequest, "startDateMonth");
176 int startDateDay = ParamUtil.getInteger(actionRequest, "startDateDay");
177 int startDateYear = ParamUtil.getInteger(
178 actionRequest, "startDateYear");
179 int startDateHour = ParamUtil.getInteger(
180 actionRequest, "startDateHour");
181 int startDateMinute = ParamUtil.getInteger(
182 actionRequest, "startDateMinute");
183 int startDateAmPm = ParamUtil.getInteger(
184 actionRequest, "startDateAmPm");
185
186 if (startDateAmPm == Calendar.PM) {
187 startDateHour += 12;
188 }
189
190 int endDateMonth = ParamUtil.getInteger(actionRequest, "endDateMonth");
191 int endDateDay = ParamUtil.getInteger(actionRequest, "endDateDay");
192 int endDateYear = ParamUtil.getInteger(actionRequest, "endDateYear");
193 int endDateHour = ParamUtil.getInteger(actionRequest, "endDateHour");
194 int endDateMinute = ParamUtil.getInteger(
195 actionRequest, "endDateMinute");
196 int endDateAmPm = ParamUtil.getInteger(actionRequest, "endDateAmPm");
197 boolean neverExpire = ParamUtil.getBoolean(
198 actionRequest, "neverExpire");
199
200 if (endDateAmPm == Calendar.PM) {
201 endDateHour += 12;
202 }
203
204 boolean active = ParamUtil.getBoolean(actionRequest, "active");
205 String limitCategories = ParamUtil.getString(
206 actionRequest, "limitCategories");
207 String limitSkus = ParamUtil.getString(actionRequest, "limitSkus");
208 double minOrder = ParamUtil.getDouble(actionRequest, "minOrder");
209 double discount = ParamUtil.getDouble(actionRequest, "discount");
210 String discountType = ParamUtil.getString(
211 actionRequest, "discountType");
212
213 if (couponId <= 0) {
214
215
217 ShoppingCouponServiceUtil.addCoupon(
218 layout.getPlid(), code, autoCode, name, description,
219 startDateMonth, startDateDay, startDateYear, startDateHour,
220 startDateMinute, endDateMonth, endDateDay, endDateYear,
221 endDateHour, endDateMinute, neverExpire, active,
222 limitCategories, limitSkus, minOrder, discount, discountType);
223 }
224 else {
225
226
228 ShoppingCouponServiceUtil.updateCoupon(
229 layout.getPlid(), couponId, name, description, startDateMonth,
230 startDateDay, startDateYear, startDateHour, startDateMinute,
231 endDateMonth, endDateDay, endDateYear, endDateHour,
232 endDateMinute, neverExpire, active, limitCategories, limitSkus,
233 minOrder, discount, discountType);
234 }
235 }
236
237 }