fix: [API] cleaned up the individual API

cli-modification-summary
iglocska 2022-11-04 09:33:39 +01:00
parent 7504bfab10
commit 540fd63423
No known key found for this signature in database
GPG Key ID: BEA224F1FEF113AC
3 changed files with 54 additions and 8 deletions

View File

@ -73,6 +73,9 @@ class CRUDComponent extends Component
$query->order($options['order']);
}
if ($this->Controller->ParamHandler->isRest()) {
if ($this->metaFieldsSupported()) {
$query = $this->includeRequestedMetaFields($query);
}
$data = $query->all();
if (isset($options['hidden'])) {
$data->each(function($value, $key) use ($options) {
@ -98,6 +101,12 @@ class CRUDComponent extends Component
});
}
}
if ($this->metaFieldsSupported()) {
$metaTemplates = $this->getMetaTemplates()->toArray();
$data = $data->map(function($value, $key) use ($metaTemplates) {
return $this->attachMetaTemplatesIfNeeded($value, $metaTemplates);
});
}
$this->Controller->restResponsePayload = $this->RestResponse->viewData($data, 'json');
} else {
if ($this->metaFieldsSupported()) {
@ -663,7 +672,9 @@ class CRUDComponent extends Component
if (!empty($newestTemplate) && !empty($metaTemplates[$i])) {
$metaTemplates[$i]['hasNewerVersion'] = $newestTemplate;
}
$metaTemplates[$metaTemplate->id]['meta_template_fields'] = $metaTemplates[$metaTemplate->id]['meta_template_fields'];
}
$metaTemplates = $metaTemplates;
$data['MetaTemplates'] = $metaTemplates;
return $data;
}

View File

@ -61,7 +61,11 @@ class AppModel extends Entity
public function rearrangeTags(array $tags): array
{
foreach ($tags as &$tag) {
unset($tag['_joinData']);
$tag = [
'id' => $tag['id'],
'name' => $tag['name'],
'colour' => $tag['colour']
];
}
return $tags;
}
@ -70,11 +74,26 @@ class AppModel extends Entity
{
$rearrangedAlignments = [];
$validAlignmentTypes = ['individual', 'organisation'];
$alignmentDataToKeep = [
'individual' => [
'id',
'email'
],
'organisation' => [
'id',
'uuid',
'name'
]
];
foreach ($alignments as $alignment) {
foreach ($validAlignmentTypes as $type) {
foreach (array_keys($alignmentDataToKeep) as $type) {
if (isset($alignment[$type])) {
$alignment[$type]['type'] = $alignment['type'];
$rearrangedAlignments[$type][] = $alignment[$type];
$temp = [];
foreach ($alignmentDataToKeep[$type] as $field) {
$temp[$field] = $alignment[$type][$field];
}
$rearrangedAlignments[$type][] = $temp;
}
}
}

View File

@ -33,12 +33,28 @@ class Individual extends AppModel
{
$emails = [];
if (!empty($this->meta_fields)) {
foreach ($this->meta_fields as $metaField) {
if (str_contains($metaField->field, 'email')) {
$emails[] = $metaField;
}
}
foreach ($this->meta_fields as $metaField) {
if (!empty($metaField->field) && str_contains($metaField->field, 'email')) {
$emails[] = $metaField;
}
}
}
return $emails;
}
public function rearrangeForAPI(): void
{
if (!empty($this->tags)) {
$this->tags = $this->rearrangeTags($this->tags);
}
if (!empty($this->alignments)) {
$this->alignments = $this->rearrangeAlignments($this->alignments);
}
if (!empty($this->meta_fields)) {
$this->rearrangeMetaFields();
}
if (!empty($this->MetaTemplates)) {
unset($this->MetaTemplates);
}
}
}