Updating report

This commit is contained in:
Marc Ducobu 2014-11-11 16:07:44 +01:00
parent bdbcdd2db9
commit 2ae19eba39
6 changed files with 70 additions and 62 deletions

View File

@ -147,7 +147,7 @@ class ReportController extends Controller
$em->flush(); $em->flush();
return $this->redirect($this->generateUrl('report_show', return $this->redirect($this->generateUrl('report_show',
array('person_id' => $person_id,'id' => $entity->getId()))); array('person_id' => $person_id,'report_id' => $entity->getId())));
} }
return $this->render('ChillReportBundle:Report:new.html.twig', array( return $this->render('ChillReportBundle:Report:new.html.twig', array(
@ -182,13 +182,13 @@ class ReportController extends Controller
* Finds and displays a Report entity. * Finds and displays a Report entity.
* *
*/ */
public function showAction($id, $person_id) public function showAction($report_id, $person_id)
{ {
$em = $this->getDoctrine()->getManager(); $em = $this->getDoctrine()->getManager();
$person = $em->getRepository('ChillPersonBundle:Person')->find($person_id); $person = $em->getRepository('ChillPersonBundle:Person')->find($person_id);
$entity = $em->getRepository('ChillReportBundle:Report')->find($id); $entity = $em->getRepository('ChillReportBundle:Report')->find($report_id);
if (!$entity) { if (!$entity) {
throw $this->createNotFoundException('Unable to find Report entity.'); throw $this->createNotFoundException('Unable to find Report entity.');
@ -204,73 +204,79 @@ class ReportController extends Controller
* Displays a form to edit an existing Report entity. * Displays a form to edit an existing Report entity.
* *
*/ */
public function editAction($id) public function editAction($person_id, $report_id, Request $request)
{ {
$em = $this->getDoctrine()->getManager(); $em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('ChillReportBundle:Report')->find($id); $report = $em->getRepository('ChillReportBundle:Report')->find($report_id);
if (!$entity) { if (!$report) {
throw $this->createNotFoundException('Unable to find Report entity.'); throw $this->createNotFoundException('Unable to find the report.');
} }
$editForm = $this->createEditForm($entity); if(intval($person_id) !== intval($report->getPerson()->getId())) {
$deleteForm = $this->createDeleteForm($id); throw new Exception("This is not the report of the person", 1);
}
$person = $report->getPerson();
$editForm = $this->createEditForm($report, $person->getId());
return $this->render('ChillReportBundle:Report:edit.html.twig', array( return $this->render('ChillReportBundle:Report:edit.html.twig', array(
'entity' => $entity,
'edit_form' => $editForm->createView(), 'edit_form' => $editForm->createView(),
'delete_form' => $deleteForm->createView(), 'person' => $person,
)); ));
} }
/** /**
* Creates a form to edit a Report entity. * Creates a form to edit a Report entity.
* *
* @param Report $entity The entity * @param Report $entity The entity
* *
* @return \Symfony\Component\Form\Form The form * @return \Symfony\Component\Form\Form The form
*/ */
private function createEditForm(Report $entity) private function createEditForm(Report $entity, $person_id)
{ {
$form = $this->createForm(new ReportType(), $entity, array( $form = $this->createForm(new ReportType(), $entity, array(
'action' => $this->generateUrl('report_update', array('id' => $entity->getId())), 'action' => $this->generateUrl('report_update',
array('person_id' => $person_id, 'report_id' => $entity->getId())),
'method' => 'PUT', 'method' => 'PUT',
'em' => $this->getDoctrine()->getManager(), 'em' => $this->getDoctrine()->getManager(),
'cFGroup' => $entity->getCFGroup(),
)); ));
$form->add('submit', 'submit', array('label' => 'Update')); $form->add('submit', 'submit', array('label' => 'Update'));
return $form; return $form;
} }
/** /**
* Edits an existing Report entity. * Edits an existing Report entity.
* *
*/ */
public function updateAction(Request $request, $id) public function updateAction($person_id, $report_id, Request $request)
{ {
$em = $this->getDoctrine()->getManager(); $em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('ChillReportBundle:Report')->find($id); $report = $em->getRepository('ChillReportBundle:Report')->find($report_id);
if (!$entity) { if (!$report) {
throw $this->createNotFoundException('Unable to find Report entity.'); throw $this->createNotFoundException('Unable to find the report '.$report_id.'.');
} }
$deleteForm = $this->createDeleteForm($id); $editForm = $this->createEditForm($report, $person_id);
$editForm = $this->createEditForm($entity);
$editForm->handleRequest($request); $editForm->handleRequest($request);
if ($editForm->isValid()) { if ($editForm->isValid()) {
$em->flush(); $em->flush();
return $this->redirect($this->generateUrl('report_edit', array('id' => $id))); return $this->redirect($this->generateUrl('report_edit',
array('person_id' => $report->getPerson()->getId(), 'report_id' => $report_id)));
} }
return $this->render('ChillReportBundle:Report:edit.html.twig', array( return $this->render('ChillReportBundle:Report:edit.html.twig', array(
'entity' => $entity,
'edit_form' => $editForm->createView(), 'edit_form' => $editForm->createView(),
'delete_form' => $deleteForm->createView(), 'person' => $person
)); ));
} }
} }

View File

@ -23,11 +23,15 @@ report_list:
person: person:
order: 101 order: 101
label: Report list label: Report list
report_show: report_show:
path: /person/{person_id}/report/{id}/show path: /person/{person_id}/report/{report_id}/show
defaults: { _controller: "ChillReportBundle:Report:show" } defaults: { _controller: "ChillReportBundle:Report:show" }
cl_custom_fields_report: report_edit:
resource: "@ChillReportBundle/Resources/config/routing/report.yml" path: /person/{person_id}/report/{report_id}/edit
prefix: /report defaults: { _controller: "ChillReportBundle:Report:edit" }
report_update:
path: /person/{person_id}/report/{report_id}/update
defaults: { _controller: "ChillReportBundle:Report:update" }
requirements: { _method: post|put }

View File

@ -1,17 +0,0 @@
report:
path: /
defaults: { _controller: "ChillReportBundle:Report:index" }
report_edit:
path: /{id}/edit
defaults: { _controller: "ChillReportBundle:Report:edit" }
report_update:
path: /{id}/update
defaults: { _controller: "ChillReportBundle:Report:update" }
requirements: { _method: post|put }
report_delete:
path: /{id}/delete
defaults: { _controller: "ChillReportBundle:Report:delete" }
requirements: { _method: post|delete }

View File

@ -1,16 +1,27 @@
{% extends '::base.html.twig' %} {#
* Copyright (C) 2014, Champs Libres Cooperative SCRLFS, <http://www.champs-libres.coop>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
{% extends "ChillPersonBundle::layout.html.twig" %}
{% block body -%} {% set activeRouteKey = 'report_select_type' %}
<h1>Report edit</h1>
{% block title %}{{ 'Edition du rapport' |trans() }}{% endblock title %}
{% block personcontent %}
{{ form(edit_form) }} {{ form(edit_form) }}
<ul class="record_actions">
<li>
<a href="{{ path('report') }}">
Back to the list
</a>
</li>
<li>{{ form(delete_form) }}</li>
</ul>
{% endblock %} {% endblock %}

View File

@ -36,7 +36,7 @@
<td>{% if report.date %}{{ report.date|date('d-m-Y') }}{% endif %}</td> <td>{% if report.date %}{{ report.date|date('d-m-Y') }}{% endif %}</td>
<td>{{ report.cFGroup.getName(app.request.locale) }}</td> <td>{{ report.cFGroup.getName(app.request.locale) }}</td>
<td>{{ report.scope }}</td> <td>{{ report.scope }}</td>
<td><a href="{#{ path('report_edit', { 'id': entity.id }) }#}">{{ 'update' | trans }}</a></td> <td><a href="{{ path('report_edit', { 'person_id': report.person.id, 'report_id': report.id }) }}">{{ 'update' | trans }}</a></td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>

View File

@ -51,6 +51,10 @@
<th>Cfgroup</th> <th>Cfgroup</th>
<td>{{ entity.cFGroup.getName(app.request.locale) }}</td> <td>{{ entity.cFGroup.getName(app.request.locale) }}</td>
</tr> </tr>
<tr>
<th></th>
<td><a href="{{ path('report_edit', { 'person_id': entity.person.id, 'report_id': entity.id }) }}">{{ 'update' | trans }}</a></td>
</tr>
</tbody> </tbody>
</table> </table>
{% endblock %} {% endblock %}