<?php
namespace App\Domain\Entity\PointOfInterest;
use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Get;
use ApiPlatform\Metadata\GetCollection;
use ApiPlatform\Metadata\Link;
use ApiPlatform\Metadata\Post;
use App\Domain\Entity\Behavior\Identifiable;
use Gedmo\Timestampable\Traits\Timestampable;
/**
* Class OpeningDate
* @package App\Domain\Entity\PointOfInterest
*/
#[ApiResource(
operations: [
new Get(),
new GetCollection(),
new Post()
],
normalizationContext: ['groups' => ['opening_date_read']],
denormalizationContext: ['groups' => ['opening_date_write']]
)]
#[ApiResource(
uriTemplate: '/revisions/{uuid}/opening_dates',
operations: [
new GetCollection()
],
uriVariables: [
'uuid' => new Link(fromProperty: 'openingDates', fromClass: Revision::class)
]
)]
class OpeningDate
{
use Identifiable;
use Timestampable;
public function __construct(
public \DateTime $end,
public Revision $revision,
public \DateTime $start,
) {}
public function getFormattedEnd(): string
{
return $this->end->format('Y-m-d');
}
public function getFormattedStart(): string
{
return $this->start->format('Y-m-d');
}
/**
* Renvoie "MM-dd" pour ignorer l’année
*/
public function getStartMonthDay(): string
{
return $this->start->format('m-d');
}
/**
* Renvoie "MM-dd" pour ignorer l’année
*/
public function getEndMonthDay(): string
{
return $this->end->format('m-d');
}
}