crm-bij1migratie/CRM/Bij1migratie/Activiteit.php

68 lines
2.5 KiB
PHP

<?php
use CRM_Bij1migratie_ExtensionUtil as E;
/**
* Class voor BIJ1 migratie activiteit verwerking
*
* @author Erik Hommel (CiviCooP) <erik.hommel@civicoop.org>
* @date 4 Jan 2022
* @license AGPL-3.0
*/
class CRM_Bij1migratie_Activiteit {
private $_gereedActivityStatusId;
/**
* Constructor CRM_Bij1migratie_Activiteit
*/
public function __construct() {
$query = "SELECT cov.value
FROM civicrm_option_group cog JOIN civicrm_option_value cov ON cog.id = cov.option_group_id
WHERE cog.name = %1 AND cov.name = %2";
$this->_gereedActivityStatusId = (int) CRM_Core_DAO::singleValueQuery($query, [
1 => ["activity_status", "String"],
2 => ["Completed", "String"],
]);
}
/**
* Method om een lidmaatschapsaanvraag aan te maken
*
* @param int $contactId
* @param DateTime $aanvraagDatum
* @param string|NULL $frequentie
* @throws API_Exception
* @throws \Civi\API\Exception\UnauthorizedException
*/
public function maakLidmaatschapsaanvraag(int $contactId, DateTime $aanvraagDatum, string $frequentie = NULL) {
if ($contactId) {
$contacts = \Civi\Api4\Contact::get()
->addSelect('first_name', 'last_name', 'email.email')
->addJoin('Email AS email', 'LEFT', ['id', '=', 'email.contact_id'])
->addWhere('id', '=', $contactId)
->addWhere('email.is_primary', '=', TRUE)
->execute();
$contactData = $contacts->first();
$activity = \Civi\Api4\Activity::create()
->addValue('activity_type_id', Civi::service('bij1Algemeen')->getLidmaatschapsaanvraagTypeId())
->addValue('subject', 'Lidmaatschapsaanvraag aangemaakt bij migratie naar CiviCRM')
->addValue('activity_date_time', $aanvraagDatum->format('Y-m-d'))
->addValue('status_id', $this->_gereedActivityStatusId)
->addValue('target_contact_id', [$contactId])
->addValue('source_contact_id', 1);
if (isset($contactData['first_name'])) {
$activity->addValue('lidmaatschapsaanvraag_data.voornaam', $contactData['first_name']);
}
if (isset($contactData['last_name'])) {
$activity->addValue('lidmaatschapsaanvraag_data.achternaam', $contactData['last_name']);
}
if (isset($contactData['email.email'])) {
$activity->addValue('lidmaatschapsaanvraag_data.email', $contactData['email.email']);
}
if ($frequentie) {
$activity->addValue('lidmaatschapsaanvraag_data.frequentie', $frequentie);
}
$activity->execute();
}
}
}