Lines 100.00% 32 / 32
Functions and Methods 100.00% 2 / 2
Classes and Traits 100.00% 1 / 1
Name Lines Functions and Methods CRAP Classes and Traits
Counter 100.00% 32 / 32 100.00% 2 / 2 6 100.00% 1 / 1
 readResponse 100.00% 26 / 26 100.00% 1 / 1 3
 getSelectedDate 100.00% 6 / 6 100.00% 1 / 1 3
1<?php
2
3/**
4 * @package Zmsadmin
5 * @copyright BerlinOnline Stadtportal GmbH & Co. KG
6 **/
7
8namespace BO\Zmsadmin;
9
10class Counter extends BaseController
11{
12    /**
13     * @SuppressWarnings(Param)
14     * @return \Psr\Http\Message\ResponseInterface
15     */
16    #[\Override]
17    public function readResponse(
18        \Psr\Http\Message\RequestInterface $request,
19        \Psr\Http\Message\ResponseInterface $response,
20        array $args
21    ): \Psr\Http\Message\ResponseInterface {
22        $workstation = \App::$http->readGetResult('/workstation/', ['resolveReferences' => 2])->getEntity();
23        $validator = $request->getAttribute('validator');
24        $selectedTime = $validator->getParameter('time')->isString()->getValue();
25        $selectedTime = ($selectedTime) ? $selectedTime : null;
26        $selectedProcess = $validator->getParameter('selectedprocess')->isNumber()->getValue();
27        $selectedScope = $validator->getParameter('selectedscope')->isNumber()->getValue();
28
29        if (!$workstation->hasId()) {
30            return \BO\Slim\Render::redirect(
31                'index',
32                array(
33                    'error' => 'login_failed'
34                )
35            );
36        }
37
38        $workstation->getUseraccount()->testPermissions(['counter']);
39
40        return \BO\Slim\Render::withHtml(
41            $response,
42            'page/counter.twig',
43            array(
44                'title' => 'Tresen',
45                'menuActive' => 'counter',
46                'selectedDate' => $this->getSelectedDate($validator),
47                'selectedTime' => $selectedTime,
48                'selectedProcess' => $selectedProcess,
49                'selectedScope' => $selectedScope,
50                'workstation' => $workstation->getArrayCopy()            )
51        );
52    }
53
54    protected function getSelectedDate($validator)
55    {
56        $selectedDate = $validator->getParameter('date')->isString()->getValue();
57        $selectedDateTime = $selectedDate ?
58            (new \DateTimeImmutable($selectedDate))->setTime(\App::$now->format('H'), \App::$now->format('i')) :
59            \App::$now;
60        $selectedDate = ($selectedDateTime < \App::$now) ? \App::$now : $selectedDateTime;
61        return $selectedDate->format('Y-m-d');
62    }
63}