From db446d1866ad2fe4c071857c3f1c37d67a70b813 Mon Sep 17 00:00:00 2001
From: Alexander Purr <purr@ub.uni-leipzig.de>
Date: Tue, 19 Nov 2019 10:56:43 +0100
Subject: [PATCH] refs #16458 [fid] order hydrator adds more record parameters
 to DTO order * helper function object-to-array * use temporarily title as
 order label * bugfix access pages key

---
 module/fid/src/Hydrator/OrderHydrator.php | 27 +++++++++++++++++++----
 1 file changed, 23 insertions(+), 4 deletions(-)

diff --git a/module/fid/src/Hydrator/OrderHydrator.php b/module/fid/src/Hydrator/OrderHydrator.php
index ead2d0df46b..06a347cbe47 100644
--- a/module/fid/src/Hydrator/OrderHydrator.php
+++ b/module/fid/src/Hydrator/OrderHydrator.php
@@ -27,24 +27,43 @@ class OrderHydrator extends AbstractHydrator {
         $object->setType($data['type']);
         $object->setUser($data['user']);
 
+        $pages = array_key_exists('pages',$data) ? $data['pages'] : null;
+
         /* Collect needed record data */
-        $recordId = $driver->tryMethod('getUniqueID');
+        $id = $driver->tryMethod('getUniqueID');
         $title = $driver->tryMethod('getTitle');
-        $publicationDetails = (array) $driver->tryMethod('getPublicationDetails')[0];
+        $publicationDetails = $this->toArray( $driver->tryMethod('getPublicationDetails')[0] );
         $authors = $driver->tryMethod('getDeduplicatedAuthors');
+        $primaryAuthor = $driver->tryMethod('getPrimaryAuthor');
+        $secondaryAuthors = $driver->tryMethod('getSecondaryAuthors');
         $isbn = $driver->tryMethod('getCleanISBN');
         $issn = $driver->tryMethod('getCleanISSN');
+        $languages = $driver->tryMethod('getLanguages');
+        $price = $driver->tryMethod('getPrice');
+
         $record = compact(
-            'recordId',
+            'id',
             'title',
             'publicationDetails',
             'authors',
+            'primaryAuthor',
+            'secondaryAuthors',
             'issn',
-            'isbn'
+            'isbn',
+            'languages',
+            'price',
+            'pages'
         );
 
         $object->setData(compact('record'));
+        $object->setLabel($title);
         return;
     }
 
+    public function toArray ($object) : array {
+        $array = (array) $object;
+        $keys = str_replace( '*', '', array_keys( $array ) );
+        return array_combine( $keys, array_values( $array ) );
+    }
+
 }
\ No newline at end of file
-- 
GitLab