1 | <?php |
||
16 | class NoticeController extends BaseController |
||
17 | { |
||
18 | /** |
||
19 | * Show last notice. |
||
20 | * |
||
21 | * @param Request $request |
||
22 | * |
||
23 | * @return JsonResponse |
||
24 | */ |
||
25 | public function showAction(Request $request) |
||
26 | { |
||
27 | $em = $this->getDoctrine()->getManager(); |
||
28 | /* @var $rep NoticeRepository */ |
||
29 | $rep = $em->getRepository('AnimeDbAppBundle:Notice'); |
||
30 | |||
31 | $notice = $rep->getFirstShow(); |
||
32 | // caching |
||
33 | /* @var $response JsonResponse */ |
||
34 | $response = $this->getCacheTimeKeeper()->getResponse([], -1, new JsonResponse()); |
||
35 | $response->setEtag(md5($notice ? $notice->getId() : 0)); |
||
36 | // response was not modified for this request |
||
37 | if ($response->isNotModified($request)) { |
||
38 | return $response; |
||
39 | } |
||
40 | |||
41 | // shown notice |
||
42 | if (!is_null($notice)) { |
||
43 | $notice->shown(); |
||
44 | $em->persist($notice); |
||
45 | $em->flush(); |
||
46 | |||
47 | $response->setData([ |
||
48 | 'notice' => $notice->getId(), |
||
49 | 'close' => $this->generateUrl('notice_close', ['id' => $notice->getId()]), |
||
50 | 'see_later' => $this->generateUrl('notice_see_later'), |
||
51 | 'content' => $this->renderView('AnimeDbAppBundle:Notice:show.html.twig', [ |
||
52 | 'notice' => $notice, |
||
53 | 'link_all' => $request->query->getBoolean('all'), |
||
54 | ]), |
||
55 | ]); |
||
56 | } |
||
57 | |||
58 | return $response; |
||
59 | } |
||
60 | |||
61 | /** |
||
62 | * @param Notice $notice |
||
63 | * |
||
64 | * @return JsonResponse |
||
65 | */ |
||
66 | public function closeAction(Notice $notice) |
||
76 | |||
77 | /** |
||
78 | * @return JsonResponse |
||
79 | */ |
||
80 | public function seeLaterAction() |
||
88 | } |
||
89 |