Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
85.71% covered (warning)
85.71%
18 / 21
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
UseraccountByDepartmentList
85.71% covered (warning)
85.71%
18 / 21
0.00% covered (danger)
0.00%
0 / 1
7.14
0.00% covered (danger)
0.00%
0 / 1
 readResponse
85.71% covered (warning)
85.71%
18 / 21
0.00% covered (danger)
0.00%
0 / 1
7.14
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\Useraccount as Query;
13use BO\Zmsentities\Collection\UseraccountList as Collection;
14use BO\Zmsentities\Useraccount;
15use Psr\Http\Message\RequestInterface;
16use Psr\Http\Message\ResponseInterface;
17
18class UseraccountByDepartmentList extends BaseController
19{
20    public function readResponse(
21        RequestInterface $request,
22        ResponseInterface $response,
23        array $args
24    ): ResponseInterface {
25        $workstation = (new Helper\User($request, 1))->checkRights('useraccount');
26        $resolveReferences = Validator::param('resolveReferences')->isNumber()->setDefault(1)->getValue();
27
28        $departments = Helper\User::checkDepartments(explode(',', $args['ids']));
29
30        /** @var Useraccount $useraccount */
31        $useraccountList = (new Query())
32            ->readCollectionByDepartmentIds(explode(',', $args['ids']), $resolveReferences);
33        $useraccountList = $useraccountList->withAccessByWorkstation($workstation);
34        foreach ($useraccountList as $userAccount) {
35            foreach ($departments as $department) {
36                if ($resolveReferences < 1 && !$userAccount->getDepartmentByIds($department->getId())) {
37                    $userAccount->getDepartmentList()->addEntity($department);
38                }
39            }
40        }
41
42        $validUserAccounts = [];
43        foreach ($useraccountList as $useraccount) {
44            try {
45                Helper\User::testWorkstationAccessRights($useraccount);
46                $validUserAccounts[] = $useraccount->withLessData();
47            } catch (\BO\Zmsentities\Exception\UserAccountAccessRightsFailed $e) {
48                continue;
49            }
50        }
51        $useraccountList = $validUserAccounts;
52
53        $message = Response\Message::create($request);
54        $message->data = $useraccountList;
55
56        $response = Render::withLastModified($response, time(), '0');
57        return Render::withJson($response, $message, 200);
58    }
59}