/** * @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); }