src/EventSubscriber/TransitionEventSubscriber.php line 48

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\User;
  4. use App\Entity\Ticket;
  5. use App\Service\LegApiService;
  6. use App\Workflow\TicketAwmTransitionsAndStates;
  7. use App\Workflow\TicketMalfunctionTransitionsAndStates;
  8. use App\Workflow\TicketRefuelTransitionsAndStates;
  9. use App\Workflow\TicketSensorTransitionsAndStates;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use Psr\Log\LoggerInterface;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  14. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  15. use Symfony\Component\Security\Core\User\UserInterface;
  16. use Symfony\Component\Workflow\Event\TransitionEvent;
  17. use Symfony\Component\Workflow\Registry;
  18. class TransitionEventSubscriber implements EventSubscriberInterface
  19. {
  20.     private $tokenStorage;
  21.     private $em;
  22.     private $workflowRegistry;
  23.     private $logger;
  24.     private $apiService;
  25.     public function __construct(TokenStorageInterface $tokenStorageEntityManagerInterface $emRegistry $workflowRegistryLoggerInterface $loggerLegApiService $legApiService)
  26.     {
  27.         $this->tokenStorage $tokenStorage;
  28.         $this->em $em;
  29.         $this->workflowRegistry $workflowRegistry;
  30.         $this->logger $logger;
  31.         $this->apiService $legApiService;
  32.         $this->logger->debug('aco.DEBUG: workflow: TransitionEventSubscriber: __construct');
  33.     }
  34.     public function authenticateAsSystemUser()
  35.     {
  36.         $systemUser $this->em->getRepository(User::class)->getSystemUser();
  37.         $token = new UsernamePasswordToken($systemUser$systemUser->getPassword(), 'public'$systemUser->getRoles());
  38.         // For older versions of Symfony, use security.context here
  39.         $this->tokenStorage->setToken($token);
  40.     }
  41.     public function onWorkflowMalfunctionEntered($event)
  42.     {
  43.         // echo "onWorkflowAwmEntered: ".$event->getSubject()->getMarking()."<br />";
  44.         $ticket $event->getSubject();
  45.         $ticketStateMachine $this->workflowRegistry->get($ticket$ticket->getType());
  46.         $this->logger->debug('aco.DEBUG: workflow: onWorkflowMalfunctionEntered: ENTERED');
  47.         $token $this->tokenStorage->getToken();
  48.         $this->logger->debug('aco.DEBUG: workflow: onWorkflowMalfunctionEntered: transition: '.$event->getTransition()->getName());
  49.         $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowMalfunctionEntered: ENTERED Malfunction');
  50.         if ($ticket->getElevator()) {
  51.             $tga $ticket->getElevator();
  52.         }
  53.         if ($ticket->getNea()) {
  54.             $tga $ticket->getNea();
  55.         }
  56.         $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowMalfunctionEntered: User: '.$token->getUser()->getUsername());
  57.         $userRoles implode(', '$token->getUser()->getRoles());
  58.         $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowMalfunctionEntered: User Roles: '.$userRoles);
  59.         $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowMalfunctionEntered: TransitionName: '.$event->getTransition()->getName());
  60.         switch ($event->getTransition()->getName()) {
  61.             case TicketMalfunctionTransitionsAndStates::TRANS_INITIALIZE_TICKET:
  62.                 $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowMalfunctionEntered: case TicketMalfunctionTransitionsAndStates::TRANS_INITIALIZE_TICKET');
  63.                 $this->authenticateAsSystemUser();
  64.                 // check if DL can be assigned automatically
  65.                 if ($tga->getMaintenanceCompany()) {
  66.                     $ticket->setAssignee($tga->getMaintenanceCompany());
  67.                 }
  68.                 $ticketStateMachine->apply($ticketTicketMalfunctionTransitionsAndStates::TRANS_TRANSFER_TO_DL);
  69.                 break;
  70.             case TicketMalfunctionTransitionsAndStates::TRANS_REOPEN_TICKET:
  71.                 $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowMalfunctionEntered: case TicketMalfunctionTransitionsAndStates::TRANS_REOPEN_TICKET');
  72.                 $enabledTrans $ticketStateMachine->getEnabledTransitions($ticket);
  73.                 $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowMalfunctionEntered: enabledTrans: '.count($enabledTrans));
  74.                 foreach ($enabledTrans as $k => $v) {
  75.                     $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowMalfunctionEntered: enabledTrans: '.$v->getName());
  76.                 }
  77.                 $this->authenticateAsSystemUser();
  78.                 // rermove all given answers
  79.                 $ticket->setDueDate(null);
  80.                 $ticket->setFailureCause(null);
  81.                 $ticket->setReasonNewTermination(null);
  82.                 $ticket->setDismissReason(null);
  83.                 $ticket->setConfirmTechnicianOnSite(null);
  84.                 $ticket->setSignature(null);
  85.                 // $ticketStateMachine->apply($ticket, TicketMalfunctionTransitionsAndStates::TRANS_REOPEN_TICKET);
  86.                 break;
  87.             case TicketMalfunctionTransitionsAndStates::TRANS_NOT_REPAIRED:
  88.                 $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowMalfunctionEntered: TicketMalfunctionTransitionsAndStates::TRANS_NOT_REPAIRED: '.TicketMalfunctionTransitionsAndStates::TRANS_NOT_REPAIRED);
  89.                 $enabledTrans $ticketStateMachine->getEnabledTransitions($ticket);
  90.                 $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowMalfunctionEntered: enabledTrans: '.count($enabledTrans));
  91.                 foreach ($enabledTrans as $k => $v) {
  92.                     $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowMalfunctionEntered: enabledTrans: '.$v->getName());
  93.                 }
  94.                 // $this->authenticateAsSystemUser();
  95.                 // check if DL can be assigned automatically
  96.                 if ($tga->getMaintenanceCompany()) {
  97.                     $ticket->setAssignee($tga->getMaintenanceCompany());
  98.                 }
  99.                 $ticketStateMachine->apply($ticketTicketMalfunctionTransitionsAndStates::TRANS_TERMINATION);
  100.                 break;
  101.             default:
  102.                 if (TicketMalfunctionTransitionsAndStates::TRANS_TRANSFER_TO_DL != $event->getTransition()->getName()) {
  103.                     // call api request
  104.                     $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowMalfunctionEntered: enabledTrans: '.$event->getTransition()->getName());
  105.                     $reason $event->getTransition()->getName();
  106.                     $date $ticket->getDueDate();
  107.                     $reasons = [trim($ticket->getFailureCause()), trim($ticket->getReasonNewTermination()), trim($ticket->getDismissReason())];
  108.                     $reasonString implode("\n"$reasons);
  109.                     // ablehnen soll nicht an die API uebertragen werden
  110.                     if (TicketMalfunctionTransitionsAndStates::TRANS_DECLINE != $event->getTransition()->getName()) {
  111.                         $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowMalfunctionEntered: postStateRemote:');
  112.                         $this->apiService->postStateRemote($ticket->getElevator(), $ticket->getElevator()->getState(), $date$reasonString);
  113.                     }
  114.                 }
  115.                 break;
  116.         }
  117.     }
  118.     public function onWorkflowZuesEntered($event)
  119.     {
  120.         // echo "onWorkflowAwmEntered: ".$event->getSubject()->getMarking()."<br />";
  121.         $ticket $event->getSubject();
  122.         $ticketStateMachine $this->workflowRegistry->get($ticket$ticket->getType());
  123.         $this->logger->debug('aco.DEBUG: workflow: onWorkflowZuesEntered: ENTERED');
  124.         $token $this->tokenStorage->getToken();
  125.         $this->logger->debug('aco.DEBUG: workflow: onWorkflowZuesEntered: transition: '.$event->getTransition()->getName());
  126.         $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowZuesEntered: ENTERED Malfunction');
  127.         if ($ticket->getElevator()) {
  128.             $tga $ticket->getElevator();
  129.         }
  130.         if ($ticket->getNea()) {
  131.             $tga $ticket->getNea();
  132.         }
  133.         $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowZuesEntered: User: '.$token->getUser()->getUsername());
  134.         $userRoles implode(', '$token->getUser()->getRoles());
  135.         $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowZuesEntered: User Roles: '.$userRoles);
  136.         $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowZuesEntered: TransitionName: '.$event->getTransition()->getName());
  137.         switch ($event->getTransition()->getName()) {
  138.             case TicketMalfunctionTransitionsAndStates::TRANS_INITIALIZE_TICKET:
  139.                 $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowZuesEntered: case TicketMalfunctionTransitionsAndStates::TRANS_INITIALIZE_TICKET');
  140.                 $this->authenticateAsSystemUser();
  141.                 // check if DL can be assigned automatically
  142.                 if ($tga->getMaintenanceCompany()) {
  143.                     $ticket->setAssignee($tga->getMaintenanceCompany());
  144.                 }
  145.                 $ticketStateMachine->apply($ticketTicketMalfunctionTransitionsAndStates::TRANS_TRANSFER_TO_DL);
  146.                 break;
  147.             case TicketMalfunctionTransitionsAndStates::TRANS_REOPEN_TICKET:
  148.                 $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowZuesEntered: case TicketMalfunctionTransitionsAndStates::TRANS_REOPEN_TICKET');
  149.                 $enabledTrans $ticketStateMachine->getEnabledTransitions($ticket);
  150.                 $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowZuesEntered: enabledTrans: '.count($enabledTrans));
  151.                 foreach ($enabledTrans as $k => $v) {
  152.                     $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowZuesEntered: enabledTrans: '.$v->getName());
  153.                 }
  154.                 $this->authenticateAsSystemUser();
  155.                 // rermove all given answers
  156.                 $ticket->setDueDate(null);
  157.                 $ticket->setFailureCause(null);
  158.                 $ticket->setReasonNewTermination(null);
  159.                 $ticket->setDismissReason(null);
  160.                 $ticket->setConfirmTechnicianOnSite(null);
  161.                 $ticket->setSignature(null);
  162.                 // $ticketStateMachine->apply($ticket, TicketMalfunctionTransitionsAndStates::TRANS_REOPEN_TICKET);
  163.                 break;
  164.             case TicketMalfunctionTransitionsAndStates::TRANS_NOT_REPAIRED:
  165.                 $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowZuesEntered: TicketMalfunctionTransitionsAndStates::TRANS_NOT_REPAIRED: '.TicketMalfunctionTransitionsAndStates::TRANS_NOT_REPAIRED);
  166.                 $enabledTrans $ticketStateMachine->getEnabledTransitions($ticket);
  167.                 $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowZuesEntered: enabledTrans: '.count($enabledTrans));
  168.                 foreach ($enabledTrans as $k => $v) {
  169.                     $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowZuesEntered: enabledTrans: '.$v->getName());
  170.                 }
  171.                 // $this->authenticateAsSystemUser();
  172.                 // check if DL can be assigned automatically
  173.                 if ($tga->getMaintenanceCompany()) {
  174.                     $ticket->setAssignee($tga->getMaintenanceCompany());
  175.                 }
  176.                 $ticketStateMachine->apply($ticketTicketMalfunctionTransitionsAndStates::TRANS_TERMINATION);
  177.                 break;
  178.         }
  179.     }
  180.     public function onWorkflowWarningEntered($event)
  181.     {
  182.         // echo "onWorkflowAwmEntered: ".$event->getSubject()->getMarking()."<br />";
  183.         $ticket $event->getSubject();
  184.         $ticketStateMachine $this->workflowRegistry->get($ticket$ticket->getType());
  185.         $this->logger->debug('aco.DEBUG: workflow: onWorkflowWarningEntered: ENTERED');
  186.         $this->logger->debug('aco.DEBUG: workflow: onWorkflowWarningEntered: transition: '.$event->getTransition()->getName());
  187.         $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowWarningEntered: ENTERED WARNING');
  188.         if ($ticket->getElevator()) {
  189.             $tga $ticket->getElevator();
  190.         }
  191.         if ($ticket->getNea()) {
  192.             $tga $ticket->getNea();
  193.         }
  194.         $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowWarningEntered: TicketMalfunctionTransitionsAndStates::TRANS_NOT_REPAIRED: '.TicketMalfunctionTransitionsAndStates::TRANS_NOT_REPAIRED);
  195.         $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowWarningEntered: TransitionName: '.$event->getTransition()->getName());
  196.         switch ($event->getTransition()->getName()) {
  197.             case TicketMalfunctionTransitionsAndStates::TRANS_INITIALIZE_TICKET:
  198.                 $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowWarningEntered: case TicketMalfunctionTransitionsAndStates::TRANS_INITIALIZE_TICKET');
  199.                 $this->authenticateAsSystemUser();
  200.                 // check if DL can be assigned automatically
  201.                 if ($tga->getMaintenanceCompany()) {
  202.                     $ticket->setAssignee($tga->getMaintenanceCompany());
  203.                 }
  204.                 // TODO: check if tickets should automatically assigend to DL
  205.                 // $this->em->persist($ticket);
  206.                 // $this->em->flush();
  207.                 $ticketStateMachine->apply($ticketTicketMalfunctionTransitionsAndStates::TRANS_TRANSFER_TO_DL);
  208.                 break;
  209.             case TicketMalfunctionTransitionsAndStates::TRANS_REOPEN_TICKET:
  210.                 // rermove all given answers
  211.                 $ticket->setDueDate(null);
  212.                 $ticket->setFailureCause(null);
  213.                 $ticket->setReasonNewTermination(null);
  214.                 $ticket->setDismissReason(null);
  215.                 $ticket->setConfirmTechnicianOnSite(null);
  216.                 $ticket->setSignature(null);
  217.                 break;
  218.         }
  219.     }
  220.     public function onWorkflowRefuelEntered($event)
  221.     {
  222.         // echo "onWorkflowAwmEntered: ".$event->getSubject()->getMarking()."<br />";
  223.         $ticket $event->getSubject();
  224.         $ticketStateMachine $this->workflowRegistry->get($ticket$ticket->getType());
  225.         $this->logger->debug('aco.DEBUG: workflow: onWorkflowRefuelEntered: ENTERED');
  226.         $this->logger->debug('aco.DEBUG: workflow: onWorkflowRefuelEntered: transition: '.$event->getTransition()->getName());
  227.         $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowRefuelEntered: ENTERED Refuel');
  228.         if ($ticket->getNea()) {
  229.             $tga $ticket->getNea();
  230.         }
  231.         $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowRefuelEntered: TransitionName: '.$event->getTransition()->getName());
  232.         switch ($event->getTransition()->getName()) {
  233.             case TicketRefuelTransitionsAndStates::TRANS_INITIALIZE_TICKET:
  234.                 $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowRefuelEntered: case TicketMalfunctionTransitionsAndStates::TRANS_INITIALIZE_TICKET');
  235.                 $this->authenticateAsSystemUser();
  236.                 // check if DL can be assigned automatically
  237.                 if ($tga->getTankCompany()) {
  238.                     $ticket->setAssignee($tga->getTankCompany());
  239.                 }
  240.                 // TODO: check if tickets should automatically assigend to DL
  241.                 // $this->em->persist($ticket);
  242.                 // $this->em->flush();
  243.                 $ticketStateMachine->apply($ticketTicketRefuelTransitionsAndStates::TRANS_TRANSFER_TO_DL);
  244.                 break;
  245.             case TicketRefuelTransitionsAndStates::TRANS_REOPEN_TICKET:
  246.                 // rermove all given answers
  247.                 $ticket->setDueDate(null);
  248.                 $ticket->setFailureCause(null);
  249.                 $ticket->setReasonNewTermination(null);
  250.                 $ticket->setDismissReason(null);
  251.                 $ticket->setConfirmTechnicianOnSite(null);
  252.                 $ticket->setSignature(null);
  253.                 break;
  254.         }
  255.     }
  256.     public function onWorkflowTicketTransition(TransitionEvent $event)
  257.     {
  258.         $this->logger->debug('aco.DEBUG: TicketGenerator: workflow: onWorkflowTicketTransition');
  259.         $context $event->getContext();
  260.         $user $this->tokenStorage->getToken()->getUser();
  261.         if ($user instanceof UserInterface) {
  262.             $context['user'] = $user->getUsername();
  263.         }
  264.         $this->logger->debug('aco.DEBUG: workflow_transition: onWorkflowAwmEntered: User: '.$user->getUsername());
  265.         $context['transitionTo'] = [
  266.             $event->getSubject()->getMarking(),
  267.         ];
  268.         $ticketRepo $this->em->getRepository(Ticket::class);
  269.         $reciepients $ticketRepo->getNotificationReciepients($event->getSubject(), true);
  270.         $context['mailing'] = implode(', '$reciepients);
  271.         $event->setContext($context);
  272.     }
  273.     public function onWorkflowAwmEntered($event)
  274.     {
  275.         $this->logger->debug('aco.DEBUG: workflow_transition: onWorkflowAwmEntered: ENTERED');
  276.         $ticket $event->getSubject();
  277.         $ticketStateMachine $this->workflowRegistry->get($ticket$ticket->getType());
  278.         $this->logger->debug('aco.DEBUG: workflow: onWorkflowAwmEntered: AWM');
  279.         $this->logger->debug('aco.DEBUG: workflow: onWorkflowAwmEntered: transition: '.$event->getTransition()->getName());
  280.         $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowAwmEntered: ENTERED AWM');
  281.         switch ($event->getTransition()->getName()) {
  282.             case TicketAwmTransitionsAndStates::TRANS_INITIALIZE_TICKET:
  283.                 $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowAwmEntered: case TicketAwmTransitionsAndStates::TRANS_INITIALIZE_TICKET');
  284.                 $this->authenticateAsSystemUser();
  285.                 // check if DL can be assigned automatically
  286.                 if ($ticket->getElevator()) {
  287.                     $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowAwmEntered: case TicketAwmTransitionsAndStates::TRANS_INITIALIZE_TICKET: Ticket has elevator: '.$ticket->getElevator()->getId());
  288.                 } else {
  289.                     $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowAwmEntered: case TicketAwmTransitionsAndStates::TRANS_INITIALIZE_TICKET: Ticket has NO elevator!!!');
  290.                 }
  291.                 if ($ticket->getElevator()->getMaintenanceCompany()) {
  292.                     $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowAwmEntered: case TicketAwmTransitionsAndStates::TRANS_INITIALIZE_TICKET: Ticket can be applied automatically. ');
  293.                     $ticket->setAssignee($ticket->getElevator()->getMaintenanceCompany());
  294.                 } else {
  295.                     $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowAwmEntered: case TicketAwmTransitionsAndStates::TRANS_INITIALIZE_TICKET: Ticket can NOT be applied automatically. ');
  296.                 }
  297.                 $ticketStateMachine->apply($ticketTicketAwmTransitionsAndStates::TRANS_TRANSFER_TO_DL);
  298.                 break;
  299.             case TicketAwmTransitionsAndStates::TRANS_REOPEN_TICKET:
  300.                 // rermove all given answers
  301.                 $ticket->setDueDate(null);
  302.                 $ticket->setFailureCause(null);
  303.                 $ticket->setReasonNewTermination(null);
  304.                 $ticket->setDismissReason(null);
  305.                 $ticket->setConfirmTechnicianOnSite(null);
  306.                 $ticket->setSignature(null);
  307.                 break;
  308.                 // case TicketAwmTransitionsAndStates::TRANS_EMERGENCY_MODE:
  309.             case TicketAwmTransitionsAndStates::TRANS_NOT_REPAIRED:
  310.                 $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowAwmEntered: case TicketAwmTransitionsAndStates::NOT_REPAIRED');
  311.                 $ticketStateMachine->apply($ticketTicketAwmTransitionsAndStates::TRANS_TERMINATION);
  312.                 break;
  313.         }
  314.     }
  315.     public function onWorkflowSensorEntered($event)
  316.     {
  317.         // echo "onWorkflowSensorEntered: ".$event->getSubject()->getMarking()."<br />";
  318.         $ticket $event->getSubject();
  319.         $ticketStateMachine $this->workflowRegistry->get($ticket$ticket->getType());
  320.         $this->logger->debug('aco.DEBUG: workflow_transition: onWorkflowSensorEntered: ENTERED');
  321.         $this->logger->debug('aco.DEBUG: workflow: onWorkflowSensorEntered: AWM');
  322.         $this->logger->debug('aco.DEBUG: workflow: onWorkflowSensorEntered: transition: '.$event->getTransition()->getName());
  323.         $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowSensorEntered: ENTERED AWM');
  324.         switch ($event->getTransition()->getName()) {
  325.             case TicketSensorTransitionsAndStates::TRANS_INITIALIZE_TICKET:
  326.                 $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowSensorEntered: case TicketSensorTransitionsAndStates::TRANS_INITIALIZE_TICKET');
  327.                 $this->authenticateAsSystemUser();
  328.                 // check if DL can be assigned automatically
  329.                 if ($ticket->getElevator()->getControlCompany()) {
  330.                     $ticket->setAssignee($ticket->getElevator()->getControlCompany());
  331.                 }
  332.                 $ticketStateMachine->apply($ticketTicketSensorTransitionsAndStates::TRANS_TRANSFER_TO_DL);
  333.                 break;
  334.             case TicketSensorTransitionsAndStates::TRANS_REOPEN_TICKET:
  335.                 $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowSensorEntered: case TicketSensorTransitionsAndStates::TRANS_REOPEN_TICKET');
  336.                 // rermove all given answers
  337.                 $ticket->setDueDate(null);
  338.                 $ticket->setFailureCause(null);
  339.                 $ticket->setReasonNewTermination(null);
  340.                 $ticket->setDismissReason(null);
  341.                 $ticket->setConfirmTechnicianOnSite(null);
  342.                 $ticket->setSignature(null);
  343.                 break;
  344.                 // case TicketSensorTransitionsAndStates::TRANS_EMERGENCY_MODE:
  345.             case TicketSensorTransitionsAndStates::TRANS_NOT_REPAIRED:
  346.                 $this->logger->debug('aco.DEBUG: workflow: workflow_transition: onWorkflowSensorEntered: case TicketSensorTransitionsAndStates::NOT_REPAIRED');
  347.                 $ticketStateMachine->apply($ticketTicketSensorTransitionsAndStates::TRANS_TERMINATION);
  348.                 break;
  349.         }
  350.     }
  351.     public static function getSubscribedEvents(): array
  352.     {
  353.         return [
  354.             TransitionEvent::class => 'onWorkflowTicketTransition',
  355.             'workflow.malfunction.entered' => 'onWorkflowMalfunctionEntered',
  356.             'workflow.refuel.entered' => 'onWorkflowRefuelEntered',
  357.             'workflow.awm.entered' => 'onWorkflowAwmEntered',
  358.             'workflow.neamalfunction.entered' => 'onWorkflowMalfunctionEntered',
  359.             'workflow.sensor.entered' => 'onWorkflowSensorEntered',
  360.             'workflow.warning.entered' => 'onWorkflowWarningEntered',
  361.             'workflow.zues.entered' => 'onWorkflowZuesEntered',
  362.             // 'workflow.awm.enter' => 'onWorkflowAwmEnter',
  363.             // 'workflow.awm.leave' => 'onWorkflowAwmLeave',
  364.             // 'workflow.awm.completed' => 'onWorkflowAwmCompleted',
  365.         ];
  366.     }
  367. }