<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use App\Repository\ContactRepository;
use App\Entity\User; // Assurez-vous que le chemin vers votre entité User est correct
/**
* @ORM\Entity(repositoryClass=ContactRepository::class)
* @ORM\Table(name="contact")
*/
class Contact
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity=User::class)
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=true)
* @var User|null
*/
private $user; // Sera null si le visiteur n'est pas connecté
/**
* @ORM\Column(type="string", length=100, name="firstname", nullable=true)
* @Assert\NotBlank(message="Veuillez entrer votre prénom.", groups={"guest"})
* @Assert\Length(
* min = 2,
* max = 100,
* minMessage = "Votre prénom doit comporter au moins {{ limit }} caractères.",
* maxMessage = "Votre prénom ne peut pas dépasser {{ limit }} caractères.",
* groups={"guest"}
* )
* @var string|null
*/
private $firstname;
/**
* @ORM\Column(type="string", length=100, name="lastname", nullable=true)
* @Assert\NotBlank(message="Veuillez entrer votre nom.", groups={"guest"})
* @Assert\Length(
* min = 2,
* max = 100,
* minMessage = "Votre nom doit comporter au moins {{ limit }} caractères.",
* maxMessage = "Votre nom ne peut pas dépasser {{ limit }} caractères.",
* groups={"guest"}
* )
* @var string|null
*/
private $lastname;
/**
* @ORM\Column(type="string", length=180, nullable=true)
* @Assert\NotBlank(message="Veuillez entrer votre adresse email.", groups={"guest"})
* @Assert\Email(message = "L'adresse email '{{ value }}' n'est pas une adresse email valide.", groups={"guest"})
* @var string|null
*/
private $email;
/**
* @ORM\Column(type="text")
* @Assert\NotBlank(message="Veuillez décrire votre demande.", groups={"Default", "guest"})
* @Assert\Length(
* min = 10,
* minMessage = "Votre message doit comporter au moins {{ limit }} caractères.",
* groups={"Default", "guest"}
* )
* @var string|null
*/
private $message;
/**
* @ORM\Column(type="datetime_immutable")
* @var \DateTimeImmutable|null
*/
private $createdAt;
public function __construct()
{
$this->createdAt = new \DateTimeImmutable();
}
// --- Getters and Setters ---
/**
* @return int|null
*/
public function getId(): ?int
{
return $this->id;
}
/**
* @return User|null
*/
public function getUser(): ?User
{
return $this->user;
}
/**
* @param User|null $user
* @return $this
*/
public function setUser(?User $user): self
{
$this->user = $user;
return $this;
}
/**
* @return string|null
*/
public function getFirstname(): ?string
{
return $this->firstname;
}
/**
* @param string|null $firstname
* @return $this
*/
public function setFirstname(?string $firstname): self
{
$this->firstname = $firstname;
return $this;
}
/**
* @return string|null
*/
public function getLastname(): ?string
{
return $this->lastname;
}
/**
* @param string|null $lastname
* @return $this
*/
public function setLastname(?string $lastname): self
{
$this->lastname = $lastname;
return $this;
}
/**
* @return string|null
*/
public function getEmail(): ?string
{
return $this->email;
}
/**
* @param string|null $email
* @return $this
*/
public function setEmail(?string $email): self
{
$this->email = $email;
return $this;
}
/**
* @return string|null
*/
public function getMessage(): ?string
{
return $this->message;
}
/**
* @param string|null $message
* @return $this
*/
public function setMessage(?string $message): self // Le message est requis par la validation, donc techniquement pas nullable après soumission valide.
{
$this->message = $message;
return $this;
}
/**
* @return \DateTimeImmutable|null
*/
public function getCreatedAt(): ?\DateTimeImmutable
{
return $this->createdAt;
}
/**
* @param \DateTimeImmutable $createdAt
* @return $this
*/
public function setCreatedAt(\DateTimeImmutable $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
}