Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
81.25% covered (warning)
81.25%
26 / 32
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
ProcessListByScopeAndDate
81.25% covered (warning)
81.25%
26 / 32
0.00% covered (danger)
0.00%
0 / 1
6.24
0.00% covered (danger)
0.00%
0 / 1
 readResponse
81.25% covered (warning)
81.25%
26 / 32
0.00% covered (danger)
0.00%
0 / 1
6.24
1<?php
2
3/**
4 * @package ZMS API
5 * @copyright BerlinOnline Stadtportal GmbH & Co. KG
6 **/
7
8namespace BO\Zmsapi;
9
10use BO\Slim\Render;
11use BO\Mellon\Validator;
12use BO\Zmsdb\Scope as Query;
13use BO\Zmsdb\ProcessStatusArchived;
14use BO\Zmsentities\Collection\QueueList;
15
16class ProcessListByScopeAndDate extends BaseController
17{
18    /**
19     * @SuppressWarnings(Param)
20     * @return String
21     */
22    public function readResponse(
23        \Psr\Http\Message\RequestInterface $request,
24        \Psr\Http\Message\ResponseInterface $response,
25        array $args
26    ) {
27        (new Helper\User($request))->checkRights('basic');
28        $showWeek = Validator::param('showWeek')->isNumber()->setDefault(0)->getValue();
29        $dateTime = new \BO\Zmsentities\Helper\DateTime($args['date']);
30        $dateTime = $dateTime->modify(\App::$now->format('H:i'));
31        $dates = [$dateTime];
32
33        if ($showWeek) {
34            $dates = [];
35            $startDate = clone $dateTime->modify('Monday this week');
36            $endDate = clone $dateTime->modify('Sunday this week');
37
38            while ($startDate <= $endDate) {
39                $dates[] = $startDate;
40                $startDate = $startDate->modify('+1 day');
41            }
42        }
43
44        $query = new Query();
45        $scope = $query->readWithWorkstationCount($args['id'], \App::$now, 0, ['none']);
46        if (! $scope || ! $scope->getId()) {
47            throw new Exception\Scope\ScopeNotFound();
48        }
49
50        $queueList = new QueueList();
51        foreach ($dates as $date) {
52            $queueList->addList($query->readQueueListWithWaitingTime(
53                $scope,
54                $date,
55                2,
56                ['availability']
57            ));
58        }
59
60        $archivedProcesses =
61            (new ProcessStatusArchived())->readListByScopesAndDates([$scope->getId()], $dates);
62
63        $message = Response\Message::create($request);
64        $message->data = $queueList->toProcessList()->withResolveLevel(2);
65        $message->data->addData($archivedProcesses);
66
67        $response = Render::withLastModified($response, time(), '0');
68        $response = Render::withJson($response, $message, 200);
69        return $response;
70    }
71}