<?php
namespace App\Domain\Entity;
use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Post;
use App\Application\Controller\Api\LogUserSearch\LogUserSearchAction;
use App\Domain\Entity\Behavior\Identifiable;
use Gedmo\Timestampable\Traits\Timestampable;
use Symfony\Component\Serializer\Annotation\Groups;
#[ApiResource(
operations: [
new Post(
uriTemplate: '/log_user_search',
controller : LogUserSearchAction::class,
deserialize: false,
serialize : false,
),
],
normalizationContext: ['groups' => ['log_user_search_read']],
denormalizationContext: ['groups' => ['log_user_search_write']],
)]
/**
* Class LogUserSearch
*
* @package App\Domain\Entity
*/
class LogUserSearch
{
use Identifiable;
use Timestampable;
public const USER_SEARCH = 'user_search';
#[Groups(['log_user_search_read', 'log_user_search_write'])]
public string $search;
#[Groups(['log_user_search_read', 'log_user_search_write'])]
public ?Person $author;
#[Groups(['log_user_search_read', 'log_user_search_write'])]
public ?string $device;
#[Groups(['log_user_search_read', 'log_user_search_write'])]
public ?string $locale;
#[Groups(['log_user_search_read', 'log_user_search_write'])]
public ?string $searchFrom;
public function __construct(
string $search,
?Person $author = null,
?string $device = null,
?string $locale = null,
?string $searchFrom = null
) {
$this->search = $search;
$this->author = $author;
$this->device = $device;
$this->locale = $locale;
$this->searchFrom = $searchFrom;
}
}