<?php
namespace App\Entity;
use ApiPlatform\Metadata\Get;
use Doctrine\ORM\Mapping as ORM;
use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Delete;
use ApiPlatform\Metadata\GetCollection;
use ApiPlatform\Metadata\Post;
use ApiPlatform\Metadata\Put;
use App\Controller\Api\FrequencyPostAction;
use App\Controller\Api\FrequencyPutAction;
use App\Repository\FrequencyRepository;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
#[ORM\Entity(repositoryClass: FrequencyRepository::class)]
#[ApiResource(
operations: [
new Get(openapi: false, normalizationContext: ['groups' => 'item']),
new GetCollection(openapi: false, normalizationContext: ['groups' => 'list']),
new Delete(openapi: false, security: "is_granted('ROLE_USER')"),
new Post(
controller: FrequencyPostAction::class,
openapi: false,
security: "is_granted('ROLE_USER')",
deserialize: false
),
new Post(
uriTemplate: '/frequencies/{id}',
controller: FrequencyPutAction::class,
openapi: false,
security: "is_granted('ROLE_USER')",
deserialize: false
)
],
)]
#[UniqueEntity(
fields: ['region', 'radio'],
message: 'Регион уже существует.',
errorPath: 'region',
)]
class Frequency
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
#[Groups(['item', 'list'])]
private ?int $id = null;
#[ORM\ManyToOne]
#[ORM\JoinColumn(nullable: false)]
#[Groups(['item', 'list'])]
#[Assert\NotNull()]
private ?Region $region = null;
#[ORM\Column(length: 255)]
#[Groups(['item', 'list'])]
#[Assert\NotNull()]
private ?string $frequency = null;
#[ORM\Column(length: 255, nullable: true)]
#[Groups(['item', 'list'])]
private ?string $sdStream = null;
#[ORM\Column(length: 255, nullable: true)]
#[Groups(['item', 'list'])]
private ?string $hdStream = null;
#[ORM\ManyToOne(inversedBy: 'frequencies')]
#[ORM\JoinColumn(nullable: false)]
private ?Radio $radio = null;
public function getId(): ?int
{
return $this->id;
}
public function getRegion(): ?Region
{
return $this->region;
}
public function setRegion(?Region $region): self
{
$this->region = $region;
return $this;
}
public function getFrequency(): ?string
{
return str_replace('.', ',', $this->frequency);
}
public function setFrequency(?string $frequency): self
{
$this->frequency = $frequency;
return $this;
}
public function getSdStream(): ?string
{
return $this->sdStream ?: '';
}
public function setSdStream(?string $sdStream): self
{
$this->sdStream = $sdStream;
return $this;
}
public function getHdStream(): ?string
{
return $this->hdStream ?: '';
}
public function setHdStream(?string $hdStream): self
{
$this->hdStream = $hdStream;
return $this;
}
public function getRadio(): ?Radio
{
return $this->radio;
}
public function setRadio(?Radio $radio): self
{
$this->radio = $radio;
return $this;
}
public function setFakeId(int $id)
{
$this->id = $id;
}
}