<?php
namespace App\Controller;
use App\Repository\MembreRepository;
use DateTimeImmutable;
use App\Entity\Offre;
use App\Form\OffreType;
use App\Repository\OffreRepository;
use Doctrine\ORM\EntityManagerInterface;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use App\Entity\Membre;
class OffreController extends AbstractController
{
/**
* @Route("/dashboard/offre", name="offre_index", methods={"GET"})
* @Security("is_granted('ROLE_ADMINISTRATEUR') or is_granted('ROLE_MEMBRE')")
*/
public function index(OffreRepository $offreRepository, PaginatorInterface $paginator,Request $request): Response
{
$this->denyAccessUnlessGranted('IS_AUTHENTICATED_REMEMBERED');
$date=null;
$intituleOffre = null;
$offres = $offreRepository->findBy(["isDeleted" => 0], ['id' => 'desc']);
return $this->render('offre/index.html.twig', [
'intituleOffreFilter'=>$intituleOffre,
'offres' =>$offres,
'dateFilter' => $date,
]);
}
/**
* @Route("/dashboard/offre/filter/date", name="offre_filter_date", methods={"GET","POST"})
* @Security("is_granted('ROLE_ADMINISTRATEUR')")
*/
public function filtredByDate(OffreRepository $offresRepository, Request $request, PaginatorInterface $paginator): Response
{
$intituleOffre=null;
$date_filtre = $request->request->get('date');
$date = new DateTimeImmutable($date_filtre);
if ($date == null) {
$date='';
}
$offres = $offresRepository->findByDate($date);
$pagination = $paginator->paginate(
$offres, /* query NOT result */
$request->query->getInt('page', 1), /*page number*/
5 /*limit per page*/
);
return $this->render('offre/index.html.twig', [
'title' => 'Offres',
'offres' => $pagination,
'dateFilter' => $date_filtre,
'intituleOffreFilter' => $intituleOffre,
]);
}
/**
* @Route("/dashboard/offre/new", name="offre_new", methods={"GET","POST"})
* @Security("is_granted('ROLE_ADMINISTRATEUR')")
*/
public function newOffre(MembreRepository $membreRepository, Request $request, EntityManagerInterface $manager): Response
{
//$destination = $this->getParameter('kernel.project_dir') . '/public/admin/uploads';
$members=$membreRepository->findBy(["isDeleted"=>false]);
$offre = new Offre();
$form = $this->createForm(OffreType::class, $offre);
$form->handleRequest($request);
if ($request->isMethod('post')) {
$intituleOffre = $request->request->get("titleOffre");
$offre->setIntituleOffre($intituleOffre);
$titleOffre = $request->request->get("intituleOffre");
$offre->setTitleOffre($titleOffre);
$autreContact = $request->request->get("autreContactOffre");
$offre->setAutreContact($autreContact);
$offre->setDate(new DateTimeImmutable());
$offre->setDateOffre(new DateTimeImmutable($request->request->get("dateOffre")));
$offre->setTime(new DateTimeImmutable());
$contactMem = $request->request->get("contactOffre");
$mem = $membreRepository->findOneBy(["id" => $contactMem]);
$offre->setContactmem($mem);
//$image = $request->files->get('image');
//$image_name = "Offre" . '-' . uniqid() . '.' . $image->guessExtension();
/*$image->move(
$destination,
$image_name
);
$offre->setImage($image_name);
$piece = $request->files->get('pieceJoindre');
if ($piece != null){
$piece_name = "doc" . '-' . uniqid() . '.' . $piece->guessExtension();
$piece->move(
$destination,
$piece_name
);
$offre->setPieceJoindre($piece_name);}*/
$manager->persist($offre);
$manager->flush();
return $this->redirectToRoute('offre_index', [], Response::HTTP_SEE_OTHER);
}
return $this->render('offre/new.html.twig', [
'title'=>'Offre',
'offre' => $offre,
'members'=>$members,
'form' => $form->createView()
]);
}
/**
* @Route("/dashboard/offre/{id}/edit", name="offre_edit", methods={"GET","POST"})
* @Security("is_granted('ROLE_ADMINISTRATEUR')")
*/
public function edit(MembreRepository $membreRepository, Request $request, Offre $offre, EntityManagerInterface $manager): Response
{
//$destination = $this->getParameter('kernel.project_dir') . '/public/admin/uploads';
$form = $this->createForm(OffreType::class, $offre);
$form->handleRequest($request);
$members=$membreRepository->findBy(["isDeleted"=>false]);
if ($request->isMethod('post')) {
$intituleOffre = $request->request->get("titleOffre");
$offre->setIntituleOffre($intituleOffre);
$titleOffre = $request->request->get("intituleOffre");
$offre->setTitleOffre($titleOffre);
$autreContact = $request->request->get("autreContactOffre");
$offre->setAutreContact($autreContact);
$offre->setDate(new DateTimeImmutable());
$offre->setDateOffre(new DateTimeImmutable($request->request->get("dateOffre")));
$offre->setTime(new DateTimeImmutable());
$contactMem = $request->request->get("contactOffre");
$mem = $membreRepository->findOneBy(["id" => $contactMem]);
$offre->setContactmem($mem);
/*
if($request->files->get('image')!=null){
$image = $request->files->get('image');
$image_name = "Offre" . '-' . uniqid() . '.' . $image->guessExtension();
$image->move(
$destination,
$image_name
);
$offre->setImage($image_name);
}
if($request->files->get('pieceJoindre')!=null){
$piece = $request->files->get('pieceJoindre');
$piece_name = "doc" . '-' . uniqid() . '.' . $piece->guessExtension();
$piece->move(
$destination,
$piece_name
);
$offre->setPieceJoindre($piece_name);
}*/
$manager->flush();
return $this->redirectToRoute('offre_index', [], Response::HTTP_SEE_OTHER);
}
return $this->render('offre/edit.html.twig', [
"title"=>"Offre",
'offre' => $offre,
'members'=>$members,
'form' => $form->createView(),
]);
}
/**
* @Route("/dashboard/offre/filter", name="offre_filter_intituleOffre", methods={"GET","POST"})
* @Security("is_granted('ROLE_ADMINISTRATEUR')")
*/
public function filtredByIntituleOffre(OffreRepository $offreRepository, Request $request, PaginatorInterface $paginator): Response
{
$date=null;
$intituleOffre = $request->request->get('intituleOffre');
if ($intituleOffre == null) {
$intituleOffre='';
}
$offres = $offreRepository->findByIntituleOffre($intituleOffre);
return $this->render('offre/index.html.twig', [
'intituleOffreFilter' => $intituleOffre,
'offres' => $offres,
'dateFilter' => $date
]);
}
/**
* @Route("/dashboard/offre/show/filter", name="offre_filter_intituleOffre_show", methods={"GET","POST"})
*/
public function filtredByIntituleOffreShow(OffreRepository $offreRepository, Request $request, PaginatorInterface $paginator): Response
{
$date=null;
$intituleOffre = $request->request->get('intituleOffre');
if ($intituleOffre == null) {
$intituleOffre='';
}
$offres = $offreRepository->findByTitleOffre($intituleOffre);
$pagination = $paginator->paginate(
$offres, /* query NOT result */
$request->query->getInt('page', 1), /*page number*/
5 /*limit per page*/
);
return $this->render('offre/offres.html.twig', [
'intituleOffreFilter' => $intituleOffre,
'offres' => $pagination,
'dateFilter' => $date
]);
}
/**
* @Route("/dashboard/offre/show/filter/date", name="offre_filter_date_show", methods={"GET","POST"})
* @Security("is_granted('ROLE_ADMINISTRATEUR')")
*/
public function filtredByDateShow(OffreRepository $offresRepository, Request $request, PaginatorInterface $paginator): Response
{
$intituleOffre=null;
$date_filtre = $request->request->get('date');
$date = new DateTimeImmutable($date_filtre);
if ($date == null) {
$date='';
}
$offres = $offresRepository->findByDate($date);
$pagination = $paginator->paginate(
$offres, /* query NOT result */
$request->query->getInt('page', 1), /*page number*/
5 /*limit per page*/
);
return $this->render('offre/offres.html.twig', [
'title' => 'Offres',
'offres' => $pagination,
'dateFilter' => $date_filtre,
'intituleOffreFilter' => $intituleOffre,
]);
}
/**
* @Route("/dashboard/offre/{id}", name="offre_delete", methods={"POST"})
* @Security("is_granted('ROLE_ADMINISTRATEUR')")
*/
public function delete(Request $request, Offre $offre, EntityManagerInterface $manager): Response
{
if ($this->isCsrfTokenValid('delete'.$offre->getId(), $request->request->get('_token'))) {
$offre->setIsDeleted(1);
$manager->flush();
}
return $this->redirectToRoute('offre_index', [], Response::HTTP_SEE_OTHER);
}
/**
* @Route("/dashboard/offre/show", name="offre_old_show")
* @Security("is_granted('ROLE_ADMINISTRATEUR')")
*/
public function oldShow(OffreRepository $repo , PaginatorInterface $paginator,Request $request): Response
{
$intituleOffre=null;
$offres = $repo->findBy(["isDeleted" => 0], ['id' => 'desc']);
$date_filtre=null;
$pagination = $paginator->paginate(
$offres, /* query NOT result */
$request->query->getInt('page', 1), /*page number*/
3 /*limit per page*/
);
return $this->render('offre/show.html.twig', [
'offres' => $pagination,
'dateFilter' => $date_filtre,
'intituleOffreFilter' => $intituleOffre,
]);
}
/**
* @Route("/offres", name="offres_show")
*/
public function show(OffreRepository $repo , PaginatorInterface $paginator,Request $request): Response
{
$intituleOffre=null;
$offres = $repo->findBy(["isDeleted" => 0], ['id' => 'asc']);
$date_filtre=null;
return $this->render('offre/offres.html.twig', [
'offres' => $offres,
'dateFilter' => $date_filtre,
'intituleOffreFilter' => $intituleOffre,
]);
}
}