<?php
namespace App\Containers\CrmSection\TaskContainer\Entities;
use ApiPlatform\Doctrine\Orm\Filter\OrderFilter;
use ApiPlatform\Metadata\ApiFilter;
use ApiPlatform\Metadata\ApiResource;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
use ApiPlatform\Metadata\GetCollection;
use ApiPlatform\Metadata\Link;
use ApiPlatform\Metadata\Post;
use App\Containers\CrmSection\TaskContainer\Data\Repositories\TaskCommentRepository;
use App\Ship\Entities\CommentEntity;
use Doctrine\DBAL\Types\Types;
#[ORM\Entity(repositoryClass: TaskCommentRepository::class)]
#[ApiResource(
routePrefix: '/crm',
security: "is_granted('ROLE_ADMIN') or is_granted('ROLE_READONLY')",
operations: [
// new GetCollection(
// uriTemplate: '/comments',
// openapiContext: [
// "summary" => ""
// ]
// ),
// new Get(
// uriTemplate: '/comment/{id}',
// openapiContext: [
// "summary" => ""
// ]
// ),
new Post(
uriTemplate: '/task/comment',
openapiContext: [
"summary" => ""
]
),
// new Patch(
// uriTemplate: '/comment/{id}',
// openapiContext: [
// "summary" => ""
// ]
// ),
// new Put(
// uriTemplate: '/comment/{id}',
// openapiContext: [
// "summary" => ""
// ]
// ),
// new Delete(
// uriTemplate: '/comment/{id}',
// openapiContext: [
// "summary" => ""
// ]
// )
],
normalizationContext: ['groups' => ['read']],
shortName: 'CRM_Tasks'
)]
#[ApiResource(
uriTemplate: '/crm/task/{taskId}/comment',
uriVariables: [
'taskId' => new Link(fromClass: TaskEntity::class, toProperty: 'entity', identifiers:['id']),
],
operations: [ new GetCollection() ],
security: "is_granted('ROLE_ADMIN')",
shortName: 'CRM_Tasks',
normalizationContext: ['groups' => ['read'], 'enable_max_depth' => true]
)]
// #[ApiResource(
// uriTemplate: 'sale/task/{taskId}/comment',
// uriVariables: [
// 'taskId' => new Link(fromClass: TaskEntity::class, toProperty: 'entity'),
// ],
// operations: [ new Post() ],
// shortName: 'Sale'
// )]
#[ApiFilter(OrderFilter::class)]
class TaskCommentEntity extends CommentEntity
{
#[ORM\ManyToOne(targetEntity: TaskEntity::class)]
#[ORM\JoinColumn(name: 'entity', referencedColumnName: 'id')]
#[Groups(['read'])]
private TaskEntity|null $entity = null;
/**
* Get the value of entity
*/
public function getEntity(): ?TaskEntity
{
return $this->entity;
}
/**
* Set the value of entity
*/
public function setEntity(?TaskEntity $entity): self
{
$this->entity = $entity;
return $this;
}
}