Passed
Push — develop ( 4627d2...e6c657 )
by Daniel
06:01
created

Route::setRoute()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Silverback\ApiComponentBundle\Entity\Route;
4
5
use ApiPlatform\Core\Annotation\ApiResource;
6
use Doctrine\ORM\Mapping as ORM;
7
use Ramsey\Uuid\Uuid;
8
use Silverback\ApiComponentBundle\Entity\Content\AbstractContent;
9
use Symfony\Component\Serializer\Annotation\Groups;
10
use Symfony\Component\Validator\Constraints as Assert;
11
12
/**
13
 * Class Route
14
 * @package Silverback\ApiComponentBundle\Entity
15
 * @author Daniel West <[email protected]>
16
 * @ApiResource(
17
 *     itemOperations={
18
 *         "get"={"method"="GET", "path"="/routes/{id}", "requirements"={"id"=".+"}},
19
 *         "put"={"method"="PUT", "path"="/routes/{id}", "requirements"={"id"=".+"}},
20
 *         "delete"={"method"="DELETE", "path"="/routes/{id}", "requirements"={"id"=".+"}}
21
 *     }
22
 * )
23
 * @ORM\Entity()
24
 */
25
class Route
26
{
27
    /**
28
     * @ORM\Id()
29
     * @ORM\Column(type="string")
30
     * @Groups({"default"})
31
     * @var string
32
     */
33
    private $route;
34
35
    /**
36
     * @ORM\Column(type="string", unique=true)
37
     * @Groups({"route"})
38
     * @var string
39
     */
40
    private $name;
41
42
    /**
43
     * @ORM\ManyToOne(targetEntity="Silverback\ApiComponentBundle\Entity\Content\AbstractContent", cascade={"remove"})
44
     * @ORM\JoinColumn(onDelete="CASCADE")
45
     * @Groups({"route"})
46
     * @Assert\Type("Silverback\ApiComponentBundle\Entity\Route\RouteAwareInterface")
47
     * @var null|AbstractContent
48
     */
49
    private $content;
50
51
    /**
52
     * @ORM\ManyToOne(targetEntity="Silverback\ApiComponentBundle\Entity\Route\Route")
53
     * @ORM\JoinColumn(name="redirect", referencedColumnName="route")
54
     * @Groups({"route"})
55
     * @var null|Route
56
     */
57
    private $redirect;
58
59 10
    public function __construct(?string $name = null, ?string $route = null, ?Route $redirect = null)
60
    {
61 10
        $this->name = $name ?: Uuid::uuid4()->getHex();
62 10
        $this->route = $route ?: '/' . Uuid::uuid4()->getHex();
63 10
        $this->setRedirect($redirect);
64 10
    }
65
66
    /**
67
     * @return string
68
     */
69
    public function getName(): string
70
    {
71
        return $this->name;
72
    }
73
74
    /**
75
     * @param string $name
76
     */
77 3
    public function setName(string $name): void
78
    {
79 3
        $this->name = $name;
80 3
    }
81
82
    /**
83
     * @return string
84
     */
85 4
    public function getRoute(): string
86
    {
87 4
        return $this->route;
88
    }
89
90
    /**
91
     * @param string $route
92
     */
93 4
    public function setRoute(string $route): void
94
    {
95 4
        $this->route = $route;
96 4
    }
97
98
    /**
99
     * @return null|AbstractContent
100
     */
101 1
    public function getContent(): ?AbstractContent
102
    {
103 1
        return $this->content;
104
    }
105
106
    /**
107
     * @param null|AbstractContent $content
108
     */
109 4
    public function setContent(?AbstractContent $content): void
110
    {
111 4
        $this->content = $content;
112 4
    }
113
114
    /**
115
     * @return null|Route
116
     */
117 1
    public function getRedirect(): ?Route
118
    {
119 1
        return $this->redirect;
120
    }
121
122
    /**
123
     * @param null|Route $redirect
124
     */
125 9
    public function setRedirect(?Route $redirect): void
126
    {
127 9
        $this->redirect = $redirect;
128 9
    }
129
}
130