Артем

Артем

Был в сети 06 сентября 2025, 22:04
Заказы не принимаю
примерно так, сам не тестил
<?php

switch ($modx->event->name){
	case 'OnBtxBeforeSendLead':
		if (isset($params['CONTACT_ID']) && !empty($params['CONTACT_ID'])) return;

		$contact = $mbc->loadService('Contact');
		//поиск существующего контакта по email
		$response = $contact->getlist(['DATE_CREATE'=>'DESC'], ['TYPE_ID'=> 'CLIENT', 'EMAIL' => $params['EMAIL'][0]['VALUE']], ['ID', 'EMAIL']);
		if (!isset($response['error']) && !empty($response['result'])){
			$params['CONTACT_ID'] = $response['result'][0]['ID'];
		}
		else{
			//создание нового
			$response = $contact->add([
				'NAME' => $params['NAME'],
				'OPENED' =>'Y', 
				'ASSIGNED_BY_ID' => $mbc->config['assigned_by_id'],
				'TYPE_ID' => 'CLIENT',
				'SOURCE_ID' => 'WEB',
				'EMAIL' => [[
					'VALUE' => $params['EMAIL'][0]['VALUE'],
					'VALUE_TYPE' => 'HOME',
				]]
			], [
				'REGISTER_SONET_EVENT' => 'N'
			]);
			if (!isset($response['error']) && !empty($response['result'])){
				$params['CONTACT_ID'] = $response['result'];
			}
		}
		$values = & $modx->event->returnedValues;
		$values['params'] = $params;
		break;
}