Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
78.95% covered (warning)
78.95%
30 / 38
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
WorkstationProcessCalled
78.95% covered (warning)
78.95%
30 / 38
0.00% covered (danger)
0.00%
0 / 1
10.93
0.00% covered (danger)
0.00%
0 / 1
 readResponse
78.95% covered (warning)
78.95%
30 / 38
0.00% covered (danger)
0.00%
0 / 1
10.93
1<?php
2
3/**
4 * @package Zmsadmin
5 * @copyright BerlinOnline Stadtportal GmbH & Co. KG
6 **/
7
8namespace BO\Zmsadmin;
9
10use BO\Mellon\Validator;
11
12class WorkstationProcessCalled extends BaseController
13{
14    /**
15     * @return \Psr\Http\Message\ResponseInterface
16     */
17    #[\Override]
18    public function readResponse(
19        \Psr\Http\Message\RequestInterface $request,
20        \Psr\Http\Message\ResponseInterface $response,
21        array $args
22    ): \Psr\Http\Message\ResponseInterface {
23        $validator = $request->getAttribute('validator');
24        $workstation = \App::$http->readGetResult('/workstation/', ['resolveReferences' => 2])->getEntity();
25        $processId = Validator::value($args['id'])->isNumber()->getValue();
26        if (! $workstation->process->hasId() && ! $workstation->process->queue->callTime) {
27            $process = \App::$http->readGetResult('/process/' . $args['id'] . '/')->getEntity();
28            try {
29                $workstation = \App::$http->readPostResult('/workstation/process/called/', $process, [
30                    'allowClusterWideCall' => \App::$allowClusterWideCall
31                ])->getEntity();
32            } catch (\BO\Zmsclient\Exception $e) {
33                if ($e->template === 'BO\\Zmsapi\\Exception\\Process\\ProcessAlreadyCalled') {
34                    return \BO\Slim\Render::redirect(
35                        'workstationProcessCalled',
36                        ['id' => $processId],
37                        ['error' => 'has_called_process']
38                    );
39                }
40
41                throw $e;
42            }
43        }
44
45        $excludedIds = $validator->getParameter('exclude')->isString()->setDefault('')->getValue();
46        if ($excludedIds) {
47            $exclude = explode(',', $excludedIds);
48        }
49        $exclude[] = $workstation->process->toQueue(\App::$now)->number;
50
51        $error = $validator->getParameter('error')->isString()->getValue();
52        if (isset($processId) && $workstation->process->getId() != $processId) {
53            $error = 'has_called_process';
54        }
55
56        if ($workstation->process->getStatus() == 'processing') {
57            return \BO\Slim\Render::redirect('workstationProcessProcessing', [], ['error' => $error]);
58        }
59
60        // Check if $process is set or assign a default value (like null)
61        $process = isset($process) ? $process : null;
62
63        return \BO\Slim\Render::withHtml(
64            $response,
65            'block/process/called.twig',
66            array(
67                'title' => 'Sachbearbeiter',
68                'workstation' => $workstation,
69                'menuActive' => 'workstation',
70                'process' => $process,
71                'exclude' => join(',', $exclude),
72                'error' => $error
73            )
74        );
75    }
76}