// #region [Imports] =================================================================================================== // #endregion [Imports] // Libraries import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; // Types import { ICartConditionField } from '../../../../../types/couponTemplates'; // Components import ConditionLogic from '../ConditionLogic'; import CartQuantity, { cartQuantityDataValidator } from './CartQuantity'; import CartSubtotal, { cartSubtotalDataValidator } from './CartSubtotal'; import CartWeight, { cartWeightDataValidator } from './CartWeight'; import CouponsAppliedInCart, { couponsInCartDataValidator } from './CouponsAppliedInCart'; import ProductQuantitiesExistsInCart, { productQuantitiesDataValidator } from './ProductQuantitiesExistsInCart'; import ProductStockAvailabilityExistsInCart, { productStockDataValidator, } from './ProductStockAvailabilityExistsInCart'; import HasOrderedProductsBefore, { hasOrderedProductsDataValidator } from './HasOrderedProductsBefore'; import ProductCategoriesExistsInCart, { productCategoriesExistsDataValidator } from './ProductCategoriesExistsInCart'; import CustomTaxonomyExistsInCart from './CustomTaxonomyExistsInCart'; import HasOrderedProductCategoriesBefore, { hasOrderedProductCategoriesBeforeDataValidator, } from './HasOrderedProductCategoriesBefore'; import TotalCustomerSpendOnProductCategory, { totalCustomerSpendProductCatDataValidator, } from './TotalCustomerSpendOnProductCategory'; import CustomerLoggedInStatus, { loginStatusDataValidator } from './CustomerLoggedInStatus'; import CustomerUserRole, { customerUserRoleDataValidator } from './CustomerUserRole'; import WithinHours, { withinHoursDataValidator } from './WithinHours'; import TotalCustomerSpend, { totalCustomerSpendDataValidator } from './TotalCustomerSpend'; import NumberOfCustomerOrders, { numberOfOrdersCatDataValidator } from './NumberOfCustomerOrders'; import CustomMeta, { customMetaDataValidator } from './CustomMeta'; // Actions import { CouponTemplatesActions } from '../../../../../store/actions/couponTemplates'; // #region [Variables] ================================================================================================= const { setCartConditionItemData } = CouponTemplatesActions; // #endregion [Variables] // #region [Interfaces]================================================================================================= interface IActions { setCartConditionItemData: typeof setCartConditionItemData; } interface IProps { field: ICartConditionField; groupKey: number; fieldKey: number; actions: IActions; } // #endregion [Interfaces] // #region [Component] ================================================================================================= const ConditionField = (props: IProps) => { const { field, groupKey, fieldKey, actions } = props; const onChange = (data: any) => { actions.setCartConditionItemData({ groupKey, fieldKey, data }); }; switch (field.type) { case 'logic': return ; case 'cart-quantity': return ; case 'cart-subtotal': return ; case 'cart-weight': return ; case 'coupons-applied-in-cart': return ; case 'product-quantity': return ; case 'product-stock-availability-exists-in-cart': return ; case 'has-ordered-before': return ; case 'product-category': return ; case 'custom-taxonomy': return ; case 'has-ordered-product-categories-before': return ; case 'total-customer-spend-on-product-category': return ; case 'customer-logged-in-status': return ; case 'customer-user-role': case 'disallowed-customer-user-role': return ; case 'customer-registration-date': return ; case 'customer-last-ordered': return ; case 'total-customer-spend': return ; case 'number-of-orders': return ; case 'custom-user-meta': case 'custom-cart-item-meta': return ; } return
Unknown field type
; }; const mapDispatchToProps = (dispatch: any) => ({ actions: bindActionCreators({ setCartConditionItemData }, dispatch), }); export default connect(null, mapDispatchToProps)(ConditionField); // #endregion [Component] // #region [Validator] ================================================================================================= export function validateConditionField(type: string, data: unknown) { switch (type) { case 'cart-quantity': return cartQuantityDataValidator(data); case 'cart-subtotal': return cartSubtotalDataValidator(data); case 'cart-weight': return cartWeightDataValidator(data); case 'coupons-applied-in-cart': return couponsInCartDataValidator(data); case 'product-quantity': return productQuantitiesDataValidator(data); case 'product-stock-availability-exists-in-cart': return productStockDataValidator(data); case 'has-ordered-before': return hasOrderedProductsDataValidator(data); case 'product-category': return productCategoriesExistsDataValidator(data); case 'has-ordered-product-categories-before': return hasOrderedProductCategoriesBeforeDataValidator(data); case 'total-customer-spend-on-product-category': return totalCustomerSpendProductCatDataValidator(data); case 'customer-logged-in-status': return loginStatusDataValidator(data); case 'customer-user-role': case 'disallowed-customer-user-role': return customerUserRoleDataValidator(data); case 'customer-registration-date': case 'customer-last-ordered': return withinHoursDataValidator(data); case 'total-customer-spend': return totalCustomerSpendDataValidator(data); case 'number-of-orders': return numberOfOrdersCatDataValidator(data); case 'custom-user-meta': case 'custom-cart-item-meta': return customMetaDataValidator(data); } return []; } // #endregion [Validator]