121 lines
4.0 KiB
PHP
121 lines
4.0 KiB
PHP
<?php
|
|
|
|
namespace App\Services\WeldLogTriggers;
|
|
|
|
use App\Services\WeldLogTriggers\Triggers\SpoolStatusChangerTrigger;
|
|
use App\Services\WeldLogTriggers\Triggers\LineListsUpdateTrigger;
|
|
use App\Services\WeldLogTriggers\Triggers\NdeMatrixUpdateTrigger;
|
|
use App\Services\WeldLogTriggers\Triggers\RequestDateOperationsTrigger;
|
|
use App\Services\WeldLogTriggers\Triggers\RepairLogsUpdateTrigger;
|
|
use App\Services\WeldLogTriggers\Triggers\NdeProjectUpdateTrigger;
|
|
use App\Services\WeldLogTriggers\Triggers\TestPackageOperationsTrigger;
|
|
use App\Services\WeldLogTriggers\Triggers\ConstructionPaintLogsTrigger;
|
|
use App\Services\WeldLogTriggers\Triggers\TestPackSyncTrigger;
|
|
use App\Services\WeldLogTriggers\Triggers\TestPackBaseStatusChangerTrigger;
|
|
use App\Services\WeldLogTriggers\Triggers\PaintFollowUpsSyncTrigger;
|
|
use App\Services\WeldLogTriggers\Triggers\HandoversSyncTrigger;
|
|
use App\Services\WeldLogTriggers\Triggers\TestPackCleanupTrigger;
|
|
use App\Services\WeldLogTriggers\Triggers\NdtCalculationCacheTrigger;
|
|
use App\Services\WeldLogTriggers\Triggers\RegisterCreatorCacheTrigger;
|
|
|
|
/**
|
|
* WeldLog Trigger Registry
|
|
*
|
|
* Central registry for all weld log triggers
|
|
* Manages trigger registration and retrieval
|
|
*/
|
|
class WeldLogTriggerRegistry
|
|
{
|
|
/**
|
|
* @var array Registered triggers
|
|
*/
|
|
protected $triggers = [];
|
|
|
|
/**
|
|
* Constructor - automatically registers all triggers
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$this->registerTriggers();
|
|
}
|
|
|
|
/**
|
|
* Register all trigger instances
|
|
*/
|
|
protected function registerTriggers()
|
|
{
|
|
// Order 1-12 based on trigger execution order
|
|
$this->register(new SpoolStatusChangerTrigger()); // Order 1
|
|
$this->register(new LineListsUpdateTrigger()); // Order 2
|
|
$this->register(new NdeMatrixUpdateTrigger()); // Order 3
|
|
$this->register(new RequestDateOperationsTrigger()); // Order 4
|
|
$this->register(new RepairLogsUpdateTrigger()); // Order 5
|
|
$this->register(new NdeProjectUpdateTrigger()); // Order 6
|
|
$this->register(new TestPackageOperationsTrigger()); // Order 7
|
|
$this->register(new TestPackSyncTrigger()); // Order 8 - Sync from WeldLog to Test Pack
|
|
$this->register(new ConstructionPaintLogsTrigger()); // Order 9
|
|
$this->register(new TestPackBaseStatusChangerTrigger()); // Order 10
|
|
$this->register(new PaintFollowUpsSyncTrigger()); // Order 11
|
|
$this->register(new HandoversSyncTrigger()); // Order 12
|
|
$this->register(new TestPackCleanupTrigger()); // Order 13
|
|
$this->register(new NdtCalculationCacheTrigger()); // Order 14
|
|
$this->register(new RegisterCreatorCacheTrigger()); // Order 15
|
|
}
|
|
|
|
/**
|
|
* Register a single trigger
|
|
*
|
|
* @param \App\Services\WeldLogTriggers\Contracts\WeldLogTriggerInterface $trigger
|
|
*/
|
|
public function register($trigger)
|
|
{
|
|
$this->triggers[$trigger->getName()] = $trigger;
|
|
}
|
|
|
|
/**
|
|
* Get all triggers sorted by execution order
|
|
*
|
|
* @return array
|
|
*/
|
|
public function getTriggersInOrder(): array
|
|
{
|
|
$triggers = $this->triggers;
|
|
usort($triggers, function($a, $b) {
|
|
return $a->getOrder() <=> $b->getOrder();
|
|
});
|
|
return $triggers;
|
|
}
|
|
|
|
/**
|
|
* Get a specific trigger by name
|
|
*
|
|
* @param string $name Trigger name
|
|
* @return \App\Services\WeldLogTriggers\Contracts\WeldLogTriggerInterface|null
|
|
*/
|
|
public function getTrigger(string $name)
|
|
{
|
|
return $this->triggers[$name] ?? null;
|
|
}
|
|
|
|
/**
|
|
* Get all registered trigger names
|
|
*
|
|
* @return array
|
|
*/
|
|
public function getTriggerNames(): array
|
|
{
|
|
return array_keys($this->triggers);
|
|
}
|
|
|
|
/**
|
|
* Get total count of registered triggers
|
|
*
|
|
* @return int
|
|
*/
|
|
public function count(): int
|
|
{
|
|
return count($this->triggers);
|
|
}
|
|
}
|
|
|