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); } }