<?php
namespace App\Entity;
use App\Repository\RecommendationRepository;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Overblog\GraphQLBundle\Annotation\Field;
#[ORM\Entity(repositoryClass: RecommendationRepository::class)]
#[ORM\InheritanceType('SINGLE_TABLE')]
#[ORM\DiscriminatorColumn(name: 'discr', type: 'string')]
#[ORM\DiscriminatorMap([
'generic' => GenericRecommendation::class,
'specific' => SpecificRecommendation::class,
'port' => PortRecommendation::class,
'leaked_password' => LeakedPasswordRecommendation::class,
])]
class Recommendation extends BasicEntity
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column] #[Field(name: "id", type: "int")]
protected ?int $id = null;
#[ORM\Column(type: Types::TEXT)]
#[Field(name: "title", type: "string")]
protected ?string $title = null;
#[ORM\Column]
#[Field(name: "is_implemented", type: "boolean")]
protected bool $isImplemented = false;
#[ORM\ManyToOne(inversedBy: 'recommendations')]
#[ORM\JoinColumn(nullable: true)]
#[Field(name: "domain")]
protected ?Domain $domain = null;
#[ORM\Column(type: Types::TEXT, nullable: true)]
#[Field(name: "subdomain", type: 'string')]
protected ?string $subdomain = null;
#[ORM\ManyToOne(targetEntity: Vulnerability::class, inversedBy: 'recommendation', cascade: ["remove"])]
#[ORM\JoinColumn(nullable: true, onDelete:'CASCADE')]
#[Field(name: "vulnerability")]
protected ?Vulnerability $vulnerability;
public function getId(): ?int
{
return $this->id;
}
public function getTitle(): ?string
{
return $this->title;
}
public function setTitle(string $title): static
{
$this->title = $title;
return $this;
}
public function isImplemented(): bool
{
return $this->isImplemented;
}
public function setIsImplemented(bool $isImplemented): static
{
$this->isImplemented = $isImplemented;
return $this;
}
public function getDomain(): ?Domain
{
return $this->domain;
}
public function setDomain(?Domain $domain): static
{
$this->domain = $domain;
return $this;
}
public function getSubdomain(): ?string
{
return $this->subdomain;
}
public function setSubdomain(?string $subdomain): static
{
$this->subdomain = $subdomain;
return $this;
}
public function getVulnerability(): ?Vulnerability
{
return $this->vulnerability;
}
public function setVulnerability(?Vulnerability $vulnerability): static
{
$this->vulnerability = $vulnerability;
return $this;
}
}