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    public function postProcess($data): array
64    {
65        $data['id'] = (int) $data['id'];
66        $data['context'] = json_decode($data['context'], true);
67        $data['creationDateTime'] = new \DateTime($data['creationDateTime']);
68        $data['expirationDateTime'] = new \DateTime($data['expirationDateTime']);
69        return $data;
70    }
71
72    public function addNameComparison(string $name): EventLog
73    {
74        $this->query->where(self::ALIAS . '.eventName', '=', $name);
75
76        return $this;
77    }
78
79    public function addReferenceComparison(string $reference): EventLog
80    {
81        $this->query->where(self::ALIAS . '.reference', '=', $reference);
82
83        return $this;
84    }
85
86    public function addExpirationCondition(): EventLog
87    {
88        $this->query->where(self::ALIAS . '.creationDateTime', '<', (new \DateTime())->format('Y-m-d H:i:s'));
89
90        return $this;
91    }
92}