Lines 90.90% 10 / 11
Functions and Methods 85.71% 6 / 7
Classes and Traits 0.00% 0 / 1
Name Lines Functions and Methods CRAP Classes and Traits
ActionCall 90.90% 10 / 11 85.71% 6 / 7 12.11 0.00% 0 / 1
 __construct 100.00% 1 / 1 100.00% 1 / 1 1
 getContext 0.00% 0 / 1 0.00% 0 / 1 2
 getRequestedState 100.00% 1 / 1 100.00% 1 / 1 1
 findString 100.00% 2 / 2 100.00% 1 / 1 2
 findNumber 100.00% 2 / 2 100.00% 1 / 1 3
 findBool 100.00% 2 / 2 100.00% 1 / 1 2
 findEntityId 100.00% 2 / 2 100.00% 1 / 1 2
1<?php
2
3declare(strict_types=1);
4
5namespace Stewart\Contracts\Exposure\Action;
6
7use Stewart\Contracts\Entity\EntityId;
8use Stewart\Contracts\Exposure\Command\ExposedCommand;
9use Stewart\Contracts\Exposure\ExposedState;
10use Stewart\Contracts\State\EventContext;
11
12final readonly class ActionCall implements ExposedCommand
13{
14    /** @param array<string, mixed> $data */
15    public function __construct(
16        public array $data,
17        public EventContext $context,
18    ) {}
19
20    public function getContext(): EventContext
21    {
22        return $this->context;
23    }
24
25    public function getRequestedState(): ?ExposedState
26    {
27        return null;
28    }
29
30    public function findString(string $field): ?string
31    {
32        $value = $this->data[$field] ?? null;
33
34        return \is_string($value) ? $value : null;
35    }
36
37    public function findNumber(string $field): int|float|null
38    {
39        $value = $this->data[$field] ?? null;
40
41        return \is_int($value) || \is_float($value) ? $value : null;
42    }
43
44    public function findBool(string $field): ?bool
45    {
46        $value = $this->data[$field] ?? null;
47
48        return \is_bool($value) ? $value : null;
49    }
50
51    public function findEntityId(string $field): ?EntityId
52    {
53        $value = $this->findString($field);
54
55        return $value === null ? null : EntityId::tryFromString($value);
56    }
57}