<?php
namespace App\Controller\Backend;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use FOS\RestBundle\Controller\Annotations as Rest;
use FOS\RestBundle\View\View;
use App\Annotation\Log;
use App\Annotation\PermissionAdmin;
use App\Annotation\PermissionPublic;
/**
* @Rest\Route("/api/notification")
*/
class NotificationController extends BaseController
{
public function extraFilter($input)
{
$commercialId = $input->get('filter_commercial') ?? $this->userService->getCommercialIdByUser();
$extraFilter = function ($qb) use ($commercialId) {
if ($commercialId) {
$qb->join('Notification.profile', 'Profile');
$qb->andWhere('Profile.commercial = :commercialId')
->setParameter('commercialId', $commercialId);
}
};
return $extraFilter;
}
/**
* @Rest\Delete("/{id}")
* @PermissionAdmin
* @Log
* @return View
*/
public function delete(int $id): View
{
return View::create(
[
'result' => $this->currentService->delete($id)
],
Response::HTTP_OK
);
}
/**
* @Rest\Post("/update-seen")
* @PermissionAdmin
* @Log
* @return View
*/
public function updateSeen(Request $request): View
{
return View::create($this->currentService->updateSeen($request), Response::HTTP_OK);
}
/**
* @Rest\Post("/update-seen-list")
* @PermissionAdmin
* @Log
* @return View
*/
public function updateSeenByList(Request $request): View
{
return View::create($this->currentService->updateSeenByList($request), Response::HTTP_OK);
}
/**
* @Rest\Get("/list")
* @PermissionPublic
* @return View
*/
public function getList(Request $request): View
{
$input = $request->query;
$extraFilter = $this->extraFilter($input);
return View::create(
$this->currentRepo->getList($request, 'App\DTO\Notification\NotificationOutput', $extraFilter),
Response::HTTP_OK
);
}
/**
* @Rest\Get("/{id}")
* @PermissionPublic
* @return View
*/
public function getOne($id): View
{
return View::create(
$this->currentRepo->getById($id),
Response::HTTP_OK
);
}
}