<?php
namespace App\Controller;
use App\Entity\Item;
use App\Entity\Menu;
use App\Entity\Criterion;
use App\Entity\Category;
use App\Repository\MenuRepository;
use App\Repository\ItemRepository;
use App\Repository\CategoryRepository;
use App\Repository\CriterionRepository;
use App\Repository\CakeRepository;
// use App\Services\ToolsService;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use App\Entity\Product;
use App\Repository\OfferRepository;
use App\Services\ToolsService;
use Symfony\Component\HttpFoundation\Session\Session;
class ShopController extends AppController
{
public function __construct(
MenuRepository $menuRepository,
CategoryRepository $categoryRepository,
ItemRepository $itemRepository,
CriterionRepository $criterionRepository,
CakeRepository $cakeRepository,
OfferRepository $offerRepository,
EntityManagerInterface $em
) {
parent::__construct(
$menuRepository,
$categoryRepository,
$itemRepository,
$criterionRepository,
$cakeRepository,
$offerRepository,
$em
);
}
public function shop(Request $request): Response
{
$route = $request->query->get('route');
$target = $request->query->get('id');
$menus = $this->menuRepository->findAll();
$items = $this->itemRepository->findAll();
$longestCriteriaItem = null;
$longestLength = 0;
foreach ($items as $item) {
$criteriaString = '';
foreach ($item->getCriterion() as $criterion) {
$criteriaString .= $criterion->getLabel();
}
$currentLength = strlen($criteriaString);
if ($currentLength > $longestLength) {
$longestLength = $currentLength;
$longestCriteriaItem = $item;
}
}
$criteriaString = '';
foreach ($longestCriteriaItem->getCriterion() as $criterion) {
$criteriaString .= $criterion->getLabel() . '-';
}
// Remove the trailing dash
$criteriaString = rtrim($criteriaString, '-');
// Calculate the length
$totalLength = strlen($criteriaString);
$categories = $this->categoryRepository->findAll();
$groupedItems = [];
foreach ($items as $item) {
$categoryId = $item->getCategoryId()->getId();
if (!isset($groupedItems[$categoryId])) {
$groupedItems[$categoryId] = [];
}
$groupedItems[$categoryId][] = $item;
}
// $priceRanges = $this->menuRepository->getPriceRanges();
return $this->renderWithParams('app/shop.html.twig', [
'menus' => $menus,
'groupedItems' => $groupedItems,
'items' => $items,
'totalLength' => $totalLength,
'categories' => $categories,
'route' => $route,
'target' => $target
// 'priceRanges' => $priceRanges,
]);
// $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
}
public function dayshop(Request $request): Response
{
$route = $request->query->get('route');
$target = $request->query->get('id');
$menus = $this->menuRepository->findAll();
$items = $this->itemRepository->findAll();
$longestCriteriaItem = null;
$longestLength = 0;
foreach ($items as $item) {
$criteriaString = '';
foreach ($item->getCriterion() as $criterion) {
$criteriaString .= $criterion->getLabel();
}
$currentLength = strlen($criteriaString);
if ($currentLength > $longestLength) {
$longestLength = $currentLength;
$longestCriteriaItem = $item;
}
}
$criteriaString = '';
foreach ($longestCriteriaItem->getCriterion() as $criterion) {
$criteriaString .= $criterion->getLabel() . '-';
}
// Remove the trailing dash
$criteriaString = rtrim($criteriaString, '-');
// Calculate the length
$totalLength = strlen($criteriaString);
$categories = $this->categoryRepository->findAll();
// $priceRanges = $this->menuRepository->getPriceRanges();
return $this->renderWithParams('app/dayshop.html.twig', [
'menus' => $menus,
'categories' => $categories,
'totalLength' => $totalLength,
'route' => $route,
'target' => $target
// 'priceRanges' => $priceRanges,
]);
// $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
}
public function cakeshop(Request $request, ToolsService $toolsService): Response
{
$route = $request->query->get('route');
$target = $request->query->get('id');
$cakes = $this->cakeRepository->findAll();
if ($request->isMethod('POST')) {
// Enoie du message client
$username = $request->request->get('username');
$mail = $request->request->get('email');
$contactMsg = $request->request->get('contact_message');
$from = 'Technique@test.com';
$to = 'test@blabla.fr';
$subject = ' Nouveau message client de ' . $username;
$params = [
'username' => $username,
'mail' => $mail,
'message' => $contactMsg
];
$toolsService->sendMail($from, $to, $subject, $contactMsg, $params);
}
return $this->renderWithParams('app/cakeshop.html.twig', [
'cakes' => $cakes,
'route' => $route,
'target' => $target
// 'priceRanges' => $priceRanges,
]);
}
public function offershop(Request $request, ToolsService $toolsService): Response
{
$route = $request->query->get('route');
$target = $request->query->get('id');
$offers = $this->offerRepository->findAll();
if ($request->isMethod('POST')) {
// Enoie du message client
$username = $request->request->get('username');
$mail = $request->request->get('email');
$contactMsg = $request->request->get('contact_message');
$from = 'Technique@test.com';
$to = 'test@blabla.fr';
$subject = ' Nouveau message client de ' . $username;
$params = [
'username' => $username,
'mail' => $mail,
'message' => $contactMsg
];
$toolsService->sendMail($from, $to, $subject, $contactMsg, $params);
}
return $this->renderWithParams('app/offershop.html.twig', [
'offers' => $offers,
'route' => $route,
'target' => $target
// 'priceRanges' => $priceRanges,
]);
}
public function contact(Request $request, ToolsService $toolsService): Response
{
if ($request->isMethod('POST')) {
$username = $request->request->get('username');
$mail = $request->request->get('email');
$contactMsg = $request->request->get('contact_message');
$from = 'Technique@test.com';
$to = 'test@blabla.fr';
$subject = 'Nouveau message client de ' . $username;
$params = [
'username' => $username,
'mail' => $mail,
'message' => $contactMsg
];
// Send the email
$toolsService->sendMail($from, $to, $subject, $contactMsg, $params);
}
return $this->renderWithParams('app/contact.html.twig', []);
}
}