* @param array $params
* Form values.
* @param int $contactID
+ *
+ * @throws \CiviCRM_API3_Exception
*/
public function processRegistration($params, $contactID = NULL) {
$session = CRM_Core_Session::singleton();
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);
}
}
/**
* 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([
'first_name' => 'Participant1',
'last_name' => 'LastName',
'email-Primary' => 'participant1@example.com',
- 'scriptFee' => '',
- 'scriptArray' => '',
'additional_participants' => 2,
'payment_processor_id' => 0,
'bypass_payment' => '',
],
],
]);
- $this->callAPISuccessGetCount('Participant', [], 3);
+ $participants = $this->callAPISuccess('Participant', 'get', [])['values'];
+ $this->assertCount(3, $participants);
$contribution = $this->callAPISuccessGetSingle(
'Contribution',
[
);
$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.');
}
/**