/**
  * Processing before redirecting
  * @param RedBeanModel $model
  */
 protected function beforeRedirect($model)
 {
     assert('$model instanceof RedBeanModel');
     $getData = GetUtil::getData();
     if ($this->getAction()->id == 'listViewMerge') {
         Yii::app()->gameHelper->muteScoringModelsOnSave();
         ListViewMergeUtil::processCopyRelationsAndDeleteNonPrimaryModelsInMerge($model, $getData);
         Yii::app()->gameHelper->unmuteScoringModelsOnSave();
     }
 }
 /**
  * Override sub-class if you need to set anything into the element object.
  */
 protected function resolveElementDuringFormLayoutRender(&$element)
 {
     ListViewMergeUtil::resolveElementDuringFormLayoutRenderForListViewMerge($element, 'ModelAttributeElementPreContentView', $this->selectedAccounts, $this->model, 'AccountModelAttributeAndElementDataToMergeItem');
 }
 public function testEmailCopyActivity()
 {
     $this->markTestSkipped();
     Yii::app()->user->userModel = User::getByUsername('super');
     $this->setFirstModel();
     $this->setSecondModel();
     $emailMessage = EmailMessageTestHelper::createDraftSystemEmail('Subject 1', Yii::app()->user->userModel);
     $this->assertTrue($emailMessage->save());
     $emailMessageId = $emailMessage->id;
     $emailMessage->forgetAll();
     $emailMessage = EmailMessage::getById($emailMessageId);
     $newSender = new EmailMessageSender();
     $newSender->fromAddress = $this->selectedModels[1]->primaryEmail->emailAddress;
     $newSender->fromName = strval($this->selectedModels[1]);
     $newSender->personsOrAccounts->add($this->selectedModels[1]);
     $emailMessage->sender = $newSender;
     $emailMessage->save();
     ListViewMergeUtil::processCopyEmailActivity($this->selectedModels[0], $this->selectedModels[1]);
     $emailMessage = EmailMessage::getById($emailMessageId);
     $this->assertEquals(strval($this->selectedModels[0]), $emailMessage->sender->fromName);
     $this->assertEquals('*****@*****.**', $emailMessage->sender->fromAddress);
     //For recipient
     $emailMessage = EmailMessageTestHelper::createDraftSystemEmail('Subject 2', Yii::app()->user->userModel);
     $this->assertTrue($emailMessage->save());
     $emailMessageId = $emailMessage->id;
     $emailMessage->forgetAll();
     $emailMessage = EmailMessage::getById($emailMessageId);
     $recipient = new EmailMessageRecipient();
     $recipient->toAddress = $this->selectedModels[1]->primaryEmail->emailAddress;
     $recipient->toName = strval($this->selectedModels[1]);
     $recipient->type = EmailMessageRecipient::TYPE_TO;
     $recipient->personsOrAccounts->add($this->selectedModels[1]);
     $emailMessage->recipients->add($recipient);
     $this->assertTrue($emailMessage->save());
     ListViewMergeUtil::processCopyEmailActivity($this->selectedModels[0], $this->selectedModels[1]);
     $emailMessage = EmailMessage::getById($emailMessageId);
     $recipients = $emailMessage->recipients;
     $this->assertCount(2, $recipients);
     $this->assertEquals(strval($this->selectedModels[0]), $recipients[1]->toName);
     $this->assertEquals('*****@*****.**', $recipients[1]->toAddress);
     $this->assertCount(1, $recipients[1]->personsOrAccounts);
 }
 protected function processResolveFormLayoutMetadataForOneColumnDisplay()
 {
     $modelClass = $this->modelClass;
     $viewClassName = $modelClass . 'sMergedEditAndDetailsView';
     $layoutMetadata = ListViewMergeUtil::resolveFormLayoutMetadataForOneColumnDisplay($viewClassName::getMetadata());
     $rows = $layoutMetadata['global']['panels'][0]['rows'];
     $modifiedElementsData = array();
     foreach ($rows as $row) {
         $modifiedElementsData[] = $row['cells'][0]['elements'][0];
     }
     if ($this->modelClass == 'Contact') {
         $this->assertEquals('title', $modifiedElementsData[0]['attributeName']);
         $this->assertEquals('DropDown', $modifiedElementsData[0]['type']);
         $this->assertEquals('firstName', $modifiedElementsData[1]['attributeName']);
         $this->assertEquals('Text', $modifiedElementsData[1]['type']);
         $this->assertEquals('lastName', $modifiedElementsData[2]['attributeName']);
         $this->assertEquals('Text', $modifiedElementsData[2]['type']);
     }
 }
 /**
  * Override sub-class if you need to set anything into the element object.
  */
 protected function resolveElementDuringFormLayoutRender(&$element)
 {
     if (!$element instanceof NullElement) {
         ListViewMergeUtil::resolveElementDuringFormLayoutRenderForListViewMerge($element, 'ModelAttributeElementPreContentView', $this->selectedContacts, $this->model, 'ContactModelAttributeAndElementDataToMergeItem');
     }
 }