/**
  * @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();
             }
         }
     }
 }