Skip to content

Commit

Permalink
PES-2076: isActive refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
jan-potuznik-z committed May 13, 2024
1 parent 5c6c2c9 commit 1641c56
Show file tree
Hide file tree
Showing 6 changed files with 132 additions and 9 deletions.
1 change: 1 addition & 0 deletions config/config.neon
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ services:
- Packetery\Module\RateCalculator
- Packetery\Module\Carrier\PacketaPickupPointsConfig
- Packetery\Module\Carrier\EntityRepository
- Packetery\Module\Carrier\ActivityBridge
- Packetery\Module\Order\AttributeMapper
- Packetery\Module\WidgetOptionsBuilder
- Packetery\Core\PickupPointProvider\CompoundCarrierCollectionFactory
Expand Down
80 changes: 80 additions & 0 deletions src/Packetery/Module/Carrier/ActivityBridge.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
<?php
/**
* ActivityBridge.
*
* @package Packetery
*/

namespace Packetery\Module\Carrier;

use Packetery\Module\Carrier;
use Packetery\Module\Options;
use Packetery\Module\ShippingMethod;
use WC_Shipping_Zones;

/**
* ActivityBridge.
*
* @package Packetery
*/
class ActivityBridge {

/**
* Options provider.
*
* @var Options\Provider
*/
private $optionsProvider;

/**
* Constructor.
*
* @param Options\Provider $optionsProvider Options provider.
*/
public function __construct( Options\Provider $optionsProvider ) {
$this->optionsProvider = $optionsProvider;
}

/**
* Gets active carrier ids.
*
* @return array
*/
private function getActiveCarrierIds(): array {
$activeMethods = [];
$shippingZones = WC_Shipping_Zones::get_zones();

foreach ( $shippingZones as $shippingZone ) {
$shippingMethods = $shippingZone['shipping_methods'];

foreach ( $shippingMethods as $shippingMethod ) {
if (
$shippingMethod instanceof ShippingMethod &&
'yes' === $shippingMethod->enabled &&
! empty( $shippingMethod->get_option( 'carrier_id' ) )
) {
$activeMethods[] = $shippingMethod->get_option( 'carrier_id' );
}
}
}

return $activeMethods;
}

/**
* Tells if carrier is active.
*
* @param string $carrierId Carrier id.
* @param \Packetery\Module\Carrier\Options $carrierOptions Carrier options.
*
* @return bool
*/
public function isActive( string $carrierId, Carrier\Options $carrierOptions ): bool {
if ( $this->optionsProvider->isWcCarrierConfigEnabled() ) {
return in_array( $carrierId, $this->getActiveCarrierIds(), true );
}

return $carrierOptions->isActive();
}

}
14 changes: 12 additions & 2 deletions src/Packetery/Module/Carrier/CountryListingPage.php
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,13 @@ class CountryListingPage {
*/
private $formFactory;

/**
* Carrier activity checker.
*
* @var ActivityBridge
*/
private $carrierActivityBridge;

/**
* CountryListingPage constructor.
*
Expand All @@ -113,6 +120,7 @@ class CountryListingPage {
* @param EntityRepository $carrierEntityRepository Carrier repository.
* @param CarDeliveryConfig $carDeliveryConfig Car delivery config.
* @param FormFactory $formFactory Form Factory.
* @param ActivityBridge $carrierActivityBridge Carrier activity checker.
*/
public function __construct(
Engine $latteEngine,
Expand All @@ -124,7 +132,8 @@ public function __construct(
PacketaPickupPointsConfig $pickupPointsConfig,
EntityRepository $carrierEntityRepository,
CarDeliveryConfig $carDeliveryConfig,
FormFactory $formFactory
FormFactory $formFactory,
ActivityBridge $carrierActivityBridge
) {
$this->latteEngine = $latteEngine;
$this->carrierRepository = $carrierRepository;
Expand All @@ -136,6 +145,7 @@ public function __construct(
$this->carrierEntityRepository = $carrierEntityRepository;
$this->carDeliveryConfig = $carDeliveryConfig;
$this->formFactory = $formFactory;
$this->carrierActivityBridge = $carrierActivityBridge;
}

/**
Expand Down Expand Up @@ -388,7 +398,7 @@ private function getCarriersDataByCountry( string $countryCode ): array {

$carrierNames[ $carrierId ] = [
'name' => $carrier->getName(),
'isActive' => $carrierOptions->isActive(),
'isActive' => $this->carrierActivityBridge->isActive( $carrier->getId(), $carrierOptions ),
'detailUrl' => add_query_arg(
[
'page' => OptionsPage::SLUG,
Expand Down
18 changes: 15 additions & 3 deletions src/Packetery/Module/Carrier/EntityRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,21 +42,31 @@ class EntityRepository {
*/
private $pickupPointsConfig;

/**
* Carrier activity checker.
*
* @var ActivityBridge
*/
private $activityBridge;

/**
* Constructor.
*
* @param Repository $repository Carrier repository.
* @param EntityFactory\Carrier $carrierEntityFactory Carrier Entity Factory.
* @param PacketaPickupPointsConfig $pickupPointsConfig Internal pickup points config.
* @param ActivityBridge $activityBridge Carrier activity checker.
*/
public function __construct(
Repository $repository,
EntityFactory\Carrier $carrierEntityFactory,
PacketaPickupPointsConfig $pickupPointsConfig
PacketaPickupPointsConfig $pickupPointsConfig,
ActivityBridge $activityBridge
) {
$this->repository = $repository;
$this->carrierEntityFactory = $carrierEntityFactory;
$this->pickupPointsConfig = $pickupPointsConfig;
$this->activityBridge = $activityBridge;
}

/**
Expand Down Expand Up @@ -189,7 +199,7 @@ public function getAllActiveCarriersList(): array {
$carriers = $this->getAllCarriersIncludingNonFeed();
foreach ( $carriers as $carrier ) {
$carrierOptions = Options::createByCarrierId( $carrier->getId() );
if ( $carrierOptions->isActive() ) {
if ( $this->activityBridge->isActive( $carrier->getId(), $carrierOptions ) ) {
$activeCarriers[] = [
'option_id' => $carrierOptions->getOptionId(),
'label' => $carrierOptions->getName(),
Expand Down Expand Up @@ -221,7 +231,9 @@ public function isValidForCountry( string $carrierId, string $customerCountry ):
return false;
}

return Options::createByCarrierId( $carrier->getId() )->isActive();
$carrierOptions = Options::createByCarrierId( $carrier->getId() );

return $this->activityBridge->isActive( $carrier->getId(), $carrierOptions );
}

/**
Expand Down
14 changes: 12 additions & 2 deletions src/Packetery/Module/Checkout.php
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,13 @@ class Checkout {
*/
private $carDeliveryConfig;

/**
* Carrier activity checker.
*
* @var Carrier\ActivityBridge
*/
private $carrierActivityBridge;

/**
* Checkout constructor.
*
Expand All @@ -157,6 +164,7 @@ class Checkout {
* @param Carrier\EntityRepository $carrierEntityRepository Carrier repository.
* @param Api\Internal\CheckoutRouter $apiRouter API router.
* @param CarDeliveryConfig $carDeliveryConfig Car delivery config.
* @param Carrier\ActivityBridge $activityBridge Carrier activity checker.
*/
public function __construct(
Engine $latte_engine,
Expand All @@ -173,7 +181,8 @@ public function __construct(
WidgetOptionsBuilder $widgetOptionsBuilder,
Carrier\EntityRepository $carrierEntityRepository,
Api\Internal\CheckoutRouter $apiRouter,
CarDeliveryConfig $carDeliveryConfig
CarDeliveryConfig $carDeliveryConfig,
Carrier\ActivityBridge $activityBridge
) {
$this->latte_engine = $latte_engine;
$this->options_provider = $options_provider;
Expand All @@ -190,6 +199,7 @@ public function __construct(
$this->carrierEntityRepository = $carrierEntityRepository;
$this->apiRouter = $apiRouter;
$this->carDeliveryConfig = $carDeliveryConfig;
$this->carrierActivityBridge = $activityBridge;
}

/**
Expand Down Expand Up @@ -876,7 +886,7 @@ public function getShippingRates( ?array $allowedCarrierNames ): array {
$carrierName = $allowedCarrierNames[ $carrier->getId() ];
}

if ( null === $allowedCarrierNames && false === $options->isActive() ) {
if ( false === $this->carrierActivityBridge->isActive( $carrier->getId(), $options ) ) {
continue;
}

Expand Down
14 changes: 12 additions & 2 deletions src/Packetery/Module/DashboardWidget.php
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,13 @@ class DashboardWidget {
*/
private $carrierEntityRepository;

/**
* Carrier activity checker.
*
* @var Carrier\ActivityBridge
*/
private $carrierActivityBridge;

/**
* Constructor.
*
Expand All @@ -81,6 +88,7 @@ class DashboardWidget {
* @param Options\Page $optionsPage Options page.
* @param array $surveyConfig Survey config.
* @param Carrier\EntityRepository $carrierEntityRepository Carrier repository.
* @param Carrier\ActivityBridge $carrierActivityBridge Carrier activity checker.
*/
public function __construct(
Engine $latteEngine,
Expand All @@ -89,7 +97,8 @@ public function __construct(
Carrier\OptionsPage $carrierOptionsPage,
Options\Page $optionsPage,
array $surveyConfig,
Carrier\EntityRepository $carrierEntityRepository
Carrier\EntityRepository $carrierEntityRepository,
Carrier\ActivityBridge $carrierActivityBridge
) {
$this->latteEngine = $latteEngine;
$this->carrierRepository = $carrierRepository;
Expand All @@ -98,6 +107,7 @@ public function __construct(
$this->optionsPage = $optionsPage;
$this->surveyConfig = $surveyConfig;
$this->carrierEntityRepository = $carrierEntityRepository;
$this->carrierActivityBridge = $carrierActivityBridge;
}

/**
Expand Down Expand Up @@ -154,7 +164,7 @@ public function render(): void {
$country = $carrier->getCountry();
$carrierOptions = Carrier\Options::createByCarrierId( $carrier->getId() );

if ( false === $carrierOptions->isActive() ) {
if ( false === $this->carrierActivityBridge->isActive( $carrier->getId(), $carrierOptions ) ) {
continue;
}

Expand Down

0 comments on commit 1641c56

Please sign in to comment.