| 
<?php
 namespace JLaso\TranslationsApiBundle\Entity;
 
 use Doctrine\ORM\Mapping as ORM;
 use Symfony\Component\Validator\Constraints as Assert;
 use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
 use JLaso\TranslationsApiBundle\Entity\Repository\TranslationRepository;
 
 /**
 * @ORM\Entity(repositoryClass="JLaso\TranslationsApiBundle\Entity\Repository\TranslationRepository")
 * @ORM\Table(name="jlaso_translations")
 * @UniqueEntity(fields="domain,locale,key")
 */
 class Translation
 {
 
 const DEFAULT_DOMAIN = "messages";
 
 /**
 * @ORM\Id
 * @ORM\Column(name="id", type="integer")
 * @ORM\GeneratedValue
 */
 private $id;
 
 /**
 * @ORM\column(name="domain", type="string", length=50)
 */
 private $domain;
 
 /**
 * @ORM\column(name="locale", type="string", length=10)
 */
 private $locale;
 
 /**
 * @ORM\column(name="`key`", type="string", length=255)
 */
 private $key;
 
 /**
 * @ORM\column(name="message", type="text", nullable=true)
 */
 private $message;
 
 /**
 * @var string $bundle
 *
 * @ORM\Column(name="bundle", type="string", length=100)
 */
 protected $bundle;
 
 /**
 * @var string $file
 *
 * @ORM\Column(name="file", type="string", length=255)
 */
 protected $file;
 
 /**
 * @var \DateTime $createdAt
 *
 * @ORM\Column(name="created_at", type="datetime")
 * @Assert\NotNull()
 * @Assert\DateTime()
 */
 private $createdAt;
 
 /**
 * @var \DateTime $updatedAt
 *
 * @ORM\Column(name="updated_at", type="datetime")
 * @Assert\NotNull()
 * @Assert\DateTime()
 */
 private $updatedAt;
 
 public function __construct()
 {
 $this->updatedAt = new \DateTime();
 $this->createdAt = new \DateTime();
 $this->domain    = self::DEFAULT_DOMAIN;
 }
 
 protected static function dateTimeFromArray($array)
 {
 $aux = serialize($array);
 
 return unserialize('O:8:"DateTime":' . substr($aux, 2, strlen($aux) - 2));
 }
 
 public static function newFromArray($catalog, $key, $locale, $data, $bundle = '', $file = '')
 {
 $trans = new Translation();
 $trans->setKey($key);
 $trans->setDomain($catalog);
 $trans->setLocale($locale);
 $trans->setMessage($data['message']);
 $trans->setUpdatedAt(self::dateTimeFromArray($data['updatedAt']));
 $trans->setBundle($bundle ?: '');
 $trans->setFile($file);
 
 return $trans;
 }
 
 public function getId() {
 return $this->id;
 }
 
 public function setId($id) {
 $this->id = $id;
 }
 
 public function getLocale() {
 return $this->locale;
 }
 
 public function setLocale($locale) {
 $this->locale = $locale;
 }
 
 /**
 * @param \DateTime $createdAt
 */
 public function setCreatedAt($createdAt)
 {
 $this->createdAt = $createdAt;
 }
 
 /**
 * @return \DateTime
 */
 public function getCreatedAt()
 {
 return $this->createdAt;
 }
 
 /**
 * @param mixed $domain
 */
 public function setDomain($domain)
 {
 $this->domain = $domain;
 }
 
 /**
 * @return mixed
 */
 public function getDomain()
 {
 return $this->domain;
 }
 
 /**
 * @param mixed $key
 */
 public function setKey($key)
 {
 $this->key = $key;
 }
 
 /**
 * @return mixed
 */
 public function getKey()
 {
 return $this->key;
 }
 
 /**
 * @param mixed $message
 */
 public function setMessage($message)
 {
 $this->message = $message;
 }
 
 /**
 * @return mixed
 */
 public function getMessage()
 {
 return $this->message;
 }
 
 /**
 * @param \DateTime $updatedAt
 */
 public function setUpdatedAt($updatedAt)
 {
 $this->updatedAt = $updatedAt;
 }
 
 /**
 * @return \DateTime
 */
 public function getUpdatedAt()
 {
 return $this->updatedAt;
 }
 
 /**
 * @param string $bundle
 */
 public function setBundle($bundle)
 {
 $this->bundle = $bundle;
 }
 
 /**
 * @return string
 */
 public function getBundle()
 {
 return $this->bundle;
 }
 
 /**
 * @param string $file
 */
 public function setFile($file)
 {
 $this->file = $file;
 }
 
 /**
 * @return string
 */
 public function getFile()
 {
 return $this->file;
 }
 
 
 }
 |