com.liferay.commerce.discount.internal.validator.RulesCommerceDiscountValidator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of com.liferay.commerce.discount.service
Show all versions of com.liferay.commerce.discount.service
Liferay Commerce Discount Service
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.discount.internal.validator;
import com.liferay.commerce.context.CommerceContext;
import com.liferay.commerce.discount.constants.CommerceDiscountConstants;
import com.liferay.commerce.discount.model.CommerceDiscount;
import com.liferay.commerce.discount.model.CommerceDiscountRule;
import com.liferay.commerce.discount.rule.type.CommerceDiscountRuleType;
import com.liferay.commerce.discount.rule.type.CommerceDiscountRuleTypeRegistry;
import com.liferay.commerce.discount.service.CommerceDiscountRuleLocalService;
import com.liferay.commerce.discount.validator.CommerceDiscountValidator;
import com.liferay.commerce.discount.validator.CommerceDiscountValidatorResult;
import com.liferay.portal.kernel.dao.orm.QueryUtil;
import com.liferay.portal.kernel.exception.PortalException;
import java.util.List;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
/**
* @author Riccardo Alberti
*/
@Component(
property = {
"commerce.discount.validator.key=" + RulesCommerceDiscountValidator.KEY,
"commerce.discount.validator.priority:Integer=30",
"commerce.discount.validator.type=" + CommerceDiscountConstants.VALIDATOR_TYPE_POST_QUALIFICATION
},
service = CommerceDiscountValidator.class
)
public class RulesCommerceDiscountValidator
implements CommerceDiscountValidator {
public static final String KEY = "rules";
@Override
public String getKey() {
return KEY;
}
@Override
public CommerceDiscountValidatorResult validate(
CommerceContext commerceContext, CommerceDiscount commerceDiscount)
throws PortalException {
List commerceDiscountRules =
_commerceDiscountRuleLocalService.getCommerceDiscountRules(
commerceDiscount.getCommerceDiscountId(), QueryUtil.ALL_POS,
QueryUtil.ALL_POS, null);
if (commerceDiscountRules.isEmpty()) {
return new CommerceDiscountValidatorResult(true);
}
for (CommerceDiscountRule commerceDiscountRule :
commerceDiscountRules) {
CommerceDiscountRuleType commerceDiscountRuleType =
_commerceDiscountRuleTypeRegistry.getCommerceDiscountRuleType(
commerceDiscountRule.getType());
boolean commerceDiscountRuleTypeEvaluation =
commerceDiscountRuleType.evaluate(
commerceDiscountRule, commerceContext);
if (!commerceDiscountRuleTypeEvaluation &&
commerceDiscount.isRulesConjunction()) {
return new CommerceDiscountValidatorResult(
commerceDiscount.getCommerceDiscountId(), false,
"the-discount-is-not-valid");
}
else if (commerceDiscountRuleTypeEvaluation &&
!commerceDiscount.isRulesConjunction()) {
return new CommerceDiscountValidatorResult(true);
}
}
if (commerceDiscount.isRulesConjunction()) {
return new CommerceDiscountValidatorResult(true);
}
return new CommerceDiscountValidatorResult(
commerceDiscount.getCommerceDiscountId(), false,
"the-discount-is-not-valid");
}
@Reference
private CommerceDiscountRuleLocalService _commerceDiscountRuleLocalService;
@Reference
private CommerceDiscountRuleTypeRegistry _commerceDiscountRuleTypeRegistry;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy