All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.liferay.commerce.channel.web.internal.display.context.CommerceChannelDisplayContext Maven / Gradle / Ivy

The newest version!
/**
 * 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.channel.web.internal.display.context;

import com.liferay.account.constants.AccountConstants;
import com.liferay.account.model.AccountEntry;
import com.liferay.account.service.AccountEntryService;
import com.liferay.commerce.channel.web.internal.display.context.helper.CommerceChannelRequestHelper;
import com.liferay.commerce.configuration.CommerceAccountGroupServiceConfiguration;
import com.liferay.commerce.configuration.CommerceOrderCheckoutConfiguration;
import com.liferay.commerce.configuration.CommerceOrderFieldsConfiguration;
import com.liferay.commerce.configuration.CommerceOrderImporterDateFormatConfiguration;
import com.liferay.commerce.constants.CommerceConstants;
import com.liferay.commerce.currency.model.CommerceCurrency;
import com.liferay.commerce.currency.service.CommerceCurrencyLocalService;
import com.liferay.commerce.frontend.model.HeaderActionModel;
import com.liferay.commerce.model.CommerceOrder;
import com.liferay.commerce.payment.model.CommercePaymentMethodGroupRel;
import com.liferay.commerce.product.channel.CommerceChannelHealthStatus;
import com.liferay.commerce.product.channel.CommerceChannelHealthStatusRegistry;
import com.liferay.commerce.product.channel.CommerceChannelType;
import com.liferay.commerce.product.channel.CommerceChannelTypeRegistry;
import com.liferay.commerce.product.constants.CPActionKeys;
import com.liferay.commerce.product.constants.CPPortletKeys;
import com.liferay.commerce.product.model.CPTaxCategory;
import com.liferay.commerce.product.model.CommerceChannel;
import com.liferay.commerce.product.service.CPTaxCategoryLocalService;
import com.liferay.commerce.product.service.CommerceChannelService;
import com.liferay.commerce.tax.configuration.CommerceShippingTaxConfiguration;
import com.liferay.document.library.kernel.service.DLAppLocalService;
import com.liferay.frontend.taglib.clay.servlet.taglib.util.CreationMenu;
import com.liferay.item.selector.ItemSelector;
import com.liferay.item.selector.ItemSelectorReturnType;
import com.liferay.item.selector.criteria.FileEntryItemSelectorReturnType;
import com.liferay.item.selector.criteria.file.criterion.FileItemSelectorCriterion;
import com.liferay.petra.string.StringPool;
import com.liferay.portal.configuration.module.configuration.ConfigurationProvider;
import com.liferay.portal.kernel.dao.orm.QueryUtil;
import com.liferay.portal.kernel.exception.NoSuchWorkflowDefinitionLinkException;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.language.LanguageUtil;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.model.WorkflowDefinitionLink;
import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
import com.liferay.portal.kernel.portlet.LiferayWindowState;
import com.liferay.portal.kernel.portlet.PortletProvider;
import com.liferay.portal.kernel.portlet.PortletProviderUtil;
import com.liferay.portal.kernel.portlet.RequestBackedPortletURLFactory;
import com.liferay.portal.kernel.portlet.RequestBackedPortletURLFactoryUtil;
import com.liferay.portal.kernel.portlet.url.builder.PortletURLBuilder;
import com.liferay.portal.kernel.repository.model.FileEntry;
import com.liferay.portal.kernel.search.BaseModelSearchResult;
import com.liferay.portal.kernel.security.permission.ActionKeys;
import com.liferay.portal.kernel.security.permission.PermissionThreadLocal;
import com.liferay.portal.kernel.security.permission.resource.ModelResourcePermission;
import com.liferay.portal.kernel.security.permission.resource.PortletResourcePermission;
import com.liferay.portal.kernel.service.WorkflowDefinitionLinkLocalService;
import com.liferay.portal.kernel.service.permission.GroupPermissionUtil;
import com.liferay.portal.kernel.settings.GroupServiceSettingsLocator;
import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.util.LinkedHashMapBuilder;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.Portal;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.kernel.workflow.WorkflowConstants;
import com.liferay.portal.kernel.workflow.WorkflowDefinition;
import com.liferay.portal.workflow.manager.WorkflowDefinitionManager;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import javax.portlet.PortletRequest;
import javax.portlet.PortletURL;
import javax.portlet.RenderURL;

import javax.servlet.http.HttpServletRequest;

/**
 * @author Alec Sloan
 * @author Alessio Antonio Rendina
 */
public class CommerceChannelDisplayContext
	extends BaseCommerceChannelDisplayContext {

	public CommerceChannelDisplayContext(
		AccountEntryService accountEntryService,
		CommerceChannelHealthStatusRegistry commerceChannelHealthStatusRegistry,
		ModelResourcePermission
			commerceChannelModelResourcePermission,
		CommerceChannelService commerceChannelService,
		CommerceChannelTypeRegistry commerceChannelTypeRegistry,
		CommerceCurrencyLocalService commerceCurrencyLocalService,
		ConfigurationProvider configurationProvider,
		CPTaxCategoryLocalService cpTaxCategoryLocalService,
		DLAppLocalService dlAppLocalService,
		HttpServletRequest httpServletRequest, ItemSelector itemSelector,
		Portal portal,
		WorkflowDefinitionLinkLocalService workflowDefinitionLinkLocalService,
		WorkflowDefinitionManager workflowDefinitionManager) {

		super(httpServletRequest);

		_accountEntryService = accountEntryService;
		_commerceChannelHealthStatusRegistry =
			commerceChannelHealthStatusRegistry;
		_commerceChannelModelResourcePermission =
			commerceChannelModelResourcePermission;
		_commerceChannelService = commerceChannelService;
		_commerceChannelTypeRegistry = commerceChannelTypeRegistry;
		_commerceCurrencyLocalService = commerceCurrencyLocalService;
		_configurationProvider = configurationProvider;
		_cpTaxCategoryLocalService = cpTaxCategoryLocalService;
		_dlAppLocalService = dlAppLocalService;
		_itemSelector = itemSelector;
		_portal = portal;
		_workflowDefinitionLinkLocalService =
			workflowDefinitionLinkLocalService;
		_workflowDefinitionManager = workflowDefinitionManager;

		_commerceChannelRequestHelper = new CommerceChannelRequestHelper(
			httpServletRequest);
	}

	public FileEntry fetchFileEntry() throws PortalException {
		return _dlAppLocalService.fetchFileEntryByExternalReferenceCode(
			getCommerceChannel().getGroupId(), "ORDER_PRINT_TEMPLATE");
	}

	public int getAccountCartMaxAllowed() throws PortalException {
		CommerceOrderFieldsConfiguration commerceOrderFieldsConfiguration =
			_getCommerceOrderFieldsConfiguration();

		int maxAllowed =
			commerceOrderFieldsConfiguration.accountCartMaxAllowed();

		if (maxAllowed < 0) {
			return 0;
		}

		return maxAllowed;
	}

	public CPTaxCategory getActiveShippingTaxCategory() throws PortalException {
		CommerceChannel commerceChannel = getCommerceChannel();

		CommerceShippingTaxConfiguration commerceShippingTaxConfiguration =
			_configurationProvider.getConfiguration(
				CommerceShippingTaxConfiguration.class,
				new GroupServiceSettingsLocator(
					commerceChannel.getGroupId(),
					CommerceConstants.SERVICE_NAME_COMMERCE_TAX));

		return _cpTaxCategoryLocalService.fetchCPTaxCategory(
			commerceShippingTaxConfiguration.taxCategoryId());
	}

	public List getActiveWorkflowDefinitions()
		throws PortalException {

		return _workflowDefinitionManager.liberalGetActiveWorkflowDefinitions(
			_commerceChannelRequestHelper.getCompanyId(), QueryUtil.ALL_POS,
			QueryUtil.ALL_POS, null);
	}

	public String getAddChannelURL() throws Exception {
		return PortletURLBuilder.create(
			_portal.getControlPanelPortletURL(
				httpServletRequest, CPPortletKeys.COMMERCE_CHANNELS,
				PortletRequest.RENDER_PHASE)
		).setMVCRenderCommandName(
			"/commerce_channels/add_commerce_channel"
		).setRedirect(
			getPortletURL()
		).setWindowState(
			LiferayWindowState.POP_UP
		).buildString();
	}

	public String getAddPaymentMethodURL(String commercePaymentMethodEngineKey)
		throws Exception {

		return PortletURLBuilder.create(
			PortletProviderUtil.getPortletURL(
				httpServletRequest,
				CommercePaymentMethodGroupRel.class.getName(),
				PortletProvider.Action.EDIT)
		).setMVCRenderCommandName(
			"/commerce_payment_methods/edit_commerce_payment_method_group_rel"
		).setParameter(
			"commerceChannelId", getCommerceChannelId()
		).setParameter(
			"commercePaymentMethodEngineKey", commercePaymentMethodEngineKey
		).setWindowState(
			LiferayWindowState.POP_UP
		).buildString();
	}

	public String getChannelURL(CommerceChannel commerceChannel)
		throws PortalException {

		if (commerceChannel == null) {
			return StringPool.BLANK;
		}

		PortletURL portletURL = _portal.getControlPanelPortletURL(
			httpServletRequest, CPPortletKeys.COMMERCE_CHANNELS,
			PortletRequest.RENDER_PHASE);

		portletURL.setParameter("backURL", portletURL.toString());
		portletURL.setParameter(
			"commerceChannelId",
			String.valueOf(commerceChannel.getCommerceChannelId()));
		portletURL.setParameter(
			"mvcRenderCommandName", "/commerce_channels/edit_commerce_channel");

		return portletURL.toString();
	}

	public CommerceChannel getCommerceChannel() throws PortalException {
		long commerceChannelId = ParamUtil.getLong(
			httpServletRequest, "commerceChannelId");

		if (commerceChannelId == 0) {
			return null;
		}

		return _commerceChannelService.fetchCommerceChannel(commerceChannelId);
	}

	public long getCommerceChannelId() throws PortalException {
		CommerceChannel commerceChannel = getCommerceChannel();

		if (commerceChannel == null) {
			return 0;
		}

		return commerceChannel.getCommerceChannelId();
	}

	public List getCommerceChannelTypes() {
		return _commerceChannelTypeRegistry.getCommerceChannelTypes();
	}

	public List getCommerceCurrencies()
		throws PortalException {

		return _commerceCurrencyLocalService.getCommerceCurrencies(
			cpRequestHelper.getCompanyId(), true, QueryUtil.ALL_POS,
			QueryUtil.ALL_POS, null);
	}

	public int getCommerceSiteType() throws PortalException {
		CommerceAccountGroupServiceConfiguration
			commerceAccountGroupServiceConfiguration =
				_getCommerceAccountGroupServiceConfiguration();

		return commerceAccountGroupServiceConfiguration.commerceSiteType();
	}

	public CreationMenu getCreationMenu() throws Exception {
		CreationMenu creationMenu = new CreationMenu();

		if (hasAddChannelPermission()) {
			creationMenu.addDropdownItem(
				dropdownItem -> {
					dropdownItem.setHref(getAddChannelURL());
					dropdownItem.setLabel(
						LanguageUtil.get(httpServletRequest, "add-channel"));
					dropdownItem.setTarget("modal-lg");
				});
		}

		return creationMenu;
	}

	public PortletURL getEditCommerceChannelRenderURL() {
		return PortletURLBuilder.create(
			_portal.getControlPanelPortletURL(
				cpRequestHelper.getRequest(), CPPortletKeys.COMMERCE_CHANNELS,
				PortletRequest.RENDER_PHASE)
		).setMVCRenderCommandName(
			"/commerce_channels/edit_commerce_channel"
		).buildPortletURL();
	}

	public List getHeaderActionModels() {
		List headerActionModels = new ArrayList<>();

		LiferayPortletResponse liferayPortletResponse =
			_commerceChannelRequestHelper.getLiferayPortletResponse();

		RenderURL renderURL = liferayPortletResponse.createRenderURL();

		headerActionModels.add(
			new HeaderActionModel(null, renderURL.toString(), null, "cancel"));

		headerActionModels.add(
			new HeaderActionModel(
				"btn-primary", liferayPortletResponse.getNamespace() + "fm",
				null, null, "save"));

		return headerActionModels;
	}

	public String getImageItemSelectorURL() {
		RequestBackedPortletURLFactory requestBackedPortletURLFactory =
			RequestBackedPortletURLFactoryUtil.create(
				cpRequestHelper.getRenderRequest());

		FileItemSelectorCriterion fileItemSelectorCriterion =
			new FileItemSelectorCriterion();

		fileItemSelectorCriterion.setDesiredItemSelectorReturnTypes(
			Collections.singletonList(
				new FileEntryItemSelectorReturnType()));

		return String.valueOf(
			_itemSelector.getItemSelectorURL(
				requestBackedPortletURLFactory, "addFileEntry",
				fileItemSelectorCriterion));
	}

	public String getOrderImporterDateFormat() throws PortalException {
		CommerceChannel commerceChannel = getCommerceChannel();

		CommerceOrderImporterDateFormatConfiguration
			commerceOrderImporterDateFormatConfiguration =
				_configurationProvider.getConfiguration(
					CommerceOrderImporterDateFormatConfiguration.class,
					new GroupServiceSettingsLocator(
						commerceChannel.getGroupId(),
						CommerceConstants.
							SERVICE_NAME_COMMERCE_ORDER_IMPORTER_DATE_FORMAT));

		return commerceOrderImporterDateFormatConfiguration.
			orderImporterDateFormat();
	}

	@Override
	public PortletURL getPortletURL() throws PortalException {
		PortletURL portletURL = super.getPortletURL();

		String filterFields = ParamUtil.getString(
			httpServletRequest, "filterFields");

		if (Validator.isNotNull(filterFields)) {
			portletURL.setParameter("filterFields", filterFields);
		}

		String filtersLabels = ParamUtil.getString(
			httpServletRequest, "filtersLabels");

		if (Validator.isNotNull(filtersLabels)) {
			portletURL.setParameter("filtersLabels", filtersLabels);
		}

		String filtersValues = ParamUtil.getString(
			httpServletRequest, "filtersValues");

		if (Validator.isNotNull(filtersValues)) {
			portletURL.setParameter("filtersValues", filtersValues);
		}

		return portletURL;
	}

	public List getSupplierAccountEntries()
		throws PortalException {

		BaseModelSearchResult baseModelSearchResult =
			_accountEntryService.searchAccountEntries(
				null,
				LinkedHashMapBuilder.put(
					"status", WorkflowConstants.STATUS_APPROVED
				).put(
					"types",
					new String[] {AccountConstants.ACCOUNT_ENTRY_TYPE_SUPPLIER}
				).build(),
				QueryUtil.ALL_POS, QueryUtil.ALL_POS, "name", false);

		return baseModelSearchResult.getBaseModels();
	}

	public List getTaxCategories() {
		return _cpTaxCategoryLocalService.getCPTaxCategories(
			_commerceChannelRequestHelper.getCompanyId(), QueryUtil.ALL_POS,
			QueryUtil.ALL_POS, null);
	}

	public WorkflowDefinitionLink getWorkflowDefinitionLink(long typePK)
		throws PortalException {

		WorkflowDefinitionLink workflowDefinitionLink = null;

		CommerceChannel commerceChannel = getCommerceChannel();

		try {
			workflowDefinitionLink =
				_workflowDefinitionLinkLocalService.getWorkflowDefinitionLink(
					_commerceChannelRequestHelper.getCompanyId(),
					commerceChannel.getGroupId(), CommerceOrder.class.getName(),
					0, typePK, true);
		}
		catch (NoSuchWorkflowDefinitionLinkException
					noSuchWorkflowDefinitionLinkException) {

			if (_log.isDebugEnabled()) {
				_log.debug(noSuchWorkflowDefinitionLinkException);
			}
		}

		return workflowDefinitionLink;
	}

	public boolean hasAddChannelPermission() {
		ThemeDisplay themeDisplay =
			(ThemeDisplay)httpServletRequest.getAttribute(
				WebKeys.THEME_DISPLAY);

		PortletResourcePermission portletResourcePermission =
			_commerceChannelModelResourcePermission.
				getPortletResourcePermission();

		return portletResourcePermission.contains(
			themeDisplay.getPermissionChecker(), null,
			CPActionKeys.ADD_COMMERCE_CHANNEL);
	}

	public boolean hasAddLayoutPermission() throws PortalException {
		CommerceChannel commerceChannel = getCommerceChannel();

		return GroupPermissionUtil.contains(
			PermissionThreadLocal.getPermissionChecker(),
			commerceChannel.getSiteGroupId(), ActionKeys.ADD_LAYOUT);
	}

	public boolean hasManageLinkSupplierPermission() {
		PortletResourcePermission portletResourcePermission =
			_commerceChannelModelResourcePermission.
				getPortletResourcePermission();

		ThemeDisplay themeDisplay =
			(ThemeDisplay)httpServletRequest.getAttribute(
				WebKeys.THEME_DISPLAY);

		return portletResourcePermission.contains(
			themeDisplay.getPermissionChecker(), null,
			CPActionKeys.VIEW_COMMERCE_CHANNELS);
	}

	public boolean hasPermission(long commerceChannelId, String actionId)
		throws PortalException {

		ThemeDisplay themeDisplay =
			(ThemeDisplay)httpServletRequest.getAttribute(
				WebKeys.THEME_DISPLAY);

		return _commerceChannelModelResourcePermission.contains(
			themeDisplay.getPermissionChecker(), commerceChannelId, actionId);
	}

	public boolean hasUnsatisfiedCommerceHealthChecks() throws PortalException {
		List commerceChannelHealthStatuses =
			_commerceChannelHealthStatusRegistry.
				getCommerceChannelHealthStatuses();

		for (CommerceChannelHealthStatus commerceChannelHealthStatus :
				commerceChannelHealthStatuses) {

			if (!commerceChannelHealthStatus.isFixed(
					_commerceChannelRequestHelper.getCompanyId(),
					getCommerceChannelId())) {

				return true;
			}
		}

		return false;
	}

	public boolean isCheckoutRequestedDeliveryDateEnabled()
		throws PortalException {

		CommerceChannel commerceChannel = getCommerceChannel();

		CommerceOrderCheckoutConfiguration commerceOrderCheckoutConfiguration =
			_configurationProvider.getConfiguration(
				CommerceOrderCheckoutConfiguration.class,
				new GroupServiceSettingsLocator(
					commerceChannel.getGroupId(),
					CommerceConstants.SERVICE_NAME_COMMERCE_ORDER));

		return commerceOrderCheckoutConfiguration.
			checkoutRequestedDeliveryDateEnabled();
	}

	public boolean isGuestCheckoutEnabled() throws PortalException {
		CommerceChannel commerceChannel = getCommerceChannel();

		CommerceOrderCheckoutConfiguration commerceOrderCheckoutConfiguration =
			_configurationProvider.getConfiguration(
				CommerceOrderCheckoutConfiguration.class,
				new GroupServiceSettingsLocator(
					commerceChannel.getGroupId(),
					CommerceConstants.SERVICE_NAME_COMMERCE_ORDER));

		return commerceOrderCheckoutConfiguration.guestCheckoutEnabled();
	}

	public boolean isHideShippingPriceZero() throws PortalException {
		CommerceChannel commerceChannel = getCommerceChannel();

		CommerceOrderCheckoutConfiguration commerceOrderCheckoutConfiguration =
			_configurationProvider.getConfiguration(
				CommerceOrderCheckoutConfiguration.class,
				new GroupServiceSettingsLocator(
					commerceChannel.getGroupId(),
					CommerceConstants.SERVICE_NAME_COMMERCE_ORDER));

		return commerceOrderCheckoutConfiguration.hideShippingPriceZero();
	}

	public boolean isMultishippingEnabled() throws PortalException {
		CommerceChannel commerceChannel = getCommerceChannel();

		CommerceOrderCheckoutConfiguration commerceOrderCheckoutConfiguration =
			_configurationProvider.getConfiguration(
				CommerceOrderCheckoutConfiguration.class,
				new GroupServiceSettingsLocator(
					commerceChannel.getGroupId(),
					CommerceConstants.SERVICE_NAME_COMMERCE_ORDER));

		return commerceOrderCheckoutConfiguration.multishippingEnabled();
	}

	public boolean isRequestQuoteEnabled() throws PortalException {
		CommerceOrderFieldsConfiguration commerceOrderFieldsConfiguration =
			_getCommerceOrderFieldsConfiguration();

		return commerceOrderFieldsConfiguration.requestQuoteEnabled();
	}

	public boolean isShowPurchaseOrderNumber() throws PortalException {
		CommerceChannel commerceChannel = getCommerceChannel();

		CommerceOrderFieldsConfiguration commerceOrderFieldsConfiguration =
			_configurationProvider.getConfiguration(
				CommerceOrderFieldsConfiguration.class,
				new GroupServiceSettingsLocator(
					commerceChannel.getGroupId(),
					CommerceConstants.SERVICE_NAME_COMMERCE_ORDER));

		return commerceOrderFieldsConfiguration.showPurchaseOrderNumber();
	}

	public boolean isShowSeparateOrderItems() throws PortalException {
		CommerceChannel commerceChannel = getCommerceChannel();

		CommerceOrderCheckoutConfiguration commerceOrderCheckoutConfiguration =
			_configurationProvider.getConfiguration(
				CommerceOrderCheckoutConfiguration.class,
				new GroupServiceSettingsLocator(
					commerceChannel.getGroupId(),
					CommerceConstants.SERVICE_NAME_COMMERCE_ORDER));

		return commerceOrderCheckoutConfiguration.showSeparateOrderItems();
	}

	private CommerceAccountGroupServiceConfiguration
			_getCommerceAccountGroupServiceConfiguration()
		throws PortalException {

		if (_commerceAccountGroupServiceConfiguration != null) {
			return _commerceAccountGroupServiceConfiguration;
		}

		CommerceChannel commerceChannel = getCommerceChannel();

		_commerceAccountGroupServiceConfiguration =
			_configurationProvider.getConfiguration(
				CommerceAccountGroupServiceConfiguration.class,
				new GroupServiceSettingsLocator(
					commerceChannel.getGroupId(),
					CommerceConstants.SERVICE_NAME_COMMERCE_ACCOUNT));

		return _commerceAccountGroupServiceConfiguration;
	}

	private CommerceOrderFieldsConfiguration
			_getCommerceOrderFieldsConfiguration()
		throws PortalException {

		if (_commerceOrderFieldsConfiguration != null) {
			return _commerceOrderFieldsConfiguration;
		}

		CommerceChannel commerceChannel = getCommerceChannel();

		_commerceOrderFieldsConfiguration =
			_configurationProvider.getConfiguration(
				CommerceOrderFieldsConfiguration.class,
				new GroupServiceSettingsLocator(
					commerceChannel.getGroupId(),
					CommerceConstants.SERVICE_NAME_COMMERCE_ORDER_FIELDS));

		return _commerceOrderFieldsConfiguration;
	}

	private static final Log _log = LogFactoryUtil.getLog(
		CommerceChannelDisplayContext.class);

	private final AccountEntryService _accountEntryService;
	private CommerceAccountGroupServiceConfiguration
		_commerceAccountGroupServiceConfiguration;
	private final CommerceChannelHealthStatusRegistry
		_commerceChannelHealthStatusRegistry;
	private final ModelResourcePermission
		_commerceChannelModelResourcePermission;
	private final CommerceChannelRequestHelper _commerceChannelRequestHelper;
	private final CommerceChannelService _commerceChannelService;
	private final CommerceChannelTypeRegistry _commerceChannelTypeRegistry;
	private final CommerceCurrencyLocalService _commerceCurrencyLocalService;
	private CommerceOrderFieldsConfiguration _commerceOrderFieldsConfiguration;
	private final ConfigurationProvider _configurationProvider;
	private final CPTaxCategoryLocalService _cpTaxCategoryLocalService;
	private final DLAppLocalService _dlAppLocalService;
	private final ItemSelector _itemSelector;
	private final Portal _portal;
	private final WorkflowDefinitionLinkLocalService
		_workflowDefinitionLinkLocalService;
	private final WorkflowDefinitionManager _workflowDefinitionManager;

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy