/** * Get email which was specified in TO field, when ticket was created via EmailProcessing * * @param Ticket $ticket * @return array|null */ public function getEndpointByTicket(Ticket $ticket) { $qb = $this->_em->createQueryBuilder(); $qb->select("r.endpoint")->from($this->_entityName, 'r')->where($qb->expr()->eq('r.ticket', $ticket->getId()))->setMaxResults(1); try { $result = $qb->getQuery()->getResult(Query::HYDRATE_SINGLE_SCALAR); } catch (\Exception $e) { $result = null; } return $result; }
/** * @param Ticket $ticket * @param AbstractTicketEvent $event * @return array */ private function getMemberList(Ticket $ticket, AbstractTicketEvent $event) { $members = []; if ($ticket->getAssignee()) { $members[] = new User($ticket->getAssignee()->getId(), User::TYPE_ORO); } if ($event->getEventName() == 'ticketAssigneeWasChanged') { return $members; } $members[] = $ticket->getReporter(); return $members; }
/** * @ORM\PrePersist * @ORM\PreUpdate * @param Ticket $ticket * @param LifecycleEventArgs $event */ public function prePersistHandler(Ticket $ticket, LifecycleEventArgs $event) { if ($ticket->getSequenceNumber()->getValue()) { return; } $em = $event->getEntityManager(); $query = $em->createQuery("SELECT MAX(t.sequenceNumber) FROM DiamanteDeskBundle:Ticket t WHERE t.branch = :branchId")->setParameter('branchId', $ticket->getBranch()->getId()); $ticketSequenceNumberValue = $query->getSingleScalarResult(); $ticketSequenceNumberValue++; $ticketSequenceNumber = $ticket->getSequenceNumber(); $ref = new \ReflectionClass($ticketSequenceNumber); $property = $ref->getProperty(self::TICKET_SEQUENCE_NUMBER_FIELD_TO_UPDATE); $property->setAccessible(true); $property->setValue($ticketSequenceNumber, $ticketSequenceNumberValue); $property->setAccessible(false); }
public function testCreateWhenAssigneeIsNull() { $branch = $this->createBranch(); $reporter = $this->createReporter(); $ticket = new Ticket(new UniqueId('unique_id'), new TicketSequenceNumber(null), self::TICKET_SUBJECT, self::TICKET_DESCRIPTION, $branch, $reporter, null, new Source(Source::PHONE), new Priority(Priority::PRIORITY_LOW), new Status(Status::NEW_ONE)); $this->assertEquals('Subject', $ticket->getSubject()); $this->assertEquals('Description', $ticket->getDescription()); $this->assertEquals($branch, $ticket->getBranch()); $this->assertEquals('new', $ticket->getStatus()->getValue()); $this->assertEquals($reporter, $ticket->getReporter()); $this->assertNull($ticket->getAssignee()); $this->assertEquals(Source::PHONE, $ticket->getSource()->getValue()); }
/** * @test */ public function thatTicketCreatesWithAttachments() { $branchId = 1; $assigneeId = 3; $reporter = $this->createReporter(); $this->ticketBuilder->expects($this->once())->method('setSubject')->with(self::SUBJECT)->will($this->returnValue($this->ticketBuilder)); $this->ticketBuilder->expects($this->once())->method('setDescription')->with(self::DESCRIPTION)->will($this->returnValue($this->ticketBuilder)); $this->ticketBuilder->expects($this->once())->method('setBranchId')->with($branchId)->will($this->returnValue($this->ticketBuilder)); $this->ticketBuilder->expects($this->once())->method('setReporter')->with((string) $reporter)->will($this->returnValue($this->ticketBuilder)); $this->ticketBuilder->expects($this->once())->method('setAssigneeId')->with($assigneeId)->will($this->returnValue($this->ticketBuilder)); $this->ticketBuilder->expects($this->once())->method('setSource')->with(Source::EMAIL)->will($this->returnValue($this->ticketBuilder)); $this->ticketBuilder->expects($this->once())->method('build')->will($this->returnValue($this->ticket)); $this->attachmentManager->expects($this->once())->method('createNewAttachment')->with($this->equalTo(self::DUMMY_FILENAME), $this->equalTo(self::DUMMY_FILE_CONTENT), $this->equalTo($this->ticket)); $this->ticketRepository->expects($this->once())->method('store')->with($this->equalTo($this->ticket)); $messageReference = new MessageReference(self::DUMMY_MESSAGE_ID, $this->ticket); $this->messageReferenceRepository->expects($this->once())->method('store')->with($this->equalTo($messageReference)); $this->ticket->expects($this->atLeastOnce())->method('getRecordedEvents')->will($this->returnValue(array())); $this->messageReferenceService->createTicket(self::DUMMY_MESSAGE_ID, $branchId, self::SUBJECT, self::DESCRIPTION, $reporter, $assigneeId, $this->attachments()); }
/** * @param Ticket $ticket * @return array */ private function getSuccessSaveResponse(Ticket $ticket) { return $this->get('oro_ui.router')->redirectAfterSave(['route' => 'diamante_ticket_update', 'parameters' => ['key' => (string) $ticket->getKey()]], ['route' => 'diamante_ticket_view', 'parameters' => ['key' => (string) $ticket->getKey()]]); }
/** * @param Ticket $ticket * @param $command */ protected function updateTicketStatus(Ticket $ticket, $command) { $status = new Status($command->ticketStatus); if (false === $ticket->getStatus()->equals($status)) { $ticket->updateStatus($status); $this->registry->getManager()->persist($ticket); } }
/** * @param Ticket $ticket * @param User $user * @return null|object */ public function findOne(Ticket $ticket, User $user) { return $this->findOneBy(['userType' => $user, 'ticket' => $ticket->getId()]); }
/** * @param Ticket $ticket */ private function removePrivateComments(Ticket $ticket) { $user = $this->authorizationService->getLoggedUser(); if (!$user instanceof ApiUser) { return; } $comments = $ticket->getComments(); foreach ($comments as $comment) { if ($comment->isPrivate()) { $comments->removeElement($comment); } } }
public function delete() { $this->raise(new CommentWasDeleted($this->ticket->getUniqueId(), $this->ticket->getSubject(), $this->content, $this->private)); }
public static function create(Branch $branch, Ticket $ticket) { return new TicketKey($branch->getKey(), $ticket->getSequenceNumber()->getValue()); }
/** * Return watchers list * * @param Ticket $ticket * * @return array */ public function getWatchers(Ticket $ticket) { return $ticket->getWatcherList()->getValues(); }
/** * @param Comment $comment * @param Ticket $ticket */ private function dispatchEvents(Comment $comment, Ticket $ticket = null) { foreach ($comment->getRecordedEvents() as $event) { $this->dispatcher->dispatch($event->getEventName(), $event); } if ($ticket) { foreach ($ticket->getRecordedEvents() as $event) { $this->dispatcher->dispatch($event->getEventName(), $event); } } $this->notificationDeliveryManager->deliver($this->notifier); }
/** * @param Ticket $ticket * @return UpdateStatusCommand */ public function createUpdateStatusCommandForView(Ticket $ticket) { $command = new UpdateStatusCommand(); $command->ticketId = $ticket->getId(); $command->status = $ticket->getStatus(); return $command; }
/** * @test * @expectedException \RuntimeException * @expectedExceptionMessage Attachment loading failed. Ticket has no such attachment. */ public function thatAttachmentRemovingThrowsExceptionWhenTicketHasNoAttachment() { $ticket = new Ticket(new UniqueId('unique_id'), new TicketSequenceNumber(12), self::SUBJECT, self::DESCRIPTION, $this->createBranch(), $this->createReporter(), $this->createAssignee(), new Source(Source::PHONE), new Priority(Priority::PRIORITY_LOW), new Status(Status::CLOSED)); $ticket->addAttachment($this->attachment()); $this->ticketRepository->expects($this->once())->method('get')->with($this->equalTo(self::DUMMY_TICKET_ID))->will($this->returnValue($ticket)); $this->authorizationService->expects($this->once())->method('isActionPermitted')->with($this->equalTo('EDIT'), $this->equalTo($ticket))->will($this->returnValue(true)); $removeTicketAttachmentCommand = new RemoveTicketAttachmentCommand(); $removeTicketAttachmentCommand->ticketId = self::DUMMY_TICKET_ID; $removeTicketAttachmentCommand->attachmentId = self::DUMMY_ATTACHMENT_ID; $this->ticketService->removeAttachmentFromTicket($removeTicketAttachmentCommand); }
/** * @param Notification $notification * @param Ticket $ticket * * @return string */ private function getFormattedUserName(Notification $notification, Ticket $ticket) { $author = $notification->getAuthor(); if (is_null($author)) { $reporterId = $ticket->getReporter()->getId(); $user = $this->diamanteUserRepository->get($reporterId); } else { $user = $this->getUserDependingOnType($author); } $name = $this->nameFormatter->format($user); if (empty($name)) { $format = $this->nameFormatter->getNameFormat(); $name = str_replace(array('%first_name%', '%last_name%', '%prefix%', '%middle_name%', '%suffix%'), array($user->getFirstName(), $user->getLastName(), '', '', ''), $format); } $name = preg_replace('/\\s+/', ' ', $name); return trim($name); }
/** * @param Ticket $ticket */ private function removePrivateComments(Ticket $ticket) { $user = $this->authorizationService->getLoggedUser(); if (!$user instanceof ApiUser) { return; } $comments = $ticket->getComments(); $commentsList = $comments->toArray(); $comments->clear(); foreach ($commentsList as $comment) { if (!$comment->isPrivate()) { $comments->add($comment); } } $comments->takeSnapshot(); }