Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
38 / 38
100.00% covered (success)
100.00%
7 / 7
CRAP
100.00% covered (success)
100.00%
1 / 1
EventLog
100.00% covered (success)
100.00%
38 / 38
100.00% covered (success)
100.00%
7 / 7
9
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
2
 getEntityMapping
100.00% covered (success)
100.00%
11 / 11
100.00% covered (success)
100.00%
1 / 1
1
 reverseEntityMapping
100.00% covered (success)
100.00%
13 / 13
100.00% covered (success)
100.00%
1 / 1
2
 postProcess
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 addNameComparison
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 addReferenceComparison
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 addExpirationCondition
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3/**
4 * @copyright BerlinOnline Stadtportal GmbH & Co. KG
5 **/
6
7namespace BO\Zmsdb\Query;
8
9use BO\Zmsentities\EventLog as EventLogEntity;
10
11class EventLog extends Base
12{
13    public const TABLE = 'eventlog';
14    public const ALIAS = 'eventLog';
15
16    protected $resolveLevel = 0;
17
18    public function __construct($queryType, $prefix = '', $name = false, $resolveLevel = null)
19    {
20        parent::__construct($queryType, $prefix, $name, $resolveLevel);
21
22        if ($queryType === self::SELECT) {
23            $this->query->orderBy(self::ALIAS . '.creationDateTime', 'ASC');
24        }
25    }
26    public function getEntityMapping(): array
27    {
28        return [
29            'id'                  => self::ALIAS . '.eventId',
30            'name'                => self::ALIAS . '.eventName',
31            'origin'              => self::ALIAS . '.origin',
32            'referenceType'       => self::ALIAS . '.referenceType',
33            'reference'           => self::ALIAS . '.reference',
34            'sessionid'           => self::ALIAS . '.sessionid',
35            'context'             => self::ALIAS . '.contextjson',
36            'creationDateTime'    => self::ALIAS . '.creationDateTime',
37            'expirationDateTime'  => self::ALIAS . '.expirationDateTime',
38        ];
39    }
40
41    public function reverseEntityMapping(EventLogEntity $entity): array
42    {
43        $data = [
44            'eventName' => $entity->name,
45            'origin' => $entity->origin,
46            'referenceType' => $entity->referenceType,
47            'reference' => $entity->reference,
48            'sessionid' => $entity->sessionid,
49            'contextjson' => json_encode($entity->context, JSON_FORCE_OBJECT),
50            'creationDateTime' => $entity->creationDateTime->format('Y-m-d H:i:s'),
51            'expirationDateTime' => $entity->expirationDateTime->format('Y-m-d H:i:s'),
52        ];
53
54        return array_filter($data, function ($value) {
55            return ($value !== null && $value !== false);
56        });
57    }
58
59    /**
60     * @param array $data
61     * @return array
62     */
63    #[\Override]
64    public function postProcess($data): array
65    {
66        $data['id'] = (int) $data['id'];
67        $data['context'] = json_decode($data['context'], true);
68        $data['creationDateTime'] = new \DateTime($data['creationDateTime']);
69        $data['expirationDateTime'] = new \DateTime($data['expirationDateTime']);
70        return $data;
71    }
72
73    public function addNameComparison(string $name): EventLog
74    {
75        $this->query->where(self::ALIAS . '.eventName', '=', $name);
76
77        return $this;
78    }
79
80    public function addReferenceComparison(string $reference): EventLog
81    {
82        $this->query->where(self::ALIAS . '.reference', '=', $reference);
83
84        return $this;
85    }
86
87    public function addExpirationCondition(): EventLog
88    {
89        $this->query->where(self::ALIAS . '.creationDateTime', '<', (new \DateTime())->format('Y-m-d H:i:s'));
90
91        return $this;
92    }
93}