• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/lib/form/schedule/violationform.php
  • Класс: BitrixTimemanFormScheduleViolationForm
  • Вызов: ViolationForm::configureFilterRules
public function configureFilterRules()
{
	return [

		(new FilterModifierCallbackModifier(
			'startEndNotifyUsers',
			'hoursPerDayNotifyUsers',
			'hoursPerPeriodNotifyUsers',
			'shiftTimeNotifyUsers',
			'editWorktimeNotifyUsers',
			'shiftCheckNotifyUsers'
		))
			->configureSkipOnArray(false)
			->configureCallback(function ($values) {
				if (!is_array($values))
				{
					return [];
				}
				$result = [];
				foreach ($values as $code)
				{
					if (!is_string($code))
					{
						continue;
					}
					if ($code === ViolationRulesTable::USERS_TO_NOTIFY_USER_MANAGER
						|| EntityCodesHelper::isUser($code)
					)
					{
						$result[] = $code;
					}
				}
				return $result;
			})
			->configureSkipOnError(true)
		,

		(new FilterValidatorRangeValidator(
			'useRelativeStartEndDay', 'useExactStartEndDay', 'useOffsetStartEndDay',
			'saveHoursForPeriodViolations', 'saveHoursPerDayViolations',
			'saveStartEndViolations', 'saveShiftDelayViolations',
			'saveEditWorktimeViolations', 'missedShiftStart')
		)
			->configureRange(['on', 1, 0, ''])
			->configureStrict(true)
			->configureSkipOnEmpty(true)
		,
		(new FilterModifierCallbackModifier('missedShiftStart'))
			->configureCallback(function ($value) {
				return $value === 'on' || $value === 1 ? ViolationRulesTable::MISSED_SHIFT_IS_TRACKED : ViolationRulesTable::MISSED_SHIFT_IS_NOT_TRACKED;
			})
			->configureSkipOnError(true)
		,
		(new FilterValidatorNumberValidator('maxWorkTimeLackForPeriod'))
			->configureDefaultErrorMessage('TM_VIOLATION_FORM_ERROR_PERIOD_TIME_LACK_ERROR')
			->configureIntegerOnly(true)
			->configureMin(-1)
		,
		(new FilterModifierCallbackModifier('maxWorkTimeLackForPeriod'))
			->configureSkipOnError(true)
			->configureSkipOnEmpty(true)
			->configureCallback(function ($value) {
				return $value * TimeDictionary::SECONDS_PER_HOUR;
			})
		,
		(new FilterValidatorNumberValidator('scheduleId', 'id'))
			->configureIntegerOnly(true)
			->configureMin(1)
		,
		(new FilterValidatorRegularExpressionValidator('entityCode'))
			->configurePattern("#[UD]{1}[R]{0,1}[1-9]+#")
		,
		(new FilterValidatorStringValidator(
			'maxExactStartFormatted',
			'minExactEndFormatted',
			'relativeStartFromFormatted',
			'relativeStartToFormatted',
			'relativeEndFromFormatted',
			'relativeEndToFormatted',
			'minDayDurationFormatted',
			'minOffsetEndFormatted',
			'maxOffsetStartFormatted',
			'maxAllowedToEditWorkTimeFormatted',
			'maxShiftStartDelayFormatted'
		))
		,
		(new FilterValidatorNumberValidator(
			'maxExactStart',
			'minExactEnd',
			'relativeStartFrom',
			'relativeStartTo',
			'relativeEndFrom',
			'relativeEndTo',
			'minOffsetEnd',
			'maxOffsetStart',
			'minDayDuration',
			'maxAllowedToEditWorkTime',
			'maxShiftStartDelay'
		))
			->configureIntegerOnly(true)
			->configureMin(-1)
		,
		(new FilterValidatorRegularExpressionValidator(
			'maxExactStartFormatted',
			'minExactEndFormatted',
			'relativeStartFromFormatted',
			'relativeStartToFormatted',
			'relativeEndFromFormatted',
			'relativeEndToFormatted',
			'minDayDurationFormatted',
			'minOffsetEndFormatted',
			'maxOffsetStartFormatted',
			'maxAllowedToEditWorkTimeFormatted',
			'maxShiftStartDelayFormatted'
		))
			->configurePattern('#^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]|--:--$#')
		,
		(new FilterModifierCallbackModifier('maxWorkTimeLackForPeriod'))
			->configureDefaultErrorMessage('TM_VIOLATION_FORM_ERROR_PERIOD_TIME_LACK_ERROR')
			->configureCallback(function ($value) {
				return $value === '' || $value === null ? -1 : $value;
			})
			->configureSkipOnEmpty(false)
			->configureSkipOnError(true)
		,
	];
}