Merge branch 'homepage/rewrite' of gitlab.com:Chill-Projet/chill-bundles into homepage/rewrite

This commit is contained in:
Mathieu Jaumotte 2022-01-28 09:56:52 +01:00
commit ebf85d4e4d
5 changed files with 74 additions and 3 deletions

View File

@ -17,9 +17,11 @@ use Chill\MainBundle\Pagination\PaginatorFactory;
use Chill\MainBundle\Repository\NotificationRepository; use Chill\MainBundle\Repository\NotificationRepository;
use Chill\MainBundle\Security\Authorization\NotificationVoter; use Chill\MainBundle\Security\Authorization\NotificationVoter;
use Chill\MainBundle\Serializer\Model\Collection; use Chill\MainBundle\Serializer\Model\Collection;
use Chill\MainBundle\Serializer\Model\Counter;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use RuntimeException; use RuntimeException;
use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Exception\AccessDeniedException; use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\Security;
@ -74,16 +76,24 @@ class NotificationApiController
/** /**
* @Route("/my/unread") * @Route("/my/unread")
*/ */
public function myUnreadNotifications(): JsonResponse public function myUnreadNotifications(Request $request): JsonResponse
{ {
$total = $this->notificationRepository->countUnreadByUser($this->security->getUser()); $total = $this->notificationRepository->countUnreadByUser($this->security->getUser());
if ($request->query->getBoolean('countOnly')) {
return new JsonResponse(
$this->serializer->serialize(new Counter($total), 'json', ['groups' => ['read']]),
JsonResponse::HTTP_OK,
[],
true
);
}
$paginator = $this->paginatorFactory->create($total); $paginator = $this->paginatorFactory->create($total);
$notifications = $this->notificationRepository->findUnreadByUser( $notifications = $this->notificationRepository->findUnreadByUser(
$this->security->getUser(), $this->security->getUser(),
$paginator->getItemsPerPage(), $paginator->getItemsPerPage(),
$paginator->getCurrentPageFirstItemNumber() $paginator->getCurrentPageFirstItemNumber()
); );
dump($notifications);
$collection = new Collection($notifications, $paginator); $collection = new Collection($notifications, $paginator);
return new JsonResponse( return new JsonResponse(

View File

@ -0,0 +1,31 @@
<?php
namespace Chill\MainBundle\Serializer\Model;
class Counter implements \JsonSerializable
{
private int $counter;
public function __construct(?int $counter)
{
$this->counter = $counter;
}
public function getCounter(): ?int
{
return $this->counter;
}
public function setCounter(?int $counter): Counter
{
$this->counter = $counter;
return $this;
}
public function jsonSerialize()
{
return ['count' => $this->counter];
}
}

View File

@ -13,6 +13,7 @@ namespace Chill\PersonBundle\Controller;
use Chill\MainBundle\CRUD\Controller\ApiController; use Chill\MainBundle\CRUD\Controller\ApiController;
use Chill\MainBundle\Serializer\Model\Collection; use Chill\MainBundle\Serializer\Model\Collection;
use Chill\MainBundle\Serializer\Model\Counter;
use Chill\PersonBundle\Repository\AccompanyingPeriod\AccompanyingPeriodWorkRepository; use Chill\PersonBundle\Repository\AccompanyingPeriod\AccompanyingPeriodWorkRepository;
use DateInterval; use DateInterval;
use DateTimeImmutable; use DateTimeImmutable;
@ -40,6 +41,16 @@ class AccompanyingCourseWorkApiController extends ApiController
->add(new DateInterval('P' . $request->query->getInt('since', 15) . 'D')); ->add(new DateInterval('P' . $request->query->getInt('since', 15) . 'D'));
$total = $this->accompanyingPeriodWorkRepository $total = $this->accompanyingPeriodWorkRepository
->countNearEndDateByUser($this->getUser(), $since, $until); ->countNearEndDateByUser($this->getUser(), $since, $until);
if ($request->query->getBoolean('countOnly', false)) {
return $this->json(
new Counter($total),
JsonResponse::HTTP_OK,
[],
['groups' => ['read']]
);
}
$paginator = $this->getPaginatorFactory()->create($total); $paginator = $this->getPaginatorFactory()->create($total);
$works = $this->accompanyingPeriodWorkRepository $works = $this->accompanyingPeriodWorkRepository
->findNearEndDateByUser($this->getUser(), $since, $until, $paginator->getItemsPerPage(), $paginator->getCurrentPageFirstItemNumber()); ->findNearEndDateByUser($this->getUser(), $since, $until, $paginator->getItemsPerPage(), $paginator->getCurrentPageFirstItemNumber());

View File

@ -15,6 +15,7 @@ use Chill\DocGeneratorBundle\Entity\DocGeneratorTemplate;
use Chill\DocGeneratorBundle\Repository\DocGeneratorTemplateRepository; use Chill\DocGeneratorBundle\Repository\DocGeneratorTemplateRepository;
use Chill\MainBundle\Pagination\PaginatorFactory; use Chill\MainBundle\Pagination\PaginatorFactory;
use Chill\MainBundle\Serializer\Model\Collection; use Chill\MainBundle\Serializer\Model\Collection;
use Chill\MainBundle\Serializer\Model\Counter;
use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWorkEvaluation; use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWorkEvaluation;
use Chill\PersonBundle\Entity\SocialWork\Evaluation; use Chill\PersonBundle\Entity\SocialWork\Evaluation;
use Chill\PersonBundle\Repository\AccompanyingPeriod\AccompanyingPeriodWorkEvaluationRepository; use Chill\PersonBundle\Repository\AccompanyingPeriod\AccompanyingPeriodWorkEvaluationRepository;
@ -95,6 +96,16 @@ class AccompanyingPeriodWorkEvaluationApiController
{ {
$total = $this->accompanyingPeriodWorkEvaluationRepository $total = $this->accompanyingPeriodWorkEvaluationRepository
->countNearMaxDateByUser($this->security->getUser()); ->countNearMaxDateByUser($this->security->getUser());
if ($request->query->getBoolean('countOnly', false)) {
return new JsonResponse(
$this->serializer->serialize(new Counter($total), 'json', ['groups' => 'read']),
JsonResponse::HTTP_OK,
[],
true
);
}
$paginator = $this->paginatorFactory->create($total); $paginator = $this->paginatorFactory->create($total);
$works = $this->accompanyingPeriodWorkEvaluationRepository $works = $this->accompanyingPeriodWorkEvaluationRepository
->findNearMaxDateByUser( ->findNearMaxDateByUser(

View File

@ -14,6 +14,7 @@ namespace Chill\TaskBundle\Controller;
use Chill\MainBundle\Pagination\PaginatorFactory; use Chill\MainBundle\Pagination\PaginatorFactory;
use Chill\MainBundle\Security\Resolver\CenterResolverDispatcherInterface; use Chill\MainBundle\Security\Resolver\CenterResolverDispatcherInterface;
use Chill\MainBundle\Serializer\Model\Collection; use Chill\MainBundle\Serializer\Model\Collection;
use Chill\MainBundle\Serializer\Model\Counter;
use Chill\MainBundle\Templating\Listing\FilterOrderHelper; use Chill\MainBundle\Templating\Listing\FilterOrderHelper;
use Chill\MainBundle\Templating\Listing\FilterOrderHelperFactoryInterface; use Chill\MainBundle\Templating\Listing\FilterOrderHelperFactoryInterface;
use Chill\MainBundle\Timeline\TimelineBuilder; use Chill\MainBundle\Timeline\TimelineBuilder;
@ -442,7 +443,7 @@ final class SingleTaskController extends AbstractController
* defaults={"_format": "json"} * defaults={"_format": "json"}
* ) * )
*/ */
public function myTasksAction(string $_format) public function myTasksAction(string $_format, Request $request)
{ {
$this->denyAccessUnlessGranted('ROLE_USER'); $this->denyAccessUnlessGranted('ROLE_USER');
@ -455,6 +456,13 @@ final class SingleTaskController extends AbstractController
$filterOrder->getQueryString(), $filterOrder->getQueryString(),
$flags $flags
); );
if ('json' === $_format && $request->query->getBoolean('countOnly')) {
return $this->json(
new Counter($nb),
);
}
$paginator = $this->paginatorFactory->create($nb); $paginator = $this->paginatorFactory->create($nb);
$tasks = $this->singleTaskAclAwareRepository->findByCurrentUsersTasks( $tasks = $this->singleTaskAclAwareRepository->findByCurrentUsersTasks(
$filterOrder->getQueryString(), $filterOrder->getQueryString(),