Refactor filter factory into multiple functions

[MAILPOET-3220]
This commit is contained in:
Pavel Dohnal
2021-05-12 11:10:24 +02:00
committed by Veljko V
parent 4fff3ff56c
commit e3bd23a2ee

View File

@ -78,18 +78,37 @@ class FilterFactory {
$action = $filterData->getParam('action'); $action = $filterData->getParam('action');
switch ($filterType) { switch ($filterType) {
case DynamicSegmentFilterData::TYPE_USER_ROLE: case DynamicSegmentFilterData::TYPE_USER_ROLE:
return $this->userRole($action);
case DynamicSegmentFilterData::TYPE_EMAIL:
return $this->email($action);
case DynamicSegmentFilterData::TYPE_WOOCOMMERCE_SUBSCRIPTION:
return $this->wooCommerceSubscription();
case DynamicSegmentFilterData::TYPE_WOOCOMMERCE:
return $this->wooCommerce($action);
default:
throw new InvalidFilterException('Invalid type', InvalidFilterException::INVALID_TYPE);
}
}
private function userRole($action) {
if ($action === SubscriberSubscribedDate::TYPE) { if ($action === SubscriberSubscribedDate::TYPE) {
return $this->subscriberSubscribedDate; return $this->subscriberSubscribedDate;
} }
return $this->userRole; return $this->userRole;
case DynamicSegmentFilterData::TYPE_EMAIL: }
private function email($action) {
if ($action === EmailOpensAbsoluteCountAction::TYPE) { if ($action === EmailOpensAbsoluteCountAction::TYPE) {
return $this->emailOpensAbsoluteCount; return $this->emailOpensAbsoluteCount;
} }
return $this->emailAction; return $this->emailAction;
case DynamicSegmentFilterData::TYPE_WOOCOMMERCE_SUBSCRIPTION: }
private function wooCommerceSubscription() {
return $this->wooCommerceSubscription; return $this->wooCommerceSubscription;
case DynamicSegmentFilterData::TYPE_WOOCOMMERCE: }
private function wooCommerce($action) {
if ($action === WooCommerceProduct::ACTION_PRODUCT) { if ($action === WooCommerceProduct::ACTION_PRODUCT) {
return $this->wooCommerceProduct; return $this->wooCommerceProduct;
} elseif ($action === WooCommerceNumberOfOrders::ACTION_NUMBER_OF_ORDERS) { } elseif ($action === WooCommerceNumberOfOrders::ACTION_NUMBER_OF_ORDERS) {
@ -100,8 +119,5 @@ class FilterFactory {
return $this->wooCommerceCountry; return $this->wooCommerceCountry;
} }
return $this->wooCommerceCategory; return $this->wooCommerceCategory;
default:
throw new InvalidFilterException('Invalid type', InvalidFilterException::INVALID_TYPE);
}
} }
} }