<?php
namespace App\Entity\Web;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\ORM\Mapping as ORM;
use App\Entity\Behaviors\TranslationTrait;
use App\Entity\Behaviors\SluggableTrait;
use Knp\DoctrineBehaviors\Contract\Entity\TranslationInterface;
use Knp\DoctrineBehaviors\Contract\Entity\SluggableInterface;
use Doctrine\ORM\Mapping\Index;
/**
* @ORM\Table(name="web_career_translation",uniqueConstraints={@ORM\UniqueConstraint(name="sluging", columns={"locale", "slug","randomint"})},
* indexes={@Index(name="locale_slug", columns={"locale","slug","randomint"})})
* @ORM\Entity(repositoryClass="App\Repository\TranslationRepository")
* @ORM\EntityListeners({"App\Listener\EntityListener"})
*/
class CareerTranslation implements TranslationInterface, SluggableInterface
{
use TranslationTrait;
use SluggableTrait;
/**
* @ORM\Column(type="string", length=2)
*/
protected $locale;
/**
* @ORM\Column(type="string", length=255)
*/
private string $name;
/**
* @ORM\Column(type="string", length=255)
*/
private string $contactTime;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private ?int $randomint = null;
/**
* @ORM\Column(type="text")
*/
private string $about = 'Vyplňte';
/**
* @ORM\Column(type="text")
*/
private string $description = 'Vyplňte';
/**
* @ORM\Column(type="text", nullable=false)
*/
private string $descriptionNeed = 'Vyplňte';
/**
* @ORM\Column(type="text", nullable=false)
*/
private string $descriptionOffer = 'Vyplňte';
/**
* @ORM\Column(type="string", length=190)
*/
protected $slug;
/**
* @ORM\Column(type="datetime")
*/
private $createts;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User")
* @ORM\JoinColumn(nullable=false)
*/
private $createUser;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $editts;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User")
*/
private $editUser;
public function __construct($locale = null) {
if($this->randomint === null){
$this->randomint = time();
}
if($locale !== null){
$this->setLocale($locale);
}
}
public function getId(): ?int
{
return $this->id;
}
/**
* @return string
*/
public function getName(): string
{
return $this->name;
}
/**
* @param string $name
*/
public function setName(string $name): void
{
$this->name = $name;
}
/**
* @return string
*/
public function getDescription(): string
{
return $this->description;
}
/**
* @param string $description
*/
public function setDescription(string $description): void
{
$this->description = $description;
}
/**
* @return string
*/
public function getDescriptionNeed(): string
{
return $this->descriptionNeed;
}
/**
* @param string $descriptionNeed
*/
public function setDescriptionNeed(string $descriptionNeed): void
{
$this->descriptionNeed = $descriptionNeed;
}
/**
* @return string
*/
public function getDescriptionOffer(): string
{
return $this->descriptionOffer;
}
/**
* @param string $descriptionOffer
*/
public function setDescriptionOffer(string $descriptionOffer): void
{
$this->descriptionOffer = $descriptionOffer;
}
/**
* @return string
*/
public function getAbout(): string
{
return $this->about;
}
/**
* @param string $about
*/
public function setAbout(string $about): void
{
$this->about = $about;
}
/**
* @return string
*/
public function getContactTime(): string
{
return $this->contactTime;
}
/**
* @param string $contactTime
*/
public function setContactTime(string $contactTime): void
{
$this->contactTime = $contactTime;
}
/**
* @return mixed
*/
public function getCreatets()
{
return $this->createts;
}
/**
* @param mixed $createts
*/
public function setCreatets($createts): void
{
$this->createts = $createts;
}
/**
* @return mixed
*/
public function getCreateUser()
{
return $this->createUser;
}
/**
* @param mixed $createUser
*/
public function setCreateUser($createUser): void
{
$this->createUser = $createUser;
}
/**
* @return mixed
*/
public function getEditts()
{
return $this->editts;
}
/**
* @param mixed $editts
*/
public function setEditts($editts): void
{
$this->editts = $editts;
}
/**
* @return mixed
*/
public function getEditUser()
{
return $this->editUser;
}
/**
* @param mixed $editUser
*/
public function setEditUser($editUser): void
{
$this->editUser = $editUser;
}
public function getSluggableFields(): array
{
return ['name','randomint'];
}
/**
* @ORM\PreUpdate()
* @ORM\PrePersist()
*/
public function updateSlug( LifecycleEventArgs $eventArgs )
{
$translatable = $this->getTranslatable();
$oldSlug = $translatable->getSlug();
if ( $this->getRegenerateSlugOnUpdate() || empty( $this->slug ) ) {
$fields = $this->getSluggableFields();
$values = [];
foreach ( $fields as $field ) {
if ( property_exists( $this, $field ) ) {
$val = $this->{$field};
} else {
$methodName = 'get' . ucfirst( $field );
if ( method_exists( $this, $methodName ) ) {
$val = $this->{$methodName}();
} else {
$val = null;
}
}
$values[] = $val;
}
$this->slug = $this->generateSlugValue( $values );
if ( $oldSlug !== $this->slug ) {
$repo = $eventArgs->getEntityManager()->getRepository( get_class( $this ) );
$repo->updateSlug( $this );
}
}
}
public function getRandomint(): ?int
{
return $this->randomint;
}
public function setRandomint(?int $randomint): void
{
$this->randomint = $randomint;
}
}