Implement filtering functionality

This commit is contained in:
Jannis Portmann 2022-01-14 13:52:16 +01:00
parent d0feff7d74
commit e52753446b
3 changed files with 77 additions and 2 deletions

View file

@ -4,6 +4,8 @@ namespace App\Controller;
use App\Entity\Offering;
use App\Form\OfferingFormType;
use App\Form\OfferFilterFormType;
use App\Repository\OfferingRepository;
use App\Repository\WishRepository;
@ -32,10 +34,36 @@ class OfferController extends AbstractController
}
#[Route('/offers', name: 'offers')]
public function index(Environment $twig, OfferingRepository $offerRepository): Response
public function distanceExample(Environment $twig, Request $request, OfferingRepository $offerRepository, PlzToCoordinate $plzconverter, DistanceCalculator $distanceCalculator): Response
{
$form = $this->createForm(OfferFilterFormType::class);
$form->handleRequest($request);
$allOffers = $offerRepository->findAll();
$filteredOffers = [];
if ($form->isSubmitted() && $form->isValid()) {
$filterDistance = $form->get('distance')->getData();
$filterPlz = $form->get('zipCode')->getData();
$filterCoordinate = $plzconverter->convertPlzToCoordinate($filterPlz);
foreach ($allOffers as $offer) {
$offerCoordinate = $offer->getCoordinate();
$distance = $distanceCalculator->calculateDistance($offerCoordinate, $filterCoordinate);
if ($distance < $filterDistance) {
array_push($filteredOffers, $offer);
}
}
}
else {
$filteredOffers = $allOffers;
}
return new Response($twig->render('offer/index.html.twig', [
'offers' => $offerRepository->findAll(),
'offers' => $filteredOffers,
'filter_form' => $form->createView()
]));
}