Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions Observer/SyncEntitiesDispatch.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?php
/**
* Copyright © 2022 TechNWeb, Inc. All rights reserved.
* See TNW_LICENSE.txt for license details.
*/

declare(strict_types=1);

namespace TNW\Salesforce\Observer;

use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
use TNW\Salesforce\Service\Sync\Entities as SyncEntitiesService;

/**
* Dispatch sync entities at cron run
*/
class SyncEntitiesDispatch implements ObserverInterface
{
/**
* @var SyncEntitiesService
*/
private $syncEntitiesService;

/**
* @param SyncEntitiesService $syncEntitiesService
*/
public function __construct(
SyncEntitiesService $syncEntitiesService
) {
$this->syncEntitiesService = $syncEntitiesService;
}

/**
* Execute
*
* @param Observer $observer
*
* @return void
*/
public function execute(Observer $observer)
{
$this->syncEntitiesService->execute();
}
}
42 changes: 42 additions & 0 deletions Plugin/Console/Command.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?php declare(strict_types=1);
/**
* Copyright © 2022 TechNWeb, Inc. All rights reserved.
* See TNW_LICENSE.txt for license details.
*/
namespace TNW\Salesforce\Plugin\Console;

use Symfony\Component\Console\Command\Command as Subject;
use TNW\Salesforce\Service\Sync\Entities as SyncEntitiesService;

class Command
{
/**
* @var SyncEntitiesService
*/
private $syncEntitiesService;

/**
* @param SyncEntitiesService $syncEntitiesService
*/
public function __construct(
SyncEntitiesService $syncEntitiesService
) {
$this->syncEntitiesService = $syncEntitiesService;
}

/**
* @param Subject $subject
* @param array $args
* @return array
*/
public function beforeRun(Subject $subject, ...$args)
{
$commandName = $subject->getName();

if ($commandName !== 'cron:run') {
$this->syncEntitiesService->execute();
}

return $args;
}
}
40 changes: 40 additions & 0 deletions Plugin/MessageQueue/Publisher.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?php declare(strict_types=1);
/**
* Copyright © 2022 TechNWeb, Inc. All rights reserved.
* See TNW_LICENSE.txt for license details.
*/
namespace TNW\Salesforce\Plugin\MessageQueue;

use Magento\Framework\MessageQueue\PublisherInterface;
use TNW\Salesforce\Service\Sync\Entities as SyncEntitiesService;

class Publisher
{
/**
* @var SyncEntitiesService
*/
private $syncEntitiesService;

/**
* @param SyncEntitiesService $syncEntitiesService
*/
public function __construct(
SyncEntitiesService $syncEntitiesService
) {
$this->syncEntitiesService = $syncEntitiesService;
}

/**
* @param PublisherInterface $subject
* @param mixed $result
* @param string $topicName
* @param mixed $data
* @return mixed
*/
public function afterPublish(PublisherInterface $subject, $result, $topicName, $data)
{
$this->syncEntitiesService->execute();

return $result;
}
}
50 changes: 50 additions & 0 deletions Service/Sync/Entities.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<?php declare(strict_types=1);
/**
* Copyright © 2022 TechNWeb, Inc. All rights reserved.
* See TNW_LICENSE.txt for license details.
*/

namespace TNW\Salesforce\Service\Sync;

use Magento\Framework\Event\Manager;
use TNW\Salesforce\Model\Config;

/**
* Run Sync Entities Dispatch Event
*/
class Entities
{
/**
* @var Manager
*/
private $eventManager;

/**
* @var Config
*/
private $salesforceConfig;

/**
* @param Manager $eventManager
* @param Config $salesforceConfig
*/
public function __construct(
Manager $eventManager,
Config $salesforceConfig
) {
$this->eventManager = $eventManager;
$this->salesforceConfig = $salesforceConfig;
}

/**
* @return void
*/
public function execute()
{
if ($this->salesforceConfig->getSalesforceStatus()) {
return;
}

$this->eventManager->dispatch('tnw_salesforce_entities_sync');
}
}
6 changes: 6 additions & 0 deletions etc/di.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1100,4 +1100,10 @@
<argument name="cleanableExecutorsList" xsi:type="object">TNW\Salesforce\Service\Model\Grid\GetColumnsDataItems\CleanableObjectsList</argument>
</arguments>
</type>
<type name="Symfony\Component\Console\Command\Command">
<plugin name="tnw_salesforce_console_command_entities_sync" type="TNW\Salesforce\Plugin\Console\Command"/>
</type>
<type name="Magento\Framework\MessageQueue\PublisherInterface">
<plugin name="tnw_salesforce_message_queue_publisher_entities_sync" type="TNW\Salesforce\Plugin\MessageQueue\Publisher"/>
</type>
</config>
4 changes: 3 additions & 1 deletion etc/events.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,7 @@
<event name="tnw_salesforce_mapper_delete_commit_after">
<observer name="tnw_restart_consumers" instance="TNW\Salesforce\Observer\RestartConsumers"/>
</event>

<event name="cron_job_run">
<observer name="tnw_salesforce_cron_entities_sync" instance="TNW\Salesforce\Observer\SyncEntitiesDispatch" />
</event>
</config>