<?php
namespace App\Entity\Produit\Service;
use App\Repository\Produit\Service\ServiceRepository;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
use Symfony\Component\Validator\Constraints as Assert;
use App\Entity\Produit\Service\Service;
use App\Entity\Users\User\User;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="`service`")
* @ORM\Entity(repositoryClass=ServiceRepository::class)
* @Vich\Uploadable
*/
class Service
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
public $contentUrl;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $filePath;
/**
* @Vich\UploadableField(mapping="service_file", fileNameProperty="filePath", size="imageSize", mimeType="mimeType", originalName="originalName")
* @var File|null
*/
public ?File $file = null;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $imageSize;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $originalName;
/**
* @ORM\Column(type="datetime")
*/
private $date;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $mimeType;
/**
* @ORM\ManyToOne(targetEntity=User::class)
* @ORM\JoinColumn(nullable=false)
*/
private $user;
/**
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @ORM\Column(name="rang", type="integer")
*/
private $rang;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $description;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $expertise;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $motcle;
/**
* @ORM\Column(name="parent_id", type="integer", nullable=true)
*/
private $parentId;
/**
* @var json
*
* @ORM\Column(name="objectifs", type="json", nullable=true)
*/
private ?array $objectifs = [];
private $em;
public function __construct()
{
$this->date = new \Datetime();
$this->expertise = "service";
}
public function getId(): ?int
{
return $this->id;
}
public function getClientExtension()
{
$tabextension = explode('.', $this->getOriginalName());
$nbelem = count($tabextension);
if($nbelem > 1)
{
return $tabextension[$nbelem - 1];
}else{
return "";
}
}
public function getTimeOfSendingFiles(): string
{
if($this->date != null)
{
return $this->date->format('Y-m-d H:i:s');
}else{
return "0000-00-00 00:00:00";
}
}
public function getContentUrl(): ?string
{
return $this->contentUrl;
}
public function setContentUrl(?string $contentUrl): self
{
$this->contentUrl = $contentUrl;
return $this;
}
public function getFilePath(): ?string
{
return $this->filePath;
}
public function setFilePath(?string $filePath): self
{
$this->filePath = $filePath;
return $this;
}
public function getImageSize(): ?string
{
return $this->imageSize;
}
public function setImageSize(?string $imageSize): self
{
$this->imageSize = $imageSize;
return $this;
}
public function getOriginalName(): ?string
{
return $this->originalName;
}
public function setOriginalName(?string $originalName): self
{
$this->originalName = $originalName;
return $this;
}
public function getDate(): ?\DateTimeInterface
{
return $this->date;
}
public function setDate(\DateTimeInterface $date): self
{
$this->date = $date;
return $this;
}
public function getMimeType(): ?string
{
return $this->mimeType;
}
public function setMimeType(string $mimeType = null): self
{
$this->mimeType = $mimeType;
return $this;
}
public function getUser(): ?User
{
return $this->user;
}
public function setUser(?User $user): self
{
$this->user = $user;
return $this;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getDescription(): ?string
{
return $this->description;
}
public function setDescription(?string $description): self
{
$this->description = $description;
return $this;
}
public function getRang(): ?int
{
return $this->rang;
}
public function setRang(?int $rang): self
{
$this->rang = $rang;
return $this;
}
public function getExpertise(): ?string
{
return $this->expertise;
}
public function setExpertise(string $expertise): self
{
$this->expertise = $expertise;
return $this;
}
public function getParentId(): ?string
{
return $this->parentId;
}
public function setParentId(string $parentId): self
{
$this->parentId = $parentId;
return $this;
}
public function getMotcle(): ?string
{
return $this->motcle;
}
public function setMotcle(string $motcle): self
{
$this->motcle = $motcle;
return $this;
}
public function getObjectifs(): ?array
{
return $this->objectifs;
}
public function setObjectifs(?array $objectifs): self
{
$this->objectifs = $objectifs;
return $this;
}
public function setEm($em)
{
$this->em = $em;
}
public function getEm()
{
return $this->em;
}
public function getSousService()
{
$liste_service = $this->em->getRepository(Service::class)
->findBy(array('parentId'=>$this->getId()),array('rang'=>'asc'));
return $liste_service;
}
public function getServiceParent()
{
$service = $this->em->getRepository(Service::class)
->findOneBy(array('id'=>$this->getParentId()),array('rang'=>'asc'));
return $service;
}
}