<?php
namespace App\Domain\Entity;
use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Post;
use App\Application\Controller\Api\LogGps\LogGpsAction;
use App\Domain\Entity\Behavior\Identifiable;
use Gedmo\Timestampable\Traits\Timestampable;
use Symfony\Component\Serializer\Annotation\Groups;
#[ApiResource(
operations: [
new Post(
uriTemplate: '/log_gps',
controller : LogGpsAction::class,
security : "is_granted('ROLE_USER')",
deserialize: false,
serialize : false,
),
],
normalizationContext: ['groups' => ['log_gps_read']],
denormalizationContext: ['groups' => ['log_gps_write']],
)]
/**
* Class Log
*
* @package App\Domain\Entity
*/
class LogGps
{
use Identifiable;
use Timestampable;
public const READ_SCREEN = 'read_screen';
public const ITINERARY_INFORMATIONS = 'itinerary_informations';
public const ITINERARY_DURATION = 'itinerary_duration';
public const ITINERARY_ALTERNATIVE_NUMBER = 'itinerary_alternative_number';
#[Groups(['log_gps_read', 'log_gps_write'])]
public string $action;
#[Groups(['log_gps_read', 'log_gps_write'])]
public ?Person $author;
#[Groups(['log_gps_read', 'log_gps_write'])]
public ?string $data;
public function __construct(
string $action,
?Person $author = null,
?string $data = null
) {
$this->action = $action;
$this->author = $author;
$this->data = $data;
}
}