From 5d80d634d3522380f153f51d984a42522ed11b97 Mon Sep 17 00:00:00 2001
From: git <git@1918568.no-reply.drupal.org>
Date: Sun, 1 Apr 2018 07:30:50 +0200
Subject: [PATCH] Issue #2953227 by vtcore: Date Time enhancer does not work
 with Date range fields

---
 .../DateTimeFromStringEnhancer.php            | 28 +++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/src/Plugin/jsonapi/FieldEnhancer/DateTimeFromStringEnhancer.php b/src/Plugin/jsonapi/FieldEnhancer/DateTimeFromStringEnhancer.php
index 2378f79..b5105ff 100644
--- a/src/Plugin/jsonapi/FieldEnhancer/DateTimeFromStringEnhancer.php
+++ b/src/Plugin/jsonapi/FieldEnhancer/DateTimeFromStringEnhancer.php
@@ -19,6 +19,20 @@ class DateTimeFromStringEnhancer extends DateTimeEnhancerBase {
    * {@inheritdoc}
    */
   public function postProcess($value) {
+    if (is_array($value)) {
+        return array_map([$this, 'processSingleValue'], $value);
+    }
+
+    return $this->processSingleValue($value);
+  }
+
+  /**
+   * Process a single value
+   *
+   * @param $value
+   * @return string
+   */
+  protected function processSingleValue($value) {
     $storage_timezone = new \DateTimezone(DATETIME_STORAGE_TIMEZONE);
     $date = new \DateTime($value, $storage_timezone);
 
@@ -34,6 +48,20 @@ class DateTimeFromStringEnhancer extends DateTimeEnhancerBase {
    * {@inheritdoc}
    */
   public function prepareForInput($value) {
+    if (is_array($value)) {
+        return array_map([$this, 'prepareSingleValue'], $value);
+    }
+
+    return $this->prepareSingleValue($value);
+  }
+
+  /**
+   * Prepare a single value for input.
+   *
+   * @param $value
+   * @return string
+   */
+  protected function prepareSingleValue($value) {
     $date = new \DateTime($value);
 
     // Adjust the date for storage.
-- 
GitLab