Skip to content

Commit 2b795a2

Browse files
committed
feat: add to summit attendee serializer notes collection
Change-Id: I08aa734581ec852171a8d4f9a7b811c0fa535c1a
1 parent 0545d5d commit 2b795a2

File tree

5 files changed

+59
-9
lines changed

5 files changed

+59
-9
lines changed

Libs/ModelSerializers/AbstractSerializer.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,7 @@ public function serialize($expand = null, array $fields = [], array $relations =
277277
$values = [];
278278
$method_prefix = ['get', 'is'];
279279
if (!count($fields)) $fields = $this->getAllowedFields();
280+
if (!count($relations)) $relations = $this->getAllowedRelations();
280281
$mappings = $this->getAttributeMappings();
281282
if (count($mappings)) {
282283
$new_values = [];
@@ -407,9 +408,10 @@ protected function _expand(array $values, ?string $expand, array $fields = [], a
407408
$has = $serializerSpec['has'] ?? null;
408409
$test_rule = $serializerSpec['test_rule'] ?? null;
409410
$should_skip_rule = $serializerSpec['should_skip_rule'] ?? null;
411+
$should_verify_relation = $serializerSpec['should_verify_relation'] ?? false;
410412
$serializer_type = $serializerSpec['serializer_type'] ?? SerializerRegistry::SerializerType_Public;
411413
$serializer = new $serializerClass($original_attribute, $attribute, $getter, $has, $serializer_type, $test_rule, $should_skip_rule);
412-
$values = $serializer->serialize($this->object, $values, $expand, $fields, $relations, $params);
414+
$values = $serializer->serialize($this->object, $values, $expand, $fields, $relations, $params, $should_verify_relation);
413415
}
414416
}
415417

Libs/ModelSerializers/Many2OneExpandSerializer.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,32 @@
1919
*/
2020
class Many2OneExpandSerializer extends One2ManyExpandSerializer
2121
{
22+
2223
/**
23-
* @param mixed $entity
24+
* @param $entity
2425
* @param array $values
2526
* @param string $expand
2627
* @param array $fields
2728
* @param array $relations
2829
* @param array $params
30+
* @param bool $should_verify_relation
2931
* @return array
3032
*/
31-
public function serialize($entity, array $values, string $expand, array $fields = [], array $relations = [], array $params = []): array
32-
{
33+
public function serialize
34+
(
35+
$entity,
36+
array $values,
37+
string $expand,
38+
array $fields = [],
39+
array $relations = [],
40+
array $params = [],
41+
bool $should_verify_relation = false
42+
): array
43+
{
3344
$testRuleRes = is_null($this->test_rule) ? true : call_user_func($this->test_rule, $entity);
3445
if(!$testRuleRes) return $values;
3546
$values = $this->unsetOriginalAttribute($values);
47+
if($should_verify_relation && !in_array($this->attribute, $relations)) return $values;
3648
$res = [];
3749
foreach ($entity->{$this->getter}() as $item){
3850
$shouldSkip = is_null($this->should_skip_rule) ? false : call_user_func($this->should_skip_rule, $item, $params);

Libs/ModelSerializers/One2ManyExpandSerializer.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,15 +109,25 @@ protected function unsetOriginalAttribute(array $values)
109109
}
110110

111111
/**
112-
* @param mixed $entity
112+
* @param $entity
113113
* @param array $values
114114
* @param string $expand
115115
* @param array $fields
116116
* @param array $relations
117117
* @param array $params
118+
* @param bool $should_verify_relation
118119
* @return array
119120
*/
120-
public function serialize($entity, array $values, string $expand, array $fields = [], array $relations = [], array $params = []): array
121+
public function serialize
122+
(
123+
$entity,
124+
array $values,
125+
string $expand,
126+
array $fields = [],
127+
array $relations = [],
128+
array $params = [],
129+
bool $should_verify_relation = false
130+
): array
121131
{
122132
Log::debug
123133
(

app/ModelSerializers/IExpandSerializer.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,23 @@
1919
interface IExpandSerializer
2020
{
2121
/**
22-
* @param mixed $entity
22+
* @param $entity
2323
* @param array $values
2424
* @param string $expand
25+
* @param array $fields
26+
* @param array $relations
27+
* @param array $params
28+
* @param bool $should_verify_relation
2529
* @return array
2630
*/
27-
public function serialize($entity, array $values, string $expand): array;
31+
public function serialize
32+
(
33+
$entity,
34+
array $values,
35+
string $expand,
36+
array $fields = [],
37+
array $relations = [],
38+
array $params = [],
39+
bool $should_verify_relation = false
40+
): array;
2841
}

app/ModelSerializers/Summit/Registration/SummitAttendeeAdminSerializer.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
<?php namespace ModelSerializers;
2+
use Libs\ModelSerializers\Many2OneExpandSerializer;
3+
24
/**
35
* Copyright 2016 OpenStack Foundation
46
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,7 +20,18 @@
1820
class SummitAttendeeAdminSerializer extends SummitAttendeeSerializer
1921
{
2022
protected static $array_mappings = [
21-
'AdminNotes' => 'admin_notes:json_string',
2223
'VirtualCheckedIn' => 'has_virtual_check_in:json_boolean',
2324
];
25+
26+
protected static $allowed_relations = [
27+
'notes',
28+
];
29+
30+
protected static $expand_mappings = [
31+
'notes' => [
32+
'type' => Many2OneExpandSerializer::class,
33+
'getter' => 'getNotes',
34+
'should_verify_relation' => true
35+
],
36+
];
2437
}

0 commit comments

Comments
 (0)