Skip to content
Snippets Groups Projects
Unverified Commit 86d75e4b authored by Seamus Lee's avatar Seamus Lee Committed by GitHub
Browse files

Merge pull request #15516 from eileenmcnaughton/part_mult

[REF] basic extraction of sendMails functionality along with a small test extension
parents 4cef1bb7 d7ade6fe
Branches
Tags
No related merge requests found
......@@ -1511,6 +1511,8 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
* @param array $params
* Form values.
* @param int $contactID
*
* @throws \CiviCRM_API3_Exception
*/
public function processRegistration($params, $contactID = NULL) {
$session = CRM_Core_Session::singleton();
......@@ -1620,66 +1622,79 @@ class CRM_Event_Form_Registration extends CRM_Core_Form {
if ($this->_contributeMode != 'checkout' ||
$this->_contributeMode != 'notify'
) {
$isTest = FALSE;
if ($this->_action & CRM_Core_Action::PREVIEW) {
$isTest = TRUE;
}
$this->sendMails($params, $registerByID, $participantCount);
}
}
//handle if no additional participant.
if (!$registerByID) {
$registerByID = $this->get('registerByID');
}
$primaryContactId = $this->get('primaryContactId');
/**
* Send Mail to participants.
*
* @param $params
* @param $registerByID
* @param array $participantCount
*
* @throws \CiviCRM_API3_Exception
*/
private function sendMails($params, $registerByID, array $participantCount) {
$isTest = FALSE;
if ($this->_action & CRM_Core_Action::PREVIEW) {
$isTest = TRUE;
}
//build an array of custom profile and assigning it to template.
$additionalIDs = CRM_Event_BAO_Event::buildCustomProfile($registerByID, NULL,
$primaryContactId, $isTest, TRUE
);
//handle if no additional participant.
if (!$registerByID) {
$registerByID = $this->get('registerByID');
}
$primaryContactId = $this->get('primaryContactId');
//lets carry all participant params w/ values.
foreach ($additionalIDs as $participantID => $contactId) {
$participantNum = NULL;
if ($participantID == $registerByID) {
$participantNum = 0;
}
else {
if ($participantNum = array_search('participant', $participantCount)) {
unset($participantCount[$participantNum]);
}
}
//build an array of custom profile and assigning it to template.
$additionalIDs = CRM_Event_BAO_Event::buildCustomProfile($registerByID, NULL,
$primaryContactId, $isTest, TRUE
);
if ($participantNum === NULL) {
break;
//lets carry all participant params w/ values.
foreach ($additionalIDs as $participantID => $contactId) {
$participantNum = NULL;
if ($participantID == $registerByID) {
$participantNum = 0;
}
else {
if ($participantNum = array_search('participant', $participantCount)) {
unset($participantCount[$participantNum]);
}
}
//carry the participant submitted values.
$this->_values['params'][$participantID] = $params[$participantNum];
if ($participantNum === NULL) {
break;
}
//lets send mails to all with meanigful text, CRM-4320.
$this->assign('isOnWaitlist', $this->_allowWaitlist);
$this->assign('isRequireApproval', $this->_requireApproval);
//carry the participant submitted values.
$this->_values['params'][$participantID] = $params[$participantNum];
}
//lets send mails to all with meanigful text, CRM-4320.
$this->assign('isOnWaitlist', $this->_allowWaitlist);
$this->assign('isRequireApproval', $this->_requireApproval);
foreach ($additionalIDs as $participantID => $contactId) {
if ($participantID == $registerByID) {
//set as Primary Participant
$this->assign('isPrimary', 1);
foreach ($additionalIDs as $participantID => $contactId) {
if ($participantID == $registerByID) {
//set as Primary Participant
$this->assign('isPrimary', 1);
$customProfile = CRM_Event_BAO_Event::buildCustomProfile($participantID, $this->_values, NULL, $isTest);
$customProfile = CRM_Event_BAO_Event::buildCustomProfile($participantID, $this->_values, NULL, $isTest);
if (count($customProfile)) {
$this->assign('customProfile', $customProfile);
$this->set('customProfile', $customProfile);
}
}
else {
$this->assign('isPrimary', 0);
$this->assign('customProfile', NULL);
if (count($customProfile)) {
$this->assign('customProfile', $customProfile);
$this->set('customProfile', $customProfile);
}
//send Confirmation mail to Primary & additional Participants if exists
CRM_Event_BAO_Event::sendMail($contactId, $this->_values, $participantID, $isTest);
}
else {
$this->assign('isPrimary', 0);
$this->assign('customProfile', NULL);
}
//send Confirmation mail to Primary & additional Participants if exists
CRM_Event_BAO_Event::sendMail($contactId, $this->_values, $participantID, $isTest);
}
}
......
......@@ -214,9 +214,10 @@ class CRM_Event_Form_Registration_ConfirmTest extends CiviUnitTestCase {
/**
* Test for Tax amount for multiple participant.
*
* @throws \Exception
* @throws \CRM_Core_Exception
*/
public function testTaxMultipleParticipant() {
$mut = new CiviMailUtils($this);
$params = ['is_monetary' => 1, 'financial_type_id' => 1];
$event = $this->eventCreate($params);
CRM_Event_Form_Registration_Confirm::testSubmit([
......@@ -232,8 +233,6 @@ class CRM_Event_Form_Registration_ConfirmTest extends CiviUnitTestCase {
'first_name' => 'Participant1',
'last_name' => 'LastName',
'email-Primary' => 'participant1@example.com',
'scriptFee' => '',
'scriptArray' => '',
'additional_participants' => 2,
'payment_processor_id' => 0,
'bypass_payment' => '',
......@@ -286,7 +285,8 @@ class CRM_Event_Form_Registration_ConfirmTest extends CiviUnitTestCase {
],
],
]);
$this->callAPISuccessGetCount('Participant', [], 3);
$participants = $this->callAPISuccess('Participant', 'get', [])['values'];
$this->assertCount(3, $participants);
$contribution = $this->callAPISuccessGetSingle(
'Contribution',
[
......@@ -295,6 +295,8 @@ class CRM_Event_Form_Registration_ConfirmTest extends CiviUnitTestCase {
);
$this->assertEquals($contribution['tax_amount'], 40, 'Invalid Tax amount.');
$this->assertEquals($contribution['total_amount'], 440, 'Invalid Tax amount.');
$mailSent = $mut->getAllMessages();
$this->assertCount(3, $mailSent, 'Three mails should have been sent to the 3 participants.');
}
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment