diff --git a/src/Plugin/migrate/process/CalculateEndtime.php b/src/Plugin/migrate/process/CalculateEndtime.php new file mode 100644 index 0000000000000000000000000000000000000000..5aa7948e72c44458a4a25f843cf22b542700d356 --- /dev/null +++ b/src/Plugin/migrate/process/CalculateEndtime.php @@ -0,0 +1,43 @@ +<?php + +namespace Drupal\druplan_demo\Plugin\migrate\process; + +use Drupal\migrate\MigrateExecutableInterface; +use Drupal\migrate\ProcessPluginBase; +use Drupal\migrate\Row; + +/** + * Calculate end time based on start and duration. + * + * @MigrateProcessPlugin( + * id = "endtime_value", + * handle_multiples = TRUE + * ) + */ +class CalculateEndtime extends ProcessPluginBase { + + /** + * {@inheritdoc} + */ + public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { + if (empty($value)) { + $start_time = $row->getSourceProperty('startuur'); + $duration = $row->getSourceProperty('duurtijd'); + $hours = '1'; + $minutes = '0'; + if(!empty($duration)) { + list($hours, $minutes) = explode(':', $duration); + } + if (!empty($start_time)) { + $formatted_start = str_replace('u', ':', $start_time); + $start_datetime = \DateTime::createFromFormat('H:i', $formatted_start); + if ($start_datetime) { + $start_datetime->modify("+{$hours} hours +{$minutes} minutes"); + return $start_datetime->format('H:i'); + } + } + return '22:45'; + } + return str_replace('u', ':',$value); + } +}