com.liferay.commerce.checkout.web.internal.util.ShippingAddressCommerceCheckoutStep Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of com.liferay.commerce.checkout.web
Show all versions of com.liferay.commerce.checkout.web
Liferay Commerce Checkout Web
/**
* SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/
package com.liferay.commerce.checkout.web.internal.util;
import com.liferay.account.model.AccountEntry;
import com.liferay.account.service.AccountEntryLocalService;
import com.liferay.account.service.AccountRoleLocalService;
import com.liferay.commerce.checkout.helper.CommerceCheckoutStepHttpHelper;
import com.liferay.commerce.checkout.web.internal.display.context.AddressCommerceCheckoutStepDisplayContext;
import com.liferay.commerce.checkout.web.internal.display.context.ShippingAddressCheckoutStepDisplayContext;
import com.liferay.commerce.constants.CommerceAddressConstants;
import com.liferay.commerce.constants.CommerceCheckoutWebKeys;
import com.liferay.commerce.constants.CommerceOrderConstants;
import com.liferay.commerce.exception.CommerceAddressCityException;
import com.liferay.commerce.exception.CommerceAddressCountryException;
import com.liferay.commerce.exception.CommerceAddressNameException;
import com.liferay.commerce.exception.CommerceAddressStreetException;
import com.liferay.commerce.exception.CommerceAddressZipException;
import com.liferay.commerce.exception.CommerceOrderBillingAddressException;
import com.liferay.commerce.exception.CommerceOrderShippingAddressException;
import com.liferay.commerce.model.CommerceOrder;
import com.liferay.commerce.product.service.CommerceChannelAccountEntryRelLocalService;
import com.liferay.commerce.product.service.CommerceChannelLocalService;
import com.liferay.commerce.service.CommerceAddressService;
import com.liferay.commerce.service.CommerceOrderService;
import com.liferay.commerce.util.BaseCommerceCheckoutStep;
import com.liferay.commerce.util.CommerceCheckoutStep;
import com.liferay.frontend.taglib.servlet.taglib.util.JSPRenderer;
import com.liferay.portal.kernel.security.permission.resource.ModelResourcePermission;
import com.liferay.portal.kernel.security.permission.resource.PortletResourcePermission;
import com.liferay.portal.kernel.service.CountryLocalService;
import com.liferay.portal.kernel.servlet.SessionErrors;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.component.annotations.ReferencePolicy;
import org.osgi.service.component.annotations.ReferencePolicyOption;
/**
* @author Andrea Di Giorgi
* @author Luca Pellizzon
* @author Alessio Antonio Rendina
*/
@Component(
property = {
"commerce.checkout.step.name=" + ShippingAddressCommerceCheckoutStep.NAME,
"commerce.checkout.step.order:Integer=10"
},
service = CommerceCheckoutStep.class
)
public class ShippingAddressCommerceCheckoutStep
extends BaseCommerceCheckoutStep {
public static final String NAME = "shipping-address";
@Override
public String getName() {
return NAME;
}
@Override
public boolean isActive(
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse)
throws Exception {
CommerceOrder commerceOrder =
(CommerceOrder)httpServletRequest.getAttribute(
CommerceCheckoutWebKeys.COMMERCE_ORDER);
return commerceOrder.isShippable();
}
@Override
public void processAction(
ActionRequest actionRequest, ActionResponse actionResponse)
throws Exception {
try {
AddressCommerceCheckoutStepDisplayContext
addressCommerceCheckoutStepDisplayContext =
new AddressCommerceCheckoutStepDisplayContext(
_accountEntryLocalService,
CommerceAddressConstants.ADDRESS_TYPE_SHIPPING,
_commerceOrderService, _commerceAddressService,
_countryLocalService,
_commerceOrderModelResourcePermission);
CommerceOrder commerceOrder =
addressCommerceCheckoutStepDisplayContext.
updateCommerceOrderAddress(
actionRequest,
CommerceCheckoutWebKeys.SHIPPING_ADDRESS_PARAM_NAME);
actionRequest.setAttribute(
CommerceCheckoutWebKeys.COMMERCE_ORDER, commerceOrder);
}
catch (Exception exception) {
if (exception instanceof CommerceAddressCityException ||
exception instanceof CommerceAddressCountryException ||
exception instanceof CommerceAddressNameException ||
exception instanceof CommerceAddressStreetException ||
exception instanceof CommerceAddressZipException ||
exception instanceof CommerceOrderBillingAddressException ||
exception instanceof CommerceOrderShippingAddressException) {
SessionErrors.add(actionRequest, exception.getClass());
return;
}
throw exception;
}
}
@Override
public void render(
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse)
throws Exception {
ShippingAddressCheckoutStepDisplayContext
shippingAddressCheckoutStepDisplayContext =
new ShippingAddressCheckoutStepDisplayContext(
_accountEntryLocalService,
_accountEntryModelResourcePermission,
_accountRoleLocalService, _commerceAddressService,
_commerceChannelAccountEntryRelLocalService,
_commerceChannelLocalService, httpServletRequest,
_portletResourcePermission);
CommerceOrder commerceOrder =
shippingAddressCheckoutStepDisplayContext.getCommerceOrder();
if (!commerceOrder.isOpen()) {
httpServletRequest.setAttribute(
CommerceCheckoutWebKeys.COMMERCE_CHECKOUT_STEP_ORDER_DETAIL_URL,
_commerceCheckoutStepHttpHelper.getOrderDetailURL(
httpServletRequest, commerceOrder));
_jspRenderer.renderJSP(
httpServletRequest, httpServletResponse, "/error.jsp");
}
else {
httpServletRequest.setAttribute(
CommerceCheckoutWebKeys.COMMERCE_CHECKOUT_STEP_DISPLAY_CONTEXT,
shippingAddressCheckoutStepDisplayContext);
_jspRenderer.renderJSP(
httpServletRequest, httpServletResponse,
"/checkout_step/address.jsp");
}
}
@Override
public boolean showControls(
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
CommerceOrder commerceOrder =
(CommerceOrder)httpServletRequest.getAttribute(
CommerceCheckoutWebKeys.COMMERCE_ORDER);
if (!commerceOrder.isOpen()) {
return false;
}
return super.showControls(httpServletRequest, httpServletResponse);
}
@Reference
private AccountEntryLocalService _accountEntryLocalService;
@Reference(
policy = ReferencePolicy.DYNAMIC,
policyOption = ReferencePolicyOption.GREEDY,
target = "(model.class.name=com.liferay.account.model.AccountEntry)"
)
private volatile ModelResourcePermission
_accountEntryModelResourcePermission;
@Reference
private AccountRoleLocalService _accountRoleLocalService;
@Reference
private CommerceAddressService _commerceAddressService;
@Reference
private CommerceChannelAccountEntryRelLocalService
_commerceChannelAccountEntryRelLocalService;
@Reference
private CommerceChannelLocalService _commerceChannelLocalService;
@Reference
private CommerceCheckoutStepHttpHelper _commerceCheckoutStepHttpHelper;
@Reference(
target = "(model.class.name=com.liferay.commerce.model.CommerceOrder)"
)
private ModelResourcePermission
_commerceOrderModelResourcePermission;
@Reference
private CommerceOrderService _commerceOrderService;
@Reference
private CountryLocalService _countryLocalService;
@Reference
private JSPRenderer _jspRenderer;
@Reference(
target = "(resource.name=" + CommerceOrderConstants.RESOURCE_NAME + ")"
)
private PortletResourcePermission _portletResourcePermission;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy