/** * @depends testResolveEmailAddressToContactIfEmailRelationAvailableForSentMessage */ public function testResolveContactToSenderOrRecipient() { $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $message1 = EmailMessageTestHelper::createArchivedUnmatchedReceivedMessage($super); $contact = new Contact(); $this->assertCount(0, $message1->sender->personsOrAccounts); ArchivedEmailMatchingUtil::resolveContactToSenderOrRecipient($message1, $contact); $this->assertTrue($message1->recipients->count() == 1); $this->assertTrue($message1->recipients->offsetGet(0)->personsOrAccounts[0]->isSame($super)); $this->assertTrue($message1->sender->personsOrAccounts[0]->isSame($contact)); $message1 = EmailMessageTestHelper::createArchivedUnmatchedSentMessage($super); $contact = new Contact(); $this->assertTrue($message1->recipients->count() == 1); $this->assertCount(0, $message1->recipients->offsetGet(0)->personsOrAccounts); ArchivedEmailMatchingUtil::resolveContactToSenderOrRecipient($message1, $contact); $this->assertTrue($message1->sender->personsOrAccounts[0]->isSame($super)); $this->assertTrue($message1->recipients->count() == 1); $this->assertTrue($message1->recipients->offsetGet(0)->personsOrAccounts[0]->isSame($contact)); }
protected static function attemptToMatchAndSaveLeadOrContact($emailMessage, $type, $emailMessageId) { assert('$type == "Contact" || $type == "Lead"'); assert('is_int($emailMessageId)'); if (isset($_POST[$type])) { if (isset($_POST['ajax']) && $_POST['ajax'] === strtolower($type) . '-inline-create-form-' . $emailMessageId) { $contact = new Contact(); $contact->setAttributes($_POST[$type][$emailMessageId]); $contact->validate(); $errorData = ZurmoActiveForm::makeErrorsDataAndResolveForOwnedModelAttributes($contact); echo CJSON::encode($errorData); Yii::app()->end(0, false); } else { $contact = new Contact(); $contact->setAttributes($_POST[$type][$emailMessageId]); if (!$contact->save()) { throw new FailedToSaveModelException(); } ArchivedEmailMatchingUtil::resolveContactToSenderOrRecipient($emailMessage, $contact); $emailMessage->folder = EmailFolder::getByBoxAndType($emailMessage->folder->emailBox, EmailFolder::TYPE_ARCHIVED); if (!$emailMessage->save()) { throw new FailedToSaveModelException(); } } } }