<?php
namespace App\Service;
use App\Entity\User;
use App\Entity\Foodtruck;
use App\Entity\Emplacement;
use App\Repository\ServiceRepository;
use App\Repository\CommandeRepository;
use App\Repository\FoodtruckRepository;
use App\Repository\EmplacementRepository;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
class FoodtruckService
{
public function __construct(
private FoodtruckRepository $foodtruckRepository,
private SessionInterface $session,
private EmplacementRepository $emplacementRepository,
private CommandeRepository $commandeRepository,
private ServiceRepository $serviceRepository
)
{}
public function controleFoodtruck($request)
{
//Détecter la route de provenance et charger le foodtruck correspondant en session
$foodtrucks = $this->foodtruckRepository->findAll();
foreach ($foodtrucks as $key => $foodtruck) {
if ($foodtruck->getUrl() !== null AND strpos($foodtruck->getUrl(), $request->server->get('HTTP_HOST')) !== false)
{
$this->addFoodtruckInSession($foodtruck);
return $foodtruck;
}
}
return false;
}
public function controleEmplacement($request)
{
//Détecter la route de provenance et charger le foodtruck correspondant en session
$emplacements = $this->emplacementRepository->findAll();
foreach ($emplacements as $key => $emplacement) {
if ($emplacement->getUrl() !== null AND strpos($emplacement->getUrl(), $request->server->get('HTTP_HOST')) !== false)
{
$this->addEmplacementInSession($emplacement);
return $emplacement;
}
}
return false;
}
public function addFoodtruckInSession($foodtruck)
{
$foodtruck_selected = $this->session->get("foodtruck", Foodtruck::class);
$emplacement_selected = $this->session->get("emplacement", Emplacement::class);
if(is_object($emplacement_selected)){
$this->session->remove("emplacement");
}
$foodtruck_selected = $foodtruck;
$this->session->set("foodtruck", $foodtruck_selected);
}
public function addEmplacementInSession($emplacement)
{
$foodtruck_selected = $this->session->get("foodtruck", Foodtruck::class);
$emplacement_selected = $this->session->get("emplacement", Emplacement::class);
if(!empty($foodtruck_selected)){
$this->session->remove("foodtruck");
}
$emplacement_selected = $emplacement;
$this->session->set("emplacement", $emplacement_selected);
}
public function getClients(Foodtruck $foodtruck)
{
$clients = [];
$services = $foodtruck->getServices();
foreach ($services as $key => $service) {
$commandes = $service->getCommandes();
foreach ($commandes as $key => $commande) {
if(!in_array($commande->getUser(),$clients)){
$clients[] = $commande->getUser();
}
}
}
return $clients;
}
public function getClientCommandes(Foodtruck $foodtruck, User $client)
{
$commandesClient = [];
// $services = $foodtruck->getServices();
$services = $this->serviceRepository->findBy(['foodtruck' => $foodtruck],['date' => 'DESC']);
foreach ($services as $key => $service) {
// $commandes = $service->getCommandes();
$commandes = $this->commandeRepository->findBy(['service' => $service],['date' => 'DESC']);
foreach ($commandes as $key => $commande) {
if($commande->getUser() === $client){
$commandesClient[] = $commande;
}
}
}
return $commandesClient;
}
}