Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
97.22% covered (success)
97.22%
35 / 36
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
OverallCalendarClosureLoadData
97.22% covered (success)
97.22%
35 / 36
0.00% covered (danger)
0.00%
0 / 1
10
0.00% covered (danger)
0.00%
0 / 1
 readResponse
97.22% covered (success)
97.22%
35 / 36
0.00% covered (danger)
0.00%
0 / 1
10
1<?php
2
3namespace BO\Zmsadmin;
4
5use Psr\Http\Message\RequestInterface;
6use Psr\Http\Message\ResponseInterface;
7
8class OverallCalendarClosureLoadData extends BaseController
9{
10    #[\Override]
11    public function readResponse(
12        RequestInterface $request,
13        ResponseInterface $response,
14        array $args
15    ) {
16        $scopeIds  = $_GET['scopeIds']  ?? null;
17        $dateFrom  = $_GET['dateFrom']  ?? null;
18        $dateUntil = $_GET['dateUntil'] ?? null;
19
20        if ($scopeIds === null && $dateFrom === null && $dateUntil === null) {
21            $response->getBody()->write(json_encode([]));
22            return $response->withHeader('Content-Type', 'application/json');
23        }
24
25        if (!$scopeIds || !$dateFrom || !$dateUntil) {
26            $error = [
27                'error'   => true,
28                'message' => 'Missing required parameters: scopeIds, dateFrom, dateUntil',
29            ];
30            $response->getBody()->write(json_encode($error));
31            return $response
32                ->withStatus(400)
33                ->withHeader('Content-Type', 'application/json');
34        }
35
36        $params = [
37            'scopeIds'  => $scopeIds,
38            'dateFrom'  => $dateFrom,
39            'dateUntil' => $dateUntil,
40        ];
41
42        $apiResult = \App::$http->readGetResult('/closure/', $params);
43        $apiResponse   = $apiResult->getResponse();
44
45        $lastMod = $apiResponse->getHeaderLine('Last-Modified');
46        if ($lastMod !== '') {
47            $response = $response->withHeader('Last-Modified', $lastMod);
48        }
49
50        $contentType = $apiResponse->getHeaderLine('Content-Type');
51        $response = $response->withHeader(
52            'Content-Type',
53            $contentType !== '' ? $contentType : 'application/json'
54        );
55
56        $bodyStream = $apiResponse->getBody();
57        if ($bodyStream->isSeekable()) {
58            $bodyStream->rewind();
59        }
60        $rawBody = (string) $bodyStream;
61
62        $response->getBody()->write($rawBody);
63
64        return $response->withStatus($apiResponse->getStatusCode());
65    }
66}