StatusChangeFailed::getStatus()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace ReliqArts\Logistiq\Tracking\Exceptions;
6
7
use ReliqArts\Logistiq\Tracking\Contracts\Status;
8
use ReliqArts\Logistiq\Tracking\Contracts\Trackable;
9
10
final class StatusChangeFailed extends Exception
11
{
12
    /**
13
     * @var null|Status
14
     */
15
    private $status;
16
17
    /**
18
     * @param Trackable $trackable
19
     * @param Status    $targetStatus
20
     *
21
     * @return StatusChangeFailed
22
     */
23
    public static function forTrackable(Trackable $trackable, Status $targetStatus): self
24
    {
25
        $message = sprintf(
26
            'Status change failed for trackable (%s). Target status: %s',
27
            (string)$trackable->getIdentifier(),
28
            $targetStatus->getName()
29
        );
30
        $instance = new self($message);
31
32
        $instance->trackable = $trackable;
33
        $instance->status = $targetStatus;
34
35
        return $instance;
36
    }
37
38
    /**
39
     * @return null|Status
40
     */
41
    public function getStatus(): ?Status
42
    {
43
        return $this->status;
44
    }
45
}
46