src/Misc/AppMappingOperation.php line 13

Open in your IDE?
  1. <?php
  2. namespace App\Misc;
  3. use AutoMapperPlus\MappingOperation\DefaultMappingOperation;
  4. use AutoMapperPlus\MappingOperation\MapperAwareOperation;
  5. use AutoMapperPlus\MappingOperation\MapperAwareTrait;
  6. class AppMappingOperation extends DefaultMappingOperation implements MapperAwareOperation
  7. {
  8.     use MapperAwareTrait;
  9.     public function __construct(
  10.         \Psr\Container\ContainerInterface $serviceLocator
  11.     ) {
  12.         $this->serviceLocator = $serviceLocator;
  13.     }
  14.     function setDestinationValue(
  15.         $destination,
  16.         string $propertyName,
  17.         $value
  18.     ): void {
  19.         if ($value instanceof \DateTime) {
  20.             $requestService = $this->serviceLocator->get('App\Service\RequestService');
  21.             $className = $requestService->commonService->getClassName($destination);
  22.             //$requestService->logger->info('sourceValue',[$value]);
  23.             //$requestService->logger->info('classname',[$className]);
  24.             //$requestService->logger->info('value timezone',[$value->getTimezone()->getName()]);
  25.             if (
  26.                 strpos($className, 'Output') === (strlen($className) - 6)
  27.                 && $value->getTimezone()->getName() !== $requestService->timezone
  28.                 && $requestService->timezone
  29.             ) {
  30.                 try {
  31.                     $value->setTimezone(new \DateTimeZone($requestService->timezone));
  32.                     $this->getPropertyWriter()->setProperty(
  33.                         $destination,
  34.                         $propertyName,
  35.                         $value->format('c')
  36.                     );
  37.                     return;
  38.                 } catch (\Exception $e) {
  39.                     // Invalid or deprecated timezone identifier — fall through to default
  40.                 }
  41.             }
  42.         }
  43.         parent::setDestinationValue($destination, $propertyName, $value);
  44.     }
  45. }