adding remove participation method

This commit is contained in:
Tchama 2019-11-28 16:38:03 +01:00
parent 6fe4594d3c
commit 8618efc35a
5 changed files with 103 additions and 3 deletions

View File

@ -19,6 +19,8 @@
namespace Chill\EventBundle\Controller;
use Chill\EventBundle\Entity\Event;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
@ -551,8 +553,9 @@ class ParticipationController extends Controller
/**
* show a form to edit multiple participation for the same event.
*
*
* @param int $event_id
* @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
*/
public function editMultipleAction($event_id)
{
@ -637,8 +640,8 @@ class ParticipationController extends Controller
}
/**
*
* @param \Doctrine\Common\Collections\Collectionn $participations contains object of Participation type
*
* @param \Doctrine\Common\Collections\Collection $participations contains object of Participation type
* @param \Chill\EventBundle\Entity\Event $event
* @return \Symfony\Component\Form\FormInterface
*/
@ -669,4 +672,65 @@ class ParticipationController extends Controller
return $form;
}
/**
* @param integer $participation_id
* @param Request $request
* @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
*/
public function deleteAction($participation_id, Request $request)
{
$em = $this->getDoctrine()->getManager();
$participation = $em->getRepository('ChillEventBundle:Participation')->findOneBy([
'id' => $participation_id
]);
if (! $participation) {
throw $this->createNotFoundException('Unable to find participation.');
}
/** @var Event $event */
$event = $participation->getEvent();
$form = $this->createDeleteForm($participation_id);
if ($request->getMethod() === Request::METHOD_DELETE) {
$form->handleRequest($request);
if ($form->isValid()) {
$em->remove($participation);
$em->flush();
$this->addFlash('success', $this->get('translator')
->trans("The participation has been sucessfully removed")
);
return $this->redirectToRoute('chill_event__event_show', [
'event_id' => $event->getId()
]);
}
}
return $this->render('ChillEventBundle:Event:confirm_delete.html.twig', [
'event_id' => $event->getId(),
'delete_form' => $form->createView()
]);
}
/**
* @param $participation_id
* @return \Symfony\Component\Form\FormInterface
*/
private function createDeleteForm($participation_id)
{
return $this->createFormBuilder()
->setAction($this->generateUrl('chill_event_participation_delete', [
'participation_id' => $participation_id
]))
->setMethod('DELETE')
->add('submit', SubmitType::class, ['label' => 'Delete'])
->getForm()
;
}
}

View File

@ -23,3 +23,11 @@ chill_event_participation_update_multiple:
path: /{event_id}/update_multiple
defaults: { _controller: ChillEventBundle:Participation:updateMultiple }
methods: [POST]
chill_event_participation_delete:
path: /{participation_id}/delete
requirements:
participation_id: \d+
defaults: { _controller: ChillEventBundle:Participation:delete }
methods: [ GET, DELETE ]

View File

@ -43,9 +43,13 @@ The participation was updated: La participation a été mise à jour
'The following people have been ignored because they are already participating on the event': '{1} La personne suivante a été ignorée parce qu''elle participe déjà à l''événement | ]1,Inf] Les personnes suivantes ont été ignorées parce qu''elles participent déjà à l''événement'
There are no participation to edit for this event: Il n'y a pas de participation pour cet événement
The participations have been successfully updated.: Les participations ont été mises à jour.
The participation has been sucessfully removed: La participation a été correctement supprimée.
The participations were created: Les participations ont été créées
Events participation: Participation aux événements
Remove participation: Supprimer la participation
Are you sure you want to remove that participation ?: Êtes-vous certain de vouloir supprimer cette participation ?
#search
Event search: Recherche d'événements
'%total% events match the search %pattern%' : '{0} Aucun événement ne correspond aux termes de recherche "%pattern%" | {1} Un événement a été trouvé par la recherche "%pattern%" | ]1,Inf] %total% événements correspondent aux termes de recherche "%pattern%".'

View File

@ -0,0 +1,20 @@
{% extends 'ChillEventBundle::layout.html.twig' %}
{% set activeRouteKey = 'chill_event__event_show' %}
{% block title 'Remove participation'|trans %}
{% block event_content %}
{{ include('ChillMainBundle:Util:confirmation_template.html.twig',
{
'title' : 'Remove participation'|trans,
'confirm_question' : 'Are you sure you want to remove that participation ?'|trans,
'cancel_route' : activeRouteKey,
'cancel_parameters' : { 'event_id' : event_id },
'form' : delete_form
}
) }}
{% endblock %}

View File

@ -91,6 +91,10 @@
{{ 'Edit'|trans }}
</a>
</li>
<li>
<a href="{{ path('chill_event_participation_delete', {'participation_id' : participation.id } ) }}"
class="sc-button bt-delete"></a>
</li>
{% endif %}
</ul>
</td>