Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
21 / 21
100.00% covered (success)
100.00%
6 / 6
CRAP
100.00% covered (success)
100.00%
1 / 1
Calldisplay
100.00% covered (success)
100.00%
21 / 21
100.00% covered (success)
100.00%
6 / 6
13
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getRequestedQueueStatus
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
4
 getEntity
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
4
 getSingleScope
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
2
 createInstance
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getCollections
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3/**
4 *
5 * @package Zmscalldisplay
6 * @copyright BerlinOnline Stadtportal GmbH & Co. KG
7 *
8 */
9
10namespace BO\Zmscalldisplay\Helper;
11
12use BO\Mellon\Validator;
13use BO\Slim\Request;
14use BO\Zmsentities\Calldisplay as Entity;
15use Psr\Http\Message\RequestInterface;
16
17class Calldisplay
18{
19    protected $entity;
20    protected $isEntityResolved = false;
21
22    const DEFAULT_STATUS = ['called', 'pickup'];
23    const WAITING_STATUS = ['confirmed', 'queued', 'called', 'pending'];
24
25
26    /**
27     * @param Request|RequestInterface $request
28     */
29    public function __construct($request)
30    {
31        $this->entity = static::createInstance($request);
32    }
33
34    /**
35     * Get status for queue
36     *
37     * @param Request|RequestInterface $request
38     * @return array
39     */
40    public static function getRequestedQueueStatus($request)
41    {
42        /** @var Validator $validator */
43        $validator = $request->getAttribute('validator');
44        $queue = $validator->getParameter('queue')->isArray()->getValue();
45        $status = (is_array($queue) && isset($queue['status'])) ? $queue['status'] : null;
46        return is_string($status) ? explode(',', $status) : static::DEFAULT_STATUS;
47    }
48
49    /**
50     * @param bool $resolveEntity
51     * @return Entity
52     */
53    public function getEntity($resolveEntity = true)
54    {
55        if (!$this->isEntityResolved && $resolveEntity) {
56            $callDisplay = \App::$http->readPostResult('/calldisplay/', $this->entity);
57            $this->entity = $callDisplay ? $callDisplay->getEntity() : new \BO\Zmsentities\Calldisplay();
58            $this->isEntityResolved = true;
59        }
60
61        return $this->entity;
62    }
63
64    public function getSingleScope()
65    {
66        $scope = null;
67        if (1 == $this->getEntity(false)->getScopeList()->count()) {
68            $scopeId = $this->getEntity(false)->getScopeList()->getFirst()->getId();
69            $scope = \App::$http
70                ->readGetResult('/scope/' . $scopeId . '/', ['keepLessData' => ['status']])
71                ->getEntity();
72        }
73        return $scope;
74    }
75
76    /**
77     * @param Request $request
78     * @return Entity
79     */
80    protected static function createInstance($request)
81    {
82        $calldisplay = new Entity();
83
84        return $calldisplay->withResolvedCollections(static::getCollections($request));
85    }
86
87    /**
88     * @param Request $request
89     * @return mixed
90     */
91    protected static function getCollections($request)
92    {
93        $validator = $request->getAttribute('validator');
94
95        return $validator->getParameter('collections')->isArray()->getValue();
96    }
97}