1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
<?php
namespace App\Controller;
use App\Entity\Comment;
use App\Entity\Document;
use App\Entity\Etat;
use App\Entity\Ticket;
use App\Form\CommentType;
use App\Form\TicketType;
use DateTime;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\User\UserInterface;
class TicketController extends AbstractController
{
/* d'autre méthodes...*/
/**
* @Route("/voir_detail/{id}", name="ticket_detail",
* requirements={"id": "\d+"}
* )
* @param $id
* @param Ticket $ticket
* @param Request $request
* @param EntityManagerInterface $em
* @param UserInterface $user
* @return Response
*/
public function voirDetail($id, Ticket $ticket, Request $request, EntityManagerInterface $em, UserInterface $user)
{
// on crée une instance de la class Comment pour pouvoir les afficher
$comment = new Comment();
$form = $this->createForm(CommentType::class, $comment);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if (!$comment->getId()) {
//on initialise la date de création du commentaire à la date du jour
$comment->setCreatedAt(new DateTime());
// on recupère le nom de celui qui a laissé le commentaire
$comment->setTicket($ticket);
$comment->setAuthor($user->getUsername());
$em->persist($comment);
$em->flush();
}
// On récupère les documents transmis
$documents = $form->get('documents')->getData();
// On boucle sur les documents
foreach ($documents as $document) {
// On génère un nouveau nom de fichier
$fichier = md5(uniqid()) . '.' . $document->guessExtension();
// On copie le fichier dans le dossier uploads
$document->move(
$this->getParameter('documents_directory'),
$fichier
);
// On stocke l'image dans la base de données (son nom en réalité)
$doc = new Document();
$doc->setName($fichier);
$ticket->addDocument($doc);
// on recupère le ticket par son id
$repo = $this->getDoctrine()->getRepository(Ticket::class);
$ticket = $repo->find($id);
return $this->redirectToRoute("ticket_detail", ['id' => $ticket->getId()]);
}
return $this->render('ticket/detail_ticket.html.twig', [
"ticket" => $ticket,
'commentForm' => $form->createView(),
]);
}
}
} |
Partager