/** * Create EmailUser entity object * * @param string $subject The email subject * @param string $from The FROM email address, * for example: john@example.com or "John Smith" <john@example.c4m> * @param string|string[]|null $to The TO email address(es). * Example of email address see in description of $from parameter * @param \DateTime $sentAt The date/time when email sent * @param \DateTime $receivedAt The date/time when email received * @param \DateTime $internalDate The date/time an email server returned in INTERNALDATE field * @param integer $importance The email importance flag. * Can be one of *_IMPORTANCE constants of Email class * @param string|string[]|null $cc The CC email address(es). * Example of email address see in description of $from parameter * @param string|string[]|null $bcc The BCC email address(es). * Example of email address see in description of $from parameter * @param User|null $owner Owner of the email * @param OrganizationInterface|null $organization * * @return EmailUser * * @SuppressWarnings(ExcessiveParameterList) */ public function emailUser($subject, $from, $to, $sentAt, $receivedAt, $internalDate, $importance = Email::NORMAL_IMPORTANCE, $cc = null, $bcc = null, $owner = null, $organization = null) { $emailUser = new EmailUser(); $email = $this->email($subject, $from, $to, $sentAt, $internalDate, $importance, $cc, $bcc); $emailUser->setReceivedAt($receivedAt); $emailUser->setEmail($email); if ($owner !== null) { $emailUser->setOwner($owner); } if ($organization !== null) { $emailUser->setOrganization($organization); } elseif ($owner !== null) { $emailUser->setOrganization($owner->getOrganization()); } $this->batch->addEmailUser($emailUser); return $emailUser; }
public function testGetterSetter() { $emailUser = new EmailUser(); $email = new Email(); $owner = new User(); $organization = new Organization(); $folder = new EmailFolder(); $receivedAt = new DateTime('now'); $emailUser->setEmail($email); $emailUser->setOrganization($organization); $emailUser->addFolder($folder); $emailUser->setSeen(true); $emailUser->setOwner($owner); $emailUser->setReceivedAt($receivedAt); $this->assertEquals($email, $emailUser->getEmail()); $this->assertEquals($organization, $emailUser->getOrganization()); $this->assertEquals($folder, $emailUser->getFolders()->first()); $this->assertEquals(true, $emailUser->isSeen()); $this->assertEquals($owner, $emailUser->getOwner()); $this->assertEquals($receivedAt, $emailUser->getReceivedAt()); $this->assertNull($emailUser->getCreatedAt()); }
/** * @param Email $email * @param array $folders * * @return EmailUser[] */ protected function processFolders(Email $email, $folders) { $apiOrigin = $this->getEmailOrigin(); $emailUserList = []; foreach ($folders as $item) { $origin = $item['origin'] ?: $this->getEmailOrigin(); if ($origin->getId() && $origin->getId() !== $apiOrigin->getId()) { continue; } $folder = $origin->getFolder($item['type'], $item['fullName']); if (!$folder) { $folder = $this->emailEntityBuilder->folder($item['type'], $item['fullName'], $item['name']); $origin->addFolder($folder); } else { $this->emailEntityBuilder->setFolder($folder); } $emailUser = new EmailUser(); $emailUser->setEmail($email); $emailUser->setOwner($apiOrigin->getOwner()); $emailUser->setOrganization($apiOrigin->getOrganization()); $emailUser->setFolder($folder); $emailUserList[] = $emailUser; } return $emailUserList; }