src/Entity/TimeNormalization/Day.php line 35

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace App\Entity\TimeNormalization;
  3. use ApiPlatform\Core\Annotation\{ApiFilterApiResource};
  4. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\DateFilter;
  5. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\OrderFilter;
  6. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
  7. use App\Entity\User;
  8. use App\Interfaces\UuidKeyInterface;
  9. use App\Repository\TimeNormalization\DayRepository;
  10. use App\Traits\UuidEntityTrait;
  11. use Doctrine\ORM\Mapping as ORM;
  12. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  13. use Symfony\Component\Serializer\Annotation\Groups;
  14. use Symfony\Component\Validator\Constraints as Assert;
  15. #[ApiResource(
  16.     collectionOperations: ['get'],
  17.     itemOperations: [
  18.         'get',
  19.         'patch' => ['security' => "is_granted('DAY_HOURS_EDIT', object)"],
  20.     ]
  21. )]
  22. #[ApiFilter(SearchFilter::class, properties: [
  23.     'user.slug' => 'exact',
  24. ])]
  25. #[ApiFilter(DateFilter::class, properties: ['date'])]
  26. #[ApiFilter(OrderFilter::class, properties: [
  27.     'date' => 'ASC',
  28. ])]
  29. #[ORM\Entity(repositoryClassDayRepository::class)]
  30. #[ORM\Table(name'time_norm_day')]
  31. #[UniqueEntity(fields: ['user''date'])]
  32. class Day implements UuidKeyInterface
  33. {
  34.     use UuidEntityTrait;
  35.     public const READ_GROUP 'Day:read';
  36.     public const WRITE_GROUP 'Day:write';
  37.     #[Assert\NotBlank]
  38.     #[Groups([self::READ_GROUP])]
  39.     #[ORM\ManyToOne(targetEntityUser::class, inversedBy'days'cascade: ['persist'])]
  40.     private ?User $user null;
  41.     #[Assert\NotBlank]
  42.     #[Groups([self::READ_GROUP])]
  43.     #[ORM\Column(type'date'nullablefalse)]
  44.     private ?\DateTimeInterface $date null;
  45.     #[Assert\Range(min0max8)]
  46.     #[Groups([self::READ_GROUPself::WRITE_GROUP])]
  47.     #[ORM\Column(type'integer'nullablefalse)]
  48.     private ?int $hours null;
  49.     public function __construct(User $user\DateTimeInterface $dateint $hours)
  50.     {
  51.         $this->user $user;
  52.         $this->date $date;
  53.         $this->hours $hours;
  54.     }
  55.     public function setUser(?User $user): self
  56.     {
  57.         $this->user $user;
  58.         return $this;
  59.     }
  60.     public function getUser(): ?User
  61.     {
  62.         return $this->user;
  63.     }
  64.     public function getDate(): ?\DateTimeInterface
  65.     {
  66.         return $this->date;
  67.     }
  68.     public function setDate(\DateTimeInterface $date): self
  69.     {
  70.         $this->date $date;
  71.         return $this;
  72.     }
  73.     public function getHours(): ?int
  74.     {
  75.         return $this->hours;
  76.     }
  77.     public function setHours(int $hours): self
  78.     {
  79.         $this->hours $hours;
  80.         return $this;
  81.     }
  82. }