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.                 //$requestService->logger->info('timezone',[$requestService->timezone]);
  31.                 $value->setTimezone(new \DateTimeZone($requestService->timezone));
  32.                 //$requestService->logger->info('after change',[$value]);
  33.                 $this->getPropertyWriter()->setProperty(
  34.                     $destination,
  35.                     $propertyName,
  36.                     $value->format('c')
  37.                 );
  38.                 return;
  39.             }
  40.         }
  41.         parent::setDestinationValue($destination$propertyName$value);
  42.     }
  43. }