version = $version; } public function render(): \Illuminate\Contracts\View\View { return view('livewire.policy-version-assignments-widget', [ 'version' => $this->version, 'compliance' => $this->complianceNotifications(), ]); } /** * @return array{total:int,templates:array,items:array} */ private function complianceNotifications(): array { if ($this->version->policy_type !== 'deviceCompliancePolicy') { return [ 'total' => 0, 'templates' => [], 'items' => [], ]; } $snapshot = $this->version->snapshot; if (! is_array($snapshot)) { return [ 'total' => 0, 'templates' => [], 'items' => [], ]; } $scheduled = $snapshot['scheduledActionsForRule'] ?? null; if (! is_array($scheduled)) { return [ 'total' => 0, 'templates' => [], 'items' => [], ]; } $items = []; $templateIds = []; foreach ($scheduled as $rule) { if (! is_array($rule)) { continue; } $ruleName = $rule['ruleName'] ?? null; $configs = $rule['scheduledActionConfigurations'] ?? null; if (! is_array($configs)) { continue; } foreach ($configs as $config) { if (! is_array($config)) { continue; } if (($config['actionType'] ?? null) !== 'notification') { continue; } $templateKey = $this->resolveNotificationTemplateKey($config); if ($templateKey === null) { continue; } $templateId = $config[$templateKey] ?? null; if (! is_string($templateId) || $templateId === '' || $this->isEmptyGuid($templateId)) { continue; } $items[] = [ 'rule_name' => is_string($ruleName) ? $ruleName : null, 'template_id' => $templateId, 'template_key' => $templateKey, ]; $templateIds[] = $templateId; } } return [ 'total' => count($items), 'templates' => array_values(array_unique($templateIds)), 'items' => $items, ]; } private function resolveNotificationTemplateKey(array $config): ?string { if (array_key_exists('notificationTemplateId', $config)) { return 'notificationTemplateId'; } if (array_key_exists('notificationMessageTemplateId', $config)) { return 'notificationMessageTemplateId'; } return null; } private function isEmptyGuid(string $value): bool { return strtolower($value) === '00000000-0000-0000-0000-000000000000'; } }