Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
28 / 28
100.00% covered (success)
100.00%
14 / 14
CRAP
100.00% covered (success)
100.00%
1 / 1
PlaceController
100.00% covered (success)
100.00%
28 / 28
100.00% covered (success)
100.00%
14 / 14
15
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 json
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 respond
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 create
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
 multiplepos
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 sessionusers
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 exndnfo
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 invoicelst
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 ticketlst
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 ticketnfo
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 productlst
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 productnfo
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 qrcodes
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 ticketlog
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3declare(strict_types=1);
4
5use Psr\Http\Message\ResponseInterface as Response;
6use Psr\Http\Message\ServerRequestInterface as Request;
7use UppServices\PlaceService;
8
9/**
10 * Slim controller for place endpoints.
11 * Delegates to PlaceService.
12 */
13class PlaceController
14{
15    private readonly PlaceService $placeService;
16
17    public function __construct(PlaceService $placeService)
18    {
19        $this->placeService = $placeService;
20    }
21
22    private function json(Response $response, array $data, int $status = 200): Response
23    {
24        $response->getBody()->write(json_encode($data));
25        return $response->withHeader('Content-Type', 'application/json')->withStatus($status);
26    }
27
28    private function respond(Response $response, array $result): Response
29    {
30        $response->getBody()->write($result['output']);
31        return $response->withHeader('Content-Type', $result['contentType']);
32    }
33
34    /**
35     * POST /place/create - create a new place (central PLACE row with status PA + place database).
36     */
37    public function create(Request $request, Response $response): Response
38    {
39        $body = $request->getBody()->getContents();
40        $data = $body !== '' ? (json_decode($body, true) ?? []) : [];
41        $result = $this->placeService->create($request->getQueryParams(), $data);
42        return $this->json($response, $result);
43    }
44
45    /** GET /place/multiplepos - enable/disable multiple POS for place */
46    public function multiplepos(Request $request, Response $response): Response
47    {
48        return $this->respond($response, $this->placeService->multiplepos($request->getQueryParams()));
49    }
50
51    /** POST /place/sessionusers - get usernames for session list */
52    public function sessionusers(Request $request, Response $response): Response
53    {
54        return $this->respond($response, $this->placeService->sessionusers(
55            (string) $request->getBody(),
56            $request->getQueryParams()
57        ));
58    }
59
60    /** GET /place/exndnfo - license extended period info */
61    public function exndnfo(Request $request, Response $response): Response
62    {
63        return $this->respond($response, $this->placeService->exndnfo($request->getQueryParams()));
64    }
65
66    /** GET /place/invoicelst - invoice list for date range */
67    public function invoicelst(Request $request, Response $response): Response
68    {
69        return $this->respond($response, $this->placeService->invoicelst($request->getQueryParams()));
70    }
71
72    /** GET /place/ticketlst - ticket list for date range */
73    public function ticketlst(Request $request, Response $response): Response
74    {
75        return $this->respond($response, $this->placeService->ticketlst($request->getQueryParams()));
76    }
77
78    /** POST /place/ticketnfo - load ticket details by objids */
79    public function ticketnfo(Request $request, Response $response): Response
80    {
81        return $this->respond($response, $this->placeService->ticketnfo(
82            (string) $request->getBody(),
83            $request->getQueryParams()
84        ));
85    }
86
87    /** GET /place/productlst - product list for date range */
88    public function productlst(Request $request, Response $response): Response
89    {
90        return $this->respond($response, $this->placeService->productlst($request->getQueryParams()));
91    }
92
93    /** POST /place/productnfo - load product details by objids */
94    public function productnfo(Request $request, Response $response): Response
95    {
96        return $this->respond($response, $this->placeService->productnfo(
97            (string) $request->getBody(),
98            $request->getQueryParams()
99        ));
100    }
101
102    /** GET /place/qrcodes - generate QR sticker PDF */
103    public function qrcodes(Request $request, Response $response): Response
104    {
105        return $this->respond($response, $this->placeService->qrcodes($request->getQueryParams()));
106    }
107
108    /** GET /place/ticketlog - ticket activity log */
109    public function ticketlog(Request $request, Response $response): Response
110    {
111        return $this->respond($response, $this->placeService->ticketlog($request->getQueryParams()));
112    }
113}