Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use SymfonyComponentValidatorConstraints as Assert;
- /**
- * @ORMColumn(type="string", length=255, unique=true)
- * @AssertFile(
- * maxSize = "1024k",
- * mimeTypes = {"application/pdf", "application/x-pdf"},
- * mimeTypesMessage = "Please upload a valid PDF")
- */
- private $file;
- /**
- * @ORMManyToOne(targetEntity="AppEntityTicket", inversedBy="files")
- */
- private $ticket;
- public function getFile(): ?string
- {
- return $this->file;
- }
- public function setFile(string $file): self
- {
- $this->file = $file;
- return $this;
- }
- public function getTicket(): ?Ticket
- {
- return $this->ticket;
- }
- public function setTicket(?Ticket $ticket): self
- {
- $this->ticket = $ticket;
- return $this;
- }
- use SymfonyComponentValidatorConstraints as Assert;
- /**
- * @ORMOneToMany(targetEntity="AppEntityTicketFile", mappedBy="ticket")
- * @AssertValid()
- */
- private $files;
- /**
- * @return Collection|TicketFile[]
- */
- public function getFiles(): Collection
- {
- return $this->files;
- }
- public function addFile(TicketFile $file): self
- {
- if (!$this->files->contains($file)) {
- $this->files[] = $file;
- $file->setTicket($this);
- }
- return $this;
- }
- public function removeFile(TicketFile $file): self
- {
- if ($this->files->contains($file)) {
- $this->files->removeElement($file);
- // set the owning side to null (unless already changed)
- if ($file->getTicket() === $this) {
- $file->setTicket(null);
- }
- }
- return $this;
- }
- use SymfonyComponentFormExtensionCoreTypeTextareaType;
- use SymfonyComponentValidatorConstraintsLength;
- use SymfonyComponentFormExtensionCoreTypeFileType;
- $builder
- ->add('description', TextareaType::class, [
- 'label' => 'Opis zgłoszenia',
- 'constraints' => new Length(['min' => 50]),
- ])
- ->add('files', FileType::class, [
- 'multiple' => true,
- 'label' => 'Załączniki',
- ])
- ->add('save', SubmitType::class);
- public function addTicket(Request $request)
- {
- $form = $this->createForm(TicketType::class);
- $form->handleRequest($request);
- if ($form->isSubmitted() && $form->isValid()) {
- $this->ticketService->saveTicket($form->getData());
- return $this->redirectToRoute('add_ticket');
- }
- return $this->render('user/add_ticket.html.twig', [
- 'form' => $form->createView(),
- ]);
- }
- public function saveTicket($data, $user = null) {
- $statusNew = $this->em->getRepository(Status::class)->findOneBy(['id' => Status::STATUS_NEW]);
- $ticket = new Ticket();
- $ticket
- ->setUser($user)
- ->setDescription($data['description'])
- ->setStatus($statusNew);
- if ($user) {
- $ticket
- ->setUser($user)
- ->setProject($data['project'])
- ->setProjectName($data['project']->getName())
- ->setRequestEmail($user->getEmail());
- } else {
- $ticket
- ->setRequestEmail($data['requestEmail'])
- ->setProjectName($data['projectName']);
- }
- $this->em->persist($ticket);
- foreach ($data['files'] as $file) {
- $extension = $file->getClientOriginalExtension();
- $filename = md5(uniqid()).'.'.$extension;
- $file->move('upload/ticketFiles/', $filename);
- $ticketFile = new TicketFile();
- $ticketFile
- ->setFile($filename)
- ->setTicket($ticket);
- $this->em->persist($ticketFile);
- }
- $this->em->flush();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement