Your IP : 3.128.171.15


Current Path : /var/www/axolotl/data/www/nn.axolotls.ru/bitrix/modules/rpa/lib/model/
Upload File :
Current File : /var/www/axolotl/data/www/nn.axolotls.ru/bitrix/modules/rpa/lib/model/timelinetable.php

<?php

namespace Bitrix\Rpa\Model;

use Bitrix\Main\ORM;
use Bitrix\Main\Result;
use Bitrix\Main\Type\DateTime;

class TimelineTable extends ORM\Data\DataManager
{
	public static function getTableName(): string
	{
		return 'b_rpa_timeline';
	}

	public static function getMap(): array
	{
		return [
			(new ORM\Fields\IntegerField('ID'))
				->configurePrimary()
				->configureAutocomplete(),
			(new ORM\Fields\IntegerField('TYPE_ID'))
				->configureRequired(),
			(new ORM\Fields\IntegerField('ITEM_ID'))
				->configureRequired(),
			(new ORM\Fields\DatetimeField('CREATED_TIME'))
				->configureRequired()
				->configureDefaultValue(static function()
				{
					return new DateTime();
				}),
			(new ORM\Fields\IntegerField('USER_ID')),
			(new ORM\Fields\StringField('TITLE'))
				->configureSize(255),
			(new ORM\Fields\TextField('DESCRIPTION')),
			(new ORM\Fields\StringField('ACTION'))
				->configureSize(255),
			(new ORM\Fields\BooleanField('IS_FIXED'))
				->configureValues('N', 'Y')
				->configureRequired()
				->configureDefaultValue('N'),
			(new ORM\Fields\ArrayField('DATA')),
		];
	}

	public static function getObjectClass(): string
	{
		return Timeline::class;
	}

	public static function getListByItem(int $typeId, int $itemId, array $parameters = []): EO_Timeline_Collection
	{
		$listParameters = [
			'order' => [
				'CREATED_TIME' => 'DESC',
				'ID' => 'DESC',
			],
			'filter' => [
				'=TYPE_ID' => $typeId,
				'=ITEM_ID' => $itemId,
			],
		];

		if(isset($parameters['limit']))
		{
			$listParameters['limit'] = $parameters['limit'];
		}

		if(isset($parameters['offset']))
		{
			$listParameters['offset'] = $parameters['offset'];
		}

		return static::getList($listParameters)->fetchCollection();
	}

	public static function removeForItem(int $typeId, int $itemId): Result
	{
		$result = new Result();

		$list = static::getListByItem($typeId, $itemId);
		foreach($list as $timeline)
		{
			$deleteResult = $timeline->delete();
			if(!$deleteResult->isSuccess())
			{
				$result->addErrors($deleteResult->getErrors());
			}
		}

		return $result;
	}

	public static function removeByTypeId(int $typeId): Result
	{
		$result = new Result();

		$list = static::getList([
			'select' => ['ID'],
			'filter' => [
				'=TYPE_ID' => $typeId,
			]
		]);
		while($item = $list->fetch())
		{
			$deleteResult = static::delete($item['ID']);
			if(!$deleteResult->isSuccess())
			{
				$result->addErrors($deleteResult->getErrors());
			}
		}

		return $result;
	}
}