Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.45 KB | None | 0 0
  1. use SymfonyComponentValidatorConstraints as Assert;
  2.  
  3. /**
  4. * @ORMColumn(type="string", length=255, unique=true)
  5. * @AssertFile(
  6. * maxSize = "1024k",
  7. * mimeTypes = {"application/pdf", "application/x-pdf"},
  8. * mimeTypesMessage = "Please upload a valid PDF")
  9. */
  10. private $file;
  11.  
  12. /**
  13. * @ORMManyToOne(targetEntity="AppEntityTicket", inversedBy="files")
  14. */
  15. private $ticket;
  16.  
  17. public function getFile(): ?string
  18. {
  19. return $this->file;
  20. }
  21.  
  22. public function setFile(string $file): self
  23. {
  24. $this->file = $file;
  25.  
  26. return $this;
  27. }
  28.  
  29. public function getTicket(): ?Ticket
  30. {
  31. return $this->ticket;
  32. }
  33.  
  34. public function setTicket(?Ticket $ticket): self
  35. {
  36. $this->ticket = $ticket;
  37.  
  38. return $this;
  39. }
  40.  
  41. use SymfonyComponentValidatorConstraints as Assert;
  42.  
  43. /**
  44. * @ORMOneToMany(targetEntity="AppEntityTicketFile", mappedBy="ticket")
  45. * @AssertValid()
  46. */
  47. private $files;
  48.  
  49. /**
  50. * @return Collection|TicketFile[]
  51. */
  52. public function getFiles(): Collection
  53. {
  54. return $this->files;
  55. }
  56.  
  57. public function addFile(TicketFile $file): self
  58. {
  59. if (!$this->files->contains($file)) {
  60. $this->files[] = $file;
  61. $file->setTicket($this);
  62. }
  63.  
  64. return $this;
  65. }
  66.  
  67. public function removeFile(TicketFile $file): self
  68. {
  69. if ($this->files->contains($file)) {
  70. $this->files->removeElement($file);
  71. // set the owning side to null (unless already changed)
  72. if ($file->getTicket() === $this) {
  73. $file->setTicket(null);
  74. }
  75. }
  76.  
  77. return $this;
  78. }
  79.  
  80. use SymfonyComponentFormExtensionCoreTypeTextareaType;
  81. use SymfonyComponentValidatorConstraintsLength;
  82. use SymfonyComponentFormExtensionCoreTypeFileType;
  83.  
  84. $builder
  85. ->add('description', TextareaType::class, [
  86. 'label' => 'Opis zgłoszenia',
  87. 'constraints' => new Length(['min' => 50]),
  88. ])
  89. ->add('files', FileType::class, [
  90. 'multiple' => true,
  91. 'label' => 'Załączniki',
  92. ])
  93. ->add('save', SubmitType::class);
  94.  
  95. public function addTicket(Request $request)
  96. {
  97. $form = $this->createForm(TicketType::class);
  98.  
  99. $form->handleRequest($request);
  100.  
  101. if ($form->isSubmitted() && $form->isValid()) {
  102. $this->ticketService->saveTicket($form->getData());
  103. return $this->redirectToRoute('add_ticket');
  104. }
  105.  
  106. return $this->render('user/add_ticket.html.twig', [
  107. 'form' => $form->createView(),
  108. ]);
  109. }
  110.  
  111. public function saveTicket($data, $user = null) {
  112. $statusNew = $this->em->getRepository(Status::class)->findOneBy(['id' => Status::STATUS_NEW]);
  113.  
  114. $ticket = new Ticket();
  115. $ticket
  116. ->setUser($user)
  117. ->setDescription($data['description'])
  118. ->setStatus($statusNew);
  119.  
  120. if ($user) {
  121. $ticket
  122. ->setUser($user)
  123. ->setProject($data['project'])
  124. ->setProjectName($data['project']->getName())
  125. ->setRequestEmail($user->getEmail());
  126. } else {
  127. $ticket
  128. ->setRequestEmail($data['requestEmail'])
  129. ->setProjectName($data['projectName']);
  130. }
  131.  
  132. $this->em->persist($ticket);
  133.  
  134. foreach ($data['files'] as $file) {
  135. $extension = $file->getClientOriginalExtension();
  136.  
  137. $filename = md5(uniqid()).'.'.$extension;
  138. $file->move('upload/ticketFiles/', $filename);
  139.  
  140. $ticketFile = new TicketFile();
  141. $ticketFile
  142. ->setFile($filename)
  143. ->setTicket($ticket);
  144. $this->em->persist($ticketFile);
  145. }
  146.  
  147. $this->em->flush();
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement