Ejemplo n.º 1
0
 /**
  * @param $id
  * @param Request $request
  * @return JsonResponse
  *
  * @Route("/cto/ajax/addedPicturesToJob/{id}", name="ajax_cto_addedPicturesToJob", options={"expose" = true})
  * @Method("POST")
  */
 public function addPicturesToJobAction($id, Request $request)
 {
     /** @var EntityManager $em */
     $em = $this->getDoctrine()->getManager();
     $job = $em->getRepository("CTOAppBundle:CarJob")->find((int) $id);
     $files = $request->files->all();
     if ($job and $job instanceof CarJob) {
         $ctoId = $job->getClient()->getCto()->getId();
         $s3 = $this->get("cto.aws.s3");
         /** @var UploadedFile $file */
         foreach ($files as $file) {
             if ($file instanceof UploadedFile) {
                 $filePath = $file->getRealPath();
                 $fileName = $file->getClientOriginalName();
                 $fileInfo = new finfo(FILEINFO_MIME_TYPE);
                 $mimeType = $fileInfo->file($filePath);
                 $name = "pri4a_id_{$ctoId}/job_id_{$job->getId()}" . "__" . $fileName . "__" . uniqid() . ".jpg";
                 if ($s3->upload($name, $filePath, $mimeType)) {
                     $picture = new JobPicture();
                     $picture->setPath($name)->setJob($job);
                     $em->persist($picture);
                     $job->addPicture($picture);
                 }
             }
         }
         $em->flush();
         return new JsonResponse(["status" => "ok"], 200);
     }
     return new JsonResponse(["status" => "fail"], 400);
 }