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