<?php
namespace App\General;
use App\Entity\ChatAssistant;
use App\Entity\PageQuiSommesNous;
use App\Entity\ReseauxSociaux;
use App\Entity\SectionIconeColoree;
use App\Repository\ChatAssistantRepository;
use App\Repository\CompteurRepository;
use App\Repository\GeneralRepository;
use App\Repository\HorairesDouvertureRepository;
use App\Repository\IconesColoreesRepository;
use App\Repository\ImagesAccueilRepository;
use App\Repository\NosChiffresClesRepository;
use App\Repository\NosTarifsRepository;
use App\Repository\PageQuiSommesNousRepository;
use App\Repository\PresentationRepository;
use App\Repository\QuiSommesNousRepository;
use App\Repository\RealisationRepository;
use App\Repository\ReseauxSociauxRepository;
use App\Repository\SectionIconeColoreeRepository;
use App\Repository\SectionZoneDinterventionRepository;
use App\Repository\ServiceRepository;
use App\Repository\ZoneDinterventionRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\EntityManagerInterface;
class GeneralService{
private $gr;
private $ir;
public function __construct(
GeneralRepository $GeneralRepository,
ImagesAccueilRepository $imagesAccueilRepository,
NosChiffresClesRepository $nccr,
QuiSommesNousRepository $qsnr,
NosTarifsRepository $ntr,
HorairesDouvertureRepository $hdr,
CompteurRepository $compteurRepository,
PageQuiSommesNousRepository $pqs,
SectionZoneDinterventionRepository $szdr,
ZoneDinterventionRepository $zi,
ReseauxSociauxRepository $rsr,
SectionIconeColoreeRepository $sicr,
IconesColoreesRepository $icr,
PresentationRepository $pr,
RealisationRepository $rr,
ChatAssistantRepository $chatAssistantRepository,
EntityManagerInterface $em){
$this->gr = $GeneralRepository;
$this->ir = $imagesAccueilRepository;
$this->nccr = $nccr;
$this->qsnr = $qsnr;
$this->ntr = $ntr;
$this->hdr = $hdr;
$this->compteurRepo = $compteurRepository;
$this->pqsr = $pqs;
$this->szdr = $szdr;
$this->zi = $zi;
$this->rsr = $rsr;
$this->icr = $icr;
$this->sicr = $sicr;
$this->pr = $pr;
$this->rr = $rr;
$this->chatAssistantRepository = $chatAssistantRepository;
$this->em = $em;
}
public function getGeneral(){
return $this->gr->find(1);
}
public function getImageAccueil()
{
return $this->ir->find(1);
}
public function getQuiSommesNous(){
return $this->qsnr->find(1);
}
public function getNosChiffresCles(){
return $this->nccr->find(1);
}
public function getNosTarifs(){
return $this->ntr->find(1);
}
public function getHorairesDouverture(){
return $this->hdr->find(1);
}
public function getCompteurs(){
return $this->compteurRepo->findBy([],['id' => 'DESC']);
}
public function getPageQuiSommesNous(){
return $this->pqsr->find(1);
}
public function getSectionZoneDintervention(){
return $this->szdr->find(1);
}
public function getZoneDinterventions()
{
return $this->zi->findBy([],['id' => 'DESC']);
}
public function getReseauxSociaux(){
return $this->rsr->find(1);
}
public function getIconesColorees(){
return $this->icr->findBy([],['id' => 'DESC']);
}
public function getSectionIconesColorees(){
return $this->sicr->find(1);
}
public function getPresentations()
{
return $this->pr->findBy([],['id' => 'DESC']);
}
public function hasPreviousRealisation(int $id)
{
return $this->searchForOtherRealisation($id,false);
}
public function hasNextRealisation(int $id)
{
return $this->searchForOtherRealisation($id,true);
}
public function searchForOtherRealisation(int $baseSearch,bool $next){
$realisations = $this->rr->findAll();
$baseSearch = $this->rr->find($baseSearch);
$collection = new ArrayCollection($realisations);
$collection = new ArrayCollection($collection->slice(max($collection->indexOf($baseSearch) -1,0), 3));
$resultIndex = null;
$result = $collection->exists(function($index, $element) use($next,$baseSearch,&$resultIndex){
if($next){
$result = $element->getId() > $baseSearch->getId();
}
else{
$result = $element->getId() < $baseSearch->getId();
}
if($result){
$resultIndex = $element->getId();
}
return $result;
});
return $resultIndex;
}
public function getTidioUrl()
{
$tidioElement = $this->chatAssistantRepository->find(1);
if(is_null($tidioElement)){
$tidioElement = (new ChatAssistant())->setId(1);
$this->em->persist($tidioElement);
$this->em->flush();
}
return $this->chatAssistantRepository->find(1)->getTidioUrl();
}
}