<?php
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiResource;
use ApiPlatform\Core\Annotation\ApiFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\OrderFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
use ApiPlatform\Core\Serializer\Filter\PropertyFilter;
use App\Repository\DailyAdviceRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass=DailyAdviceRepository::class)
* @ApiResource(
* denormalizationContext={
* "groups"={"daily_advice:write"}
* },
* normalizationContext={
* "groups"={"daily_advice:read"}
* },
* collectionOperations={
* "post"={"security"="is_granted('ROLE_ADMIN')"},
* "get"={"security"="is_granted('ROLE_ADMIN')"},
* "get_current_advice"={
* "security"="is_granted('ROLE_USER')",
* "method"="GET",
* "path"="/daily_advices/current",
* "controller"="App\Controller\Api\DailyAdviceController::current"
* },
* },
* itemOperations={
* "get"={"security"="is_granted('ROLE_USER')"},
* "delete"={"security"="is_granted('ROLE_ADMIN')"},
* "patch"={"security"="is_granted('ROLE_ADMIN')"},
* },
* )
* @ApiFilter(SearchFilter::class, properties={"field":"partial", "value":"partial", "display":"exact"})
* @ApiFilter(OrderFilter::class, properties={"id", "field", "value", "display"})
* @ApiFilter(PropertyFilter::class,
* arguments={
* "parameterName"="fields",
* "overrideDefaultProperties"=true
* }
* )
*/
class DailyAdvice extends TvConfiguration
{
/**
* @var string
* @Groups({"daily_advice:write", "daily_advice:read"})
* @Assert\Type(type="string")
*/
private $name = '';
/**
* @var string
* @Groups({"daily_advice:write","daily_advice:read"})
* @Assert\Type(type="string")
*/
private $advice = '';
public function __construct()
{
$this->name = '';
$this->field = '';
$this->display = true;
}
/**
* @return string
*/
public function getName()
{
if ($this->name == null){
$this->name = $this->field;
}
return $this->name;
}
/**
* @return string
*/
public function getAdvice(): string
{
if ($this->advice == null){
$this->advice = $this->value;
}
return $this->advice;
}
/**
* @param string $advice
* @return DailyAdvice
*/
public function setAdvice(string $advice): DailyAdvice
{
$this->advice = $advice;
$this->value = $advice;
return $this;
}
/**
* @param string $name
* @return DailyAdvice
*/
public function setName(string $name) :DailyAdvice
{
$this->name = $name;
$this->field = "$name";
return $this;
}
public function getField(): ?string
{
return $this->field;
}
public function setField(string $field): TvConfiguration
{
$this->field = $field;
$this->name = intval($field);
return $this;
}
public function getValue(): ?string
{
return $this->value;
}
public function setValue(string $value): TvConfiguration
{
$this->value = $value;
$this->advice = $value;
return $this;
}
}