<?php
namespace App\Entity;
use App\Repository\MeetingRepository;
use Doctrine\ORM\Mapping as ORM;
use ApiPlatform\Core\Annotation\ApiResource;
use ApiPlatform\Core\Annotation\ApiFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Entity(repositoryClass=MeetingRepository::class)
* @ORM\HasLifecycleCallbacks()
* @ApiResource(
* normalizationContext={"groups"={"meeting:read", "base:read", "assign:read"}},
* denormalizationContext={"groups"={"meeting:write", "base:write", "assign:write"}},
* )
* @ApiFilter(
* SearchFilter::class,
* properties={
* "parent": "exact",
* }
* )
*/
class Meeting
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
* @Groups({"meeting:read"})
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
* @Groups({"meeting:read", "meeting:write"})
*/
private $name;
/**
* @ORM\Column(type="date")
* @Groups({"meeting:read", "meeting:write"})
*/
private $startDate;
/**
* @ORM\Column(type="integer")
* @Groups({"meeting:read", "meeting:write"})
*/
private $startHour;
/**
* @ORM\Column(type="integer", nullable=true)
* @Groups({"meeting:read", "meeting:write"})
*/
private $startMinute;
/**
* @ORM\Column(type="date", nullable=true)
* @Groups({"meeting:read", "meeting:write"})
*/
private $endDate;
/**
* @ORM\Column(type="integer")
* @Groups({"meeting:read", "meeting:write"})
*/
private $endHour;
/**
* @ORM\Column(type="integer", nullable=true)
* @Groups({"meeting:read", "meeting:write"})
*/
private $endMinute;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"meeting:read", "meeting:write"})
*/
private $location;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups({"meeting:read", "meeting:write"})
*/
private $description;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"meeting:read", "meeting:write", "base:read"})
*/
private $parent;
/**
* @ORM\Column(type="integer", nullable=true)
* @Groups({"meeting:read", "meeting:write"})
*/
private $parentId;
/**
* @ORM\Column(type="json", nullable=true)
* @Groups({"meeting:read", "meeting:write"})
*/
private $attachments = [];
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"meeting:read", "meeting:write"})
*/
private $meridiemStart;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"meeting:read", "meeting:write"})
*/
private $meridiemEnd;
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getStartDate(): ?\DateTimeInterface
{
return $this->startDate;
}
public function setStartDate(\DateTimeInterface $startDate): self
{
$this->startDate = $startDate;
return $this;
}
public function getStartHour(): ?int
{
return $this->startHour;
}
public function setStartHour(int $startHour): self
{
$this->startHour = $startHour;
return $this;
}
public function getStartMinute(): ?int
{
return $this->startMinute;
}
public function setStartMinute(?int $startMinute): self
{
$this->startMinute = $startMinute;
return $this;
}
public function getEndDate(): ?\DateTimeInterface
{
return $this->endDate;
}
public function setEndDate(?\DateTimeInterface $endDate): self
{
$this->endDate = $endDate;
return $this;
}
public function getEndHour(): ?int
{
return $this->endHour;
}
public function setEndHour(int $endHour): self
{
$this->endHour = $endHour;
return $this;
}
public function getEndMinute(): ?int
{
return $this->endMinute;
}
public function setEndMinute(?int $endMinute): self
{
$this->endMinute = $endMinute;
return $this;
}
public function getLocation(): ?string
{
return $this->location;
}
public function setLocation(?string $location): self
{
$this->location = $location;
return $this;
}
public function getDescription(): ?string
{
return $this->description;
}
public function setDescription(?string $description): self
{
$this->description = $description;
return $this;
}
public function getParent(): ?string
{
return $this->parent;
}
public function setParent(?string $parent): self
{
$this->parent = $parent;
return $this;
}
public function getParentId(): ?int
{
return $this->parentId;
}
public function setParentId(?int $parentId): self
{
$this->parentId = $parentId;
return $this;
}
public function getStartTime()
{
if (!$this->startMinute) {
$this->startMinute = 0;
}
if (!$this->startHour) {
$this->startHour = 0;
}
$hour = ($this->startHour < 10) ? "0{$this->startHour}" : $this->startHour;
$minute = ($this->startMinute < 10) ? "0{$this->startMinute}" : $this->startMinute;
return "{$hour}:{$minute}";
}
public function getEndTime()
{
if (!$this->endMinute) {
$this->endMinute = 0;
}
if (!$this->endHour) {
$this->endHour = 0;
}
$hour = ($this->endHour < 10) ? "0{$this->endHour}" : $this->endHour;
$minute = ($this->endMinute < 10) ? "0{$this->endMinute}" : $this->endMinute;
return "{$hour}:{$minute}";
}
public function getAttachments(): ?array
{
return $this->attachments;
}
public function setAttachments($attachments): self
{
if (!is_array($attachments)) {
$attachments = json_decode($attachments, true);
}
$this->attachments = $attachments;
return $this;
}
public function getMeridiemStart(): ?string
{
return $this->meridiemStart;
}
public function setMeridiemStart(string $meridiemStart): self
{
$this->meridiemStart = $meridiemStart;
return $this;
}
public function getMeridiemEnd(): ?string
{
return $this->meridiemEnd;
}
public function setMeridiemEnd(string $meridiemEnd): self
{
$this->meridiemEnd = $meridiemEnd;
return $this;
}
}