- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/rest/externalchannel.php
- Класс: Bitrix\Crm\Rest\CCrmExternalChannelImportActivity
- Вызов: CCrmExternalChannelImportActivity::import
public function import($activity, &$resultList, &$fields)
{
$result = new Result();
$resultList = array(
'id'=> -1,
'process' => array(
'add' => false,
'upd' => false,
'error' => array()
)
);
/** @var CCrmExternalChannelImport $import */
$import = $this->import;
/** @var CCrmExternalChannelConnector $connector */
$connector = $import->getConnector();
if(($fields = $activity[CCrmExternalChannelImport::FIELDS]) && count($fields)>0)
{
$r = $this->checkFields($fields);
if($r->getErrors())
$result->addErrors($r->getErrors());
else
{
$res = $this->getEntity()->innerGetList(
array(),
array(
'ORIGIN_ID'=>$fields['ORIGIN_ID'],
'ORIGINATOR_ID' => $connector->getOriginatorId()
),
array('*'),
false,
$errors
);
if(!$res)
{
if(count($errors)>0)
$result->addError(new Error(implode('; ', $errors), 7008));
}
else
{
$errors = array();
$this->getEntity()->internalizeFields($fields, $this->getEntity()->getFieldsInfo());
$this->fillFields($fields, $activity);
if($r = $res->Fetch())
{
$resultUpdate = $this->getEntity()->innerUpdate($r['ID'], $fields, $errors);
if($resultUpdate !== false)
{
$resultList['id'] = (int)$r['ID'];
$resultList['process']['upd'] = true;
}
if(count($errors)>0)
$result->addError(new Error(implode('; ', $errors), 7009));
}
else
{
$id = $this->getEntity()->innerAdd($fields, $errors);
if($this->isValidID($id))
{
$this->registerActivityInChannel($id, $connector);
$resultList['id'] = $id;
$resultList['process']['add'] = true;
}
if(count($errors)>0)
$result->addError(new Error(implode('; ', $errors), 7010));
}
}
}
}
else
$result->addError(new Error("Activity fields is not defined.", 7011)) ;
return $result;
}