add endpoint for listing evaluation

This commit is contained in:
Julien Fastré 2021-08-02 23:24:31 +02:00
parent ebb2479966
commit 7045e643a8
2 changed files with 74 additions and 9 deletions

View File

@ -0,0 +1,46 @@
<?php
namespace Chill\PersonBundle\Controller;
use Chill\MainBundle\Pagination\PaginatorFactory;
use Chill\MainBundle\Serializer\Model\Collection;
use Chill\PersonBundle\Entity\SocialWork\SocialAction;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
class SocialWorkEvaluationApiController extends AbstractController
{
private PaginatorFactory $paginatorFactory;
/**
* @param PaginatorFactory $paginatorFactory
*/
public function __construct(PaginatorFactory $paginatorFactory)
{
$this->paginatorFactory = $paginatorFactory;
}
/**
* @Route("/api/1.0/person/social-work/evaluation/by-social-action/{action_id}.json",
* name="chill_person_evaluation_index_by_social_action",
* requirements={
* "_format": "json"
* }
* )
* @ParamConverter("action", options={"id": "action_id"})
* @param SocialAction $action
* @return Response
*/
public function listEvaluationBySocialAction(SocialAction $action): Response
{
$pagination = $this->paginatorFactory->create($action->getEvaluations()->count());
$evaluations = $action->getEvaluations()->slice($pagination->getCurrentPageFirstItemNumber(),
$pagination->getItemsPerPage());
$collection = new Collection($evaluations, $pagination);
return $this->json($collection, Response::HTTP_OK, [], [ 'groups' => [ 'read' ]]);
}
}

View File

@ -1257,7 +1257,7 @@ paths:
/1.0/person/social/social-action.json:
get:
tags:
- accompanying-course-work
- social-work-social-action
summary: get a list of social action
responses:
401:
@ -1268,7 +1268,7 @@ paths:
/1.0/person/social/social-action/{id}.json:
get:
tags:
- accompanying-course-work
- social-work-social-action
parameters:
- name: id
in: path
@ -1291,7 +1291,7 @@ paths:
/1.0/person/social/social-action/by-social-issue/{id}.json:
get:
tags:
- accompanying-course-work
- social-work-social-action
parameters:
- name: id
in: path
@ -1311,6 +1311,25 @@ paths:
400:
description: "Bad Request"
/1.0/person/social-work/evaluation/by-social-action/{social_action_id}.json:
get:
tags:
- social-work-evaluation
summary: return a list of evaluation which are available for a given social action
parameters:
- name: social_action_id
in: path
required: true
description: The social action's id
schema:
type: integer
format: integer
minimum: 1
responses:
200:
description: ok
404:
description: not found
/1.0/person/social-work/social-issue.json: