2015-10-07 23:11:57 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Skobkin\Bundle\PointToolsBundle\Controller;
|
|
|
|
|
|
|
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
|
2017-11-05 01:42:08 +00:00
|
|
|
use Skobkin\Bundle\PointToolsBundle\Entity\{SubscriptionEvent, User};
|
|
|
|
use Skobkin\Bundle\PointToolsBundle\Repository\SubscriptionEventRepository;
|
2017-11-05 02:03:26 +00:00
|
|
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
2015-10-07 23:11:57 +00:00
|
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
|
|
2017-11-05 02:03:26 +00:00
|
|
|
class ApiController
|
2015-10-07 23:11:57 +00:00
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Returns last user subscribers log
|
|
|
|
*
|
|
|
|
* @ParamConverter("user", class="SkobkinPointToolsBundle:User")
|
|
|
|
*/
|
2017-11-05 01:42:08 +00:00
|
|
|
public function lastUserSubscribersByIdAction(User $user, SubscriptionEventRepository $subscriptionEventRepository): Response
|
2015-10-07 23:11:57 +00:00
|
|
|
{
|
2017-11-05 01:42:08 +00:00
|
|
|
$qb = $subscriptionEventRepository->createQueryBuilder('se');
|
2015-10-07 23:11:57 +00:00
|
|
|
$qb
|
|
|
|
->select(['se', 'sub'])
|
|
|
|
->innerJoin('se.subscriber', 'sub')
|
|
|
|
->where($qb->expr()->eq('se.author', ':author'))
|
2015-10-07 23:40:42 +00:00
|
|
|
->orderBy('se.date', 'desc')
|
2015-10-07 23:11:57 +00:00
|
|
|
->setParameter('author', $user)
|
|
|
|
->setMaxResults(20)
|
|
|
|
;
|
|
|
|
|
|
|
|
$data = [];
|
|
|
|
|
|
|
|
/** @var SubscriptionEvent $event */
|
|
|
|
foreach ($qb->getQuery()->getResult() as $event) {
|
|
|
|
$data[] = [
|
|
|
|
'user' => $event->getSubscriber()->getLogin(),
|
|
|
|
'action' => $event->getAction(),
|
|
|
|
'datetime' => $event->getDate()->format('d.m.Y H:i:s'),
|
|
|
|
];
|
|
|
|
}
|
|
|
|
|
2017-11-05 02:03:26 +00:00
|
|
|
return new JsonResponse($data);
|
2015-10-07 23:11:57 +00:00
|
|
|
}
|
|
|
|
}
|