Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
4.00% covered (danger)
4.00%
1 / 25
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
ScopeAvailabilityHistory
4.00% covered (danger)
4.00%
1 / 25
50.00% covered (danger)
50.00%
1 / 2
27.12
0.00% covered (danger)
0.00%
0 / 1
 readResponse
0.00% covered (danger)
0.00%
0 / 24
0.00% covered (danger)
0.00%
0 / 1
12
 canViewAvailabilityHistory
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3/**
4 * @package Zmsadmin
5 * @copyright BerlinOnline Stadtportal GmbH & Co. KG
6 **/
7
8namespace BO\Zmsadmin;
9
10use BO\Mellon\Validator;
11use BO\Slim\Render;
12use BO\Zmsentities\Exception\UserAccountMissingRights;
13use BO\Zmsentities\Useraccount;
14use Psr\Http\Message\RequestInterface;
15use Psr\Http\Message\ResponseInterface;
16
17class ScopeAvailabilityHistory extends BaseController
18{
19    /**
20     * @SuppressWarnings(Param)
21     */
22    #[\Override]
23    public function readResponse(
24        RequestInterface $request,
25        ResponseInterface $response,
26        array $args
27    ): ResponseInterface {
28        $workstation = \App::$http->readGetResult('/workstation/', ['resolveReferences' => 1])->getEntity();
29        $useraccount = $workstation->getUseraccount();
30        if (!static::canViewAvailabilityHistory($useraccount)) {
31            throw new UserAccountMissingRights();
32        }
33
34        $scopeId = Validator::value($args['id'])->isNumber()->getValue();
35        $from = Validator::param('from')->isString()->getValue();
36        $to = Validator::param('to')->isString()->getValue();
37        $availabilityId = Validator::param('availabilityId')->isNumber()->getValue();
38        $action = Validator::param('action')->isString()->getValue();
39        $params = array_filter([
40            'from' => $from,
41            'to' => $to,
42            'availabilityId' => $availabilityId,
43            'action' => $action,
44        ], static function ($value) {
45            return $value !== null && $value !== '';
46        });
47
48        $result = \App::$http->readGetResult(
49            '/scope/' . $scopeId . '/availability/history/',
50            $params
51        );
52
53        return Render::withJson($response, [
54            'data' => $result->getData() ?? [],
55        ]);
56    }
57
58    public static function canViewAvailabilityHistory(Useraccount $useraccount): bool
59    {
60        return $useraccount->isSuperUser() || $useraccount->hasRole('system_admin');
61    }
62}