| Code Coverage | ||||||||||
| Lines | Functions and Methods | Classes and Traits | ||||||||
| Total |  | 100.00% | 38 / 38 |  | 100.00% | 7 / 7 | CRAP |  | 100.00% | 1 / 1 | 
| EventLog |  | 100.00% | 38 / 38 |  | 100.00% | 7 / 7 | 9 |  | 100.00% | 1 / 1 | 
| __construct |  | 100.00% | 3 / 3 |  | 100.00% | 1 / 1 | 2 | |||
| getEntityMapping |  | 100.00% | 11 / 11 |  | 100.00% | 1 / 1 | 1 | |||
| reverseEntityMapping |  | 100.00% | 13 / 13 |  | 100.00% | 1 / 1 | 2 | |||
| postProcess |  | 100.00% | 5 / 5 |  | 100.00% | 1 / 1 | 1 | |||
| addNameComparison |  | 100.00% | 2 / 2 |  | 100.00% | 1 / 1 | 1 | |||
| addReferenceComparison |  | 100.00% | 2 / 2 |  | 100.00% | 1 / 1 | 1 | |||
| addExpirationCondition |  | 100.00% | 2 / 2 |  | 100.00% | 1 / 1 | 1 | |||
| 1 | <?php | 
| 2 | |
| 3 | /** | 
| 4 | * @copyright BerlinOnline Stadtportal GmbH & Co. KG | 
| 5 | **/ | 
| 6 | |
| 7 | namespace BO\Zmsdb\Query; | 
| 8 | |
| 9 | use BO\Zmsentities\EventLog as EventLogEntity; | 
| 10 | |
| 11 | class 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 | } |