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