Lines 13.63% 3 / 22
Methods 50.00% 1 / 2
Classes 0.00% 0 / 1
Name Lines Methods CRAP
 readResponse 0.00% 0 / 19 0.00% 0 / 1 30
 [BO\Zmsbackend\Api\BaseController] __invoke 100.00% 3 / 3 100.00% 1 / 1 1
22class AvailabilityClosureToggle extends \BO\Zmsbackend\Api\BaseController
23{
24    /**
25     * @SuppressWarnings(Param)
26     * @return ResponseInterface
27     */
28    #[\Override]
29    public function readResponse(
30        RequestInterface $request,
31        ResponseInterface $response,
32        array $args
33    ): ResponseInterface {
34        (new \BO\Zmsbackend\Helper\User($request))->checkPermissions('availability');
35        $input = Validator::input()->isJson()->assertValid()->getValue();
36        if (! $input || count($input) === 0) {
37            throw new BadRequestException();
38        }
39
40        $scopeId = $args['id'];
41        $date = $args['date'];
42
43        try {
44            $closure = (new \BO\Zmsbackend\Availability\Service\Closure())->readByScopeIdAndDate($scopeId, new DateTime($date));
45        } catch (\Exception $e) {
46            $closure = new ClosureEntity();
47        }
48
49        if (empty($closure->getId())) {
50            $closure = (new \BO\Zmsbackend\Availability\Service\Closure())->createOne($scopeId, new DateTime($date));
51            $closure->existing = true;
52        } else {
53            (new \BO\Zmsbackend\Availability\Service\Closure())->deleteEntity($closure);
54            $closure->existing = false;
55        }
56
57        $message = \BO\Zmsbackend\Api\Response\Message::create($request);
58        $message->data = $closure;
59
60        $response = Render::withLastModified($response, time(), '0');
61        $response = Render::withJson($response, $message->setUpdatedMetaData(), $message->getStatuscode());
62        return $response;
63    }
64}

Inherited from BO\Zmsbackend\Api\BaseController

20    public function __invoke(RequestInterface $request, ResponseInterface $response, array $args)
21    {
22        $request = $this->initRequest($request);
23        $noCacheResponse = \BO\Slim\Render::withLastModified($response, time(), '0');
24        return $this->readResponse($request, $noCacheResponse, $args);
25    }