/** * @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 testCreates() { $branch = $this->createBranch(); $reporter = $this->createReporter(); $assignee = $this->createAssignee(); $ticket = new Ticket(new UniqueId('unique_id'), new TicketSequenceNumber(null), self::TICKET_SUBJECT, self::TICKET_DESCRIPTION, $branch, $reporter, $assignee, new Source(Source::PHONE), new Priority(Priority::PRIORITY_LOW), new Status(Status::OPEN)); $this->assertEquals(new UniqueId('unique_id'), $ticket->getUniqueId()); $this->assertEquals('Subject', $ticket->getSubject()); $this->assertEquals('Description', $ticket->getDescription()); $this->assertEquals($branch, $ticket->getBranch()); $this->assertEquals('open', $ticket->getStatus()->getValue()); $this->assertEquals($reporter, $ticket->getReporter()); $this->assertEquals($assignee, $ticket->getAssignee()); $this->assertEquals(Source::PHONE, $ticket->getSource()->getValue()); $this->assertNull($ticket->getSequenceNumber()->getValue()); $this->assertNull($ticket->getKey()); }
public static function create(Branch $branch, Ticket $ticket) { return new TicketKey($branch->getKey(), $ticket->getSequenceNumber()->getValue()); }