src/Controller/ResultController.php line 52

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Pimcore\Controller\FrontendController;
  4. use Pimcore\Log\ApplicationLogger;
  5. use Pimcore\Model\DataObject\CarCutterImage;
  6. use Pimcore\Model\DataObject\CarCutterImageset;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. class ResultController extends FrontendController
  11. {
  12.     /**
  13.      * @param Request $request
  14.      * @return Response
  15.      */
  16.     public function result(Request $requestApplicationLogger $loggerstring $id): Response
  17.     {
  18.         if($task CarCutterImage::getByIdentifier($id1)) {
  19.             $payload $request->toArray();
  20.             if(isset($payload["event_type"]) && isset($payload["images"])) {
  21.                 if(count($payload["images"]) > 0) {
  22.                     $resultImage $payload["images"][0];
  23.                     $status $this->getStatus($resultImage);
  24.                     $task->setStatus($status);
  25.                     $logger->info("ResultController: Received Sync ID [$id] Item was set to $status state");
  26.                 }
  27.             } else {
  28.                 $task->setStatus('error');
  29.                 $logger->error("ResultController: Received Sync ID [$id] Item was set to ERROR state");
  30.             }
  31.             $task->save();
  32.         } else {
  33.             $logger->warning("ResultController: Received unknown Sync ID [$id]");
  34.         }
  35.         return new Response();
  36.     }
  37.     /**
  38.      * @param Request $request
  39.      * @return Response
  40.      */
  41.     public function isresult(Request $requestApplicationLogger $loggerstring $id): Response
  42.     {
  43.         if($task CarCutterImageset::getByKey($id1)) {
  44.             $payload $request->toArray();
  45.             if(isset($payload["event_type"]) && isset($payload["images"])) {
  46.                 $images $payload["images"]; // array
  47.                 if(count($images) > 0) {
  48.                     foreach($images as $image) {
  49.                         $url $image['image_url'];
  50.                         $resUrl $image['result_url'];
  51.                         $status $this->getStatus($image);
  52.                         $taskImages $task->getImages();
  53.                         $newImages = array();
  54.                         foreach($taskImages as $taskImage) {
  55.                             if($taskImage['url'] === $url) {
  56.                                 $taskImage['status'] = $status;
  57.                                 $taskImage['resultUrl'] = $resUrl;
  58.                             }
  59.                             $newImages[] = $taskImage;
  60.                         }
  61.                         $task->setImages($newImages);
  62.                     }
  63.                 }
  64.                 // Check if all are completed
  65.                 $complete true;
  66.                 foreach($newImages as $newImage) {
  67.                     if($newImage['status'] != 'done' || $newImage['status'] != 'retake') {
  68.                         $complete false;
  69.                         break;
  70.                     }
  71.                 }
  72.                 if($complete) {
  73.                     $task->setStatus('done');
  74.                 }
  75.             } else {
  76.                 $task->setStatus('error');
  77.                 $logger->error("ResultController/Imageset: Received Sync ID [$id], Event Type/Image payload missing. Item was set to ERROR state.");
  78.             }
  79.             $task->save();
  80.         } else {
  81.             $logger->warning("ResultController/Imageset: Received unknown Sync ID [$id]");
  82.         }
  83.         return new Response();
  84.     }
  85.     private function getStatus(array $image)
  86.     {
  87.         $phase $image['phase'];
  88.         $quality $image['quality'];
  89.         $status $image['status'];
  90.         if($status == 'error') {
  91.             return 'error';
  92.         }
  93.         if($status == 'raw' && $phase == 'ready') {
  94.             return 'done';
  95.         }
  96.         if($phase == 'quaing' || $phase == 'retouching') {
  97.             return $phase;
  98.         }
  99.         // TODO: Check if this is "done"
  100.         if($quality == 'retake') {
  101.             return $quality;
  102.         }
  103.         return 'done';
  104.     }
  105. }