/**
  * @param string $subject
  * @param string $description
  * @param User $reporter
  * @param Priority $priority
  * @param Status $status
  * @param Source $source
  * @param OroUser|null $assignee
  */
 public function update($subject, $description, User $reporter, Priority $priority, Status $status, Source $source, OroUser $assignee = null)
 {
     $hasChanges = false;
     if ($this->subject !== $subject || $this->description !== $description || $this->reporter !== $reporter || $this->assignee != $assignee || $this->priority->getValue() !== $priority->getValue() || $this->status->notEquals($status) || $this->source->getValue() !== $source->getValue()) {
         $hasChanges = true;
     }
     $this->subject = $subject;
     $this->description = $description;
     $this->reporter = $reporter;
     $this->priority = $priority;
     $this->source = $source;
     $this->updatedAt = new \DateTime('now', new \DateTimeZone('UTC'));
     $this->processUpdateStatus($status);
     if (is_null($assignee)) {
         $this->processUnAssign();
     } else {
         $this->processAssign($assignee);
     }
     if ($hasChanges) {
         $this->raise(new TicketWasUpdated((string) $this->uniqueId, $this->subject, $this->description, (string) $this->reporter, (string) $this->priority, (string) $this->status, (string) $this->source));
     }
 }
 /**
  * @return string
  */
 public function getPriorityValue()
 {
     return $this->priority->getValue();
 }