Epass.Integration.Sigur 1.0.22

Подключение:

Метод services.AddSigur(SigurOptions sigurOptions);
где sigurOptions - объект SigurOptions

{  
   BaseUrl = configuration.GetValue<string>("SigurCreditial:BaseUrl"),
   Login = configuration.GetValue<string>("SigurCreditial:Login"),
   Password = configuration.GetValue<string>("SigurCreditial:Password"),   
   ShowSensitiveDataInPlaintext = configuration.GetValue<bool>("SigurCredential:ShowSensitiveDataInPlaintext"),
   ThresholdMinutes = configuration.GetValue<int>("SigurCredential:ThresholdMinutes"),
};


  • BaseUrl - базовый адрес API Сигур. В случае с сервером 10.54.1.151 имеет значение "http://10.54.1.151:9500",
  • Login - имя пользователя API Сигур. В случае с сервером 10.54.1.151 имеет значение "swagger",
  • Password - пароль пользователя API СИгур. В случае с сервером 10.54.1.151 имеет значение "swagger",
  • ShowSensitiveDataInPlaintext - флаг, указывающий, следует ли отображать чувствительные данные в открытом тексте. По умолчанию имеет значение false,
  • ThresholdMinutes - время в минутах, через которое будет создан новый токен. По умолчанию имеет значение 2 минуты.
/// Примеры использования: 
Получение службы - точки входа. 
Метод: services.AddSigur(SigurOptions sigurOptions);
///Пример вызова: 
var sigurService = scope.ServiceProvider.GetRequiredService<ISigurIntergrationService>();

Модуль сотрудники EmployeesModule

1.1. Получение всех сотрудников

Метод:

Task<IEnumerable<Employee>> GetAllEmployees();

Описание: Асинхронно получает список всех сотрудников, к которым не было применено средств удаления (архивации). Вызов метода без фильтров возвращает всех доступных сотрудников.

Возвращает: Коллекцию Employee, либо пустую коллекцию.

Исключения:

  • SigurIntegrationException: Возникает при ошибке взаимодействия с внешней системой Sigur.

Примеры вызова:

var emps = await sigurService.EmployeesModule.GetAllEmployees();

1.2. Получение сотрудников по фильтру

Метод:

Task<IEnumerable<Employee>> GetFilteredEmployees(IEmployeeFilterDto filter);

Описание: В текущей реализации метод GetFilteredEmployees НЕ применяет фильтр, который передаётся в параметрах. Он возвращает список всех сотрудников, как GetAllEmployees, и в логах указывает, что фильтр не используется. Это может быть устаревшим или неполным методом.

Параметры:

  • filter: Объект IEmployeeFilterDto, содержащий параметры фильтрации (в текущей реализации игнорируется).

Возвращает: Коллекцию Employee, либо null в случае ошибки или отсутствия данных.

Исключения:

  • ArgumentNullException: Если filter равен null.

Примеры вызова:

См. пример для GetAllEmployees, так как фильтр не применяется.

1.3. Получение сотрудника по ID

Метод:

Task<Employee> GetEmployeeById(int empId);

Описание: Асинхронно получает сотрудника по его уникальному идентификатору.

Параметры:

  • empId: Уникальный идентификатор сотрудника (должен быть больше 0).

Возвращает: Объект типа Employee, если сотрудник найден.

Исключения:

  • SigurIntegrationException: Если сотрудник не найден или возникла ошибка взаимодействия с API.
  • ArgumentException: Если empId меньше или равен 0. Пример вызова:
var foundEmpRecord = await sigurService.EmployeesModule.GetEmployeeById(122);

1.4. Обновление сотрудника

Метод:

Task<Employee> UpdateEmployee(Employee employee);

Описание: Асинхронно обновляет данные существующего сотрудника в системе Sigur.

Параметры:

  • employee: Объект Employee с обновлёнными данными. employee.SigurId должен быть больше 0.

Возвращает: Обновлённый объект Employee.

Исключения:

  • SigurIntegrationException: Если обновление не удалось (например, сотрудник не найден, ошибка маппинга).

  • ArgumentException: Если employee.SigurId меньше или равен 0.

Пример вызова:

var updatedEmpRecord = await sigurService.EmployeesModule.UpdateEmployee(currentEmp);

Получение сотрудников по табельному номеру

Метод:

Task<IReadOnlyCollection<Employee>> GetByTabNumber(string tabNumber);

Описание: Возвращает коллекцию сотрудников, соответствующих указанному табельному номеру.

Параметры:

  • tabNumber: Табельный номер сотрудника (не может быть null или пустой строкой).

Возвращает: Коллекцию Employee, соответствующих заданному табельному номеру. Если сотрудники не найдены, возвращается пустая коллекция.

Исключения:

  • SigurIntegrationException: Возникает при ошибке взаимодействия с внешней системой Sigur.

  • ArgumentException: Если tabNumber является null или пустой строкой. Пример вызова:

var employeesByTabNumber = await sigurService.EmployeesModule.GetByTabNumber("777");

1.6. Получение карт доступа сотрудника (устаревшее)

Метод:

[Obsolete("Используйте метод GetEmployeeCards вместо TryGetEmployeeCards.")]
Task<IEnumerable<PassCard>> TryGetEmployeeCards(Employee employee);

Описание: Возвращает коллекцию объектов PassCard — карт доступа, привязанных к указанному сотруднику. Проверяет наличие записи сотрудника в Sigur.

Параметры:

  • employee: Объект Employee. employee.SigurId должен быть больше 0. Возвращает: Коллекцию PassCard, либо пустую коллекцию, если у сотрудника нет карт.

Исключения:

  • SigurIntegrationException: Если сотрудник не найден или возникла ошибка взаимодействия с API.

  • ArgumentException: Если employee.SigurId меньше или равен 0.

1.7. Получение карт доступа сотрудника (актуальное)

Метод:

Task<IEnumerable<PassCard>> GetEmployeeCards(Employee employee);

Описание: Возвращает коллекцию всех карт доступа, привязанных к указанному сотруднику в системе Sigur. Проверяет корректность переданного сотрудника.

Параметры:

  • employee: Объект Employee. employee.SigurId должен быть больше 0. Возвращает: Коллекцию PassCard, связанную с сотрудником. Если у сотрудника нет карт, возвращается пустая коллекция.

Исключения:

  • SigurIntegrationException: Если сотрудник не найден в системе Sigur или возникла ошибка маппинга.

  • ArgumentException: Если employee равен null или employee.SigurId не задан или меньше/равен 0.

Пример вызова:

var empCards = await sigurService.EmployeesModule.GetEmployeeCards(emp);

1.8. Увольнение сотрудника

Метод:

Task<Employee> TryFiredEmployee(Employee employee);

Описание: Асинхронно пытается уволить указанного сотрудника. Производит проверку наличия записи в Sigur, проверяет наличие пропусков (карт доступа) и удаляет их при наличии. Все действия логируются.

Параметры:

  • employee: Объект Employee. employee.SigurId должен быть больше 0.

Возвращает: Обновлённый объект уволенного сотрудника типа Employee.

Исключения:

  • SigurIntegrationException: Если сотрудник не найден или удаление карт не удалось.
  • ArgumentException: Если employee.SigurId меньше или равен 0.
  • ArgumentNullException: Если employee равен null.

Пример вызова:

Employee emp = await sigurService.EmployeesModule.GetEmployeeById(130);
Employee toFiredEmp = await sigurService.EmployeesModule.TryFiredEmployee(emp);

1.9. Создание нового сотрудника

Метод:

Task<Employee> CreateEmployee(EmployeeBase employee, Department department, Position? position = null, IEnumerable<AdmissionDocument>? admissionDocuments = null);

Описание: Асинхронно создаёт нового сотрудника с указанием базовых данных, департамента и, опционально, должности и допускных документов.

Параметры:

  • employee: Объект EmployeeBase, содержащий базовые данные о сотруднике.
  • department: Объект Department, представляющий департамент, в который будет добавлен сотрудник.
  • position: Опциональный объект Position, представляющий должность сотрудника.
  • admissionDocuments: Опциональная коллекция AdmissionDocument, представляющая допускные документы. Возвращает: Созданный объект Employee.

Исключения:

  • ArgumentNullException: Если employee или department равны null.
  • SigurIntegrationException: Если создание не удалось (например, ошибка API). Пример вызова:
//Создание базового объекта Сотрудник
var newEmp = new EmployeeBase() { Name = "Сергей Сергеевич Сергеев", ... };

//Получение профессии системного администратора
var sysPos = await sigurService.PositionsModule.GetPositionsByName("Системный администратор").FirstOrDefaultAsync();
//Получение подразделения ФТ-Софт
var ftDep = await sigurService.DepartmentModule.GetDepartmentsByName("ООО \"ФТ-СОФТ\"").FirstOrDefaultAsync();
//Вставка нового сотрудника
var insertNewEmpResult = await sigurService.EmployeesModule.CreateEmployee(employee: newEmp, dep: ftDep, position: sysPos);

1.10. Удаление сотрудника

Метод:

Task<bool> DeleteEmployee(Employee employee);

Описание: Асинхронно удаляет сотрудника из системы Sigur. На самом деле, в системе запись помечается как удалённая (архивируется).

Параметры:

  • employee: Объект Employee. employee.SigurId должен быть больше 0.

Возвращает: true, если запись найдена и успешно удалена, в противном случае false.

Исключения:

  • ArgumentException: Если employee.SigurId меньше или равен 0. Пример вызова:
var deleteEmpResult = await sigurService.EmployeesModule.DeleteEmployee(emp);

1.11. Блокировка сотрудника

Метод:

Task<bool> Block(Employee employee);

Описание: Асинхронно блокирует указанного сотрудника в системе контроля доступа. Заблокированный сотрудник не сможет проходить через точки доступа.

Параметры:

  • employee: Объект Employee. employee.SigurId должен быть больше 0 и employee.Name не должен быть пустым.

Возвращает: true, если запись найдена и успешно заблокирована, в противном случае false.

Исключения:

  • ArgumentException: Если employee.SigurId меньше или равен 0. Пример вызова:
var blockEmpResult = await sigurService.EmployeesModule.Block(emp);

1.12. Разблокировка сотрудника

Метод:

Task<bool> UnBlock(Employee employee);

Описание: Асинхронно разблокирует указанного сотрудника в системе контроля доступа.

Параметры:

  • employee: Объект Employee. employee.SigurId должен быть больше 0 и employee.Name не должен быть пустым. Возвращает: true, если запись найдена и успешно разблокирована, в противном случае false.

Исключения:

-ArgumentException: Если employee.SigurId меньше или равен 0. Пример вызова:

var unBlockEmpResult = await sigurService.EmployeesModule.UnBlock(emp);

1.13. Кастомная архивация сотрудника

Метод:

Task Archive(Employee employee, Department archiveDepartment, string? initiator = null);

Описание: Архивирует указанного сотрудника, перемещая его в заданное архивное подразделение, обновляя описание с информацией об архивации и блокируя все его активные карты доступа.

Параметры:

  • employee: Сотрудник, подлежащий архивации. employee.SigurId должен быть больше 0.
  • archiveDepartment: Архивное подразделение, в которое перемещается сотрудник. archiveDepartment.SigurId должен быть больше 0.
  • initiator: Инициатор операции архивации. Если не указан, используется значение "System". Возвращает: Task, представляющую асинхронную операцию.

Исключения:

  • ArgumentNullException: Если employee, archiveDepartment равны null, или archiveDepartment.SigurId не задан.
  • ArgumentOutOfRangeException: Если employee.SigurId, employee.DepartmentId или archiveDepartment.SigurId меньше или равны 0.
  • SigurIntegrationException: При ошибке взаимодействия с внешней системой Sigur.

Пример вызова:

var employee = await sigurService.EmployeesModule.GetEmployeeById(123);
var archiveDept = await sigurService.DepartmentModule.GetDepartmentById(999); 
await sigurService.EmployeesModule.Archive(employee, archiveDept, "AdminUser");

1.14 Получение работников методом пагинации.

Метод:

 Task<IReadOnlyCollection<Employee>> GetAllEmployeesPaging(int offset, int limit);

Описание: Асинхронно получает список сотрудников с поддержкой пагинации через параметры смещения (offset) и ограничения количества записей (limit). Метод предназначен для эффективной загрузки больших объёмов данных без превышения лимитов API.

Параметры:

  • offset: Стартовый индекс (смещение) в общем списке сотрудников. Должен быть неотрицательным целым числом.
  • limit: Максимальное количество сотрудников, возвращаемых за один запрос. Допустимый диапазон — от 0 до 3000. Если передано значение вне этого диапазона, оно автоматически корректируется до 3000.

Возвращает:

  • Task<IReadOnlyCollection<Employee>> — асинхронную задачу, содержащую только для чтения коллекцию сотрудников.
  • Если внешний API возвращает пустой или null ответ, метод возвращает пустую коллекцию (без ошибок).

Исключения:

  • SigurIntegrationException: Возникает, если параметр offset имеет отрицательное значение. Внутри исключения содержится оригинальное исключение ArgumentOutOfRangeException.

Примечания:

  • Метод автоматически логирует начало операции, успешное завершение (с указанием количества полученных записей) и предупреждения о некорректных входных данных.
  • Рекомендуется использовать последовательные вызовы с увеличением offset на значение limit для полной итерации по всем сотрудникам.

Пример вызова:

// Получить первые 100 сотрудников
var firstPage = await sigurService.EmployeesModule.GetAllEmployeesPaging(offset: 0, limit: 100);

// Получить следующую страницу (сотрудники с 100 по 199)
var secondPage = await sigurService.EmployeesModule.GetAllEmployeesPaging(offset: 100, limit: 100);

1.15 Получения значения количества сотрудников

Метод:

Task<int> GetEmployeesCount();

Возвращает: целочисленное значение количества сотрудников в Сигур.

Исключения:

  • SigurSystemException: в случае ошибке запроса, недоступности ресурса.

Пример вызова:

var empsCount = await sigurService.EmployeesModule.GetEmployeesCount();

2. Модуль Отделы, организации DepartmentModule

2.1. Получение всех отделов, организаций из Сигура.

Возвращает коллекцию объектов класса Department или null случае отсутствия в Сигуре каких либо отделов или в случае ошибки.

Метод:

GetAllDepartments();

Пример вызова:

var allDepsFromSigur = await sigurService.DepartmentModule.GetAllDepartments();

2.2. Получение отделов по наименованию.

Возвращает коллекцию объектов класса Department или null случае отсутствия в Сигуре каких либо отделов или в случае ошибки.

Метод:

GetDepartmentsByName(string predicate);

, где predicate - наименование организации

Пример вызова:

var kitDEps= await sigurService.DepartmentModule.GetDepartmentsByName("ООО \"КИТ\"");

2.3. Получение отдела по ИД.

Возвращает объект класса Department или null случае отсутствия в Сигуре каких либо отделов или в случае ошибки.

Метод:

GetDepartmentId(int departamentId);

, где departamentId обязан быть больше 0.

Пример использования:

var someDep=  await sigurService.DepartmentModule.GetDepartmentId(124);

2.4. Удаление отделов, подразделений.

Описание: На самом деле записи никуда не удаляются, а комментируются.

Возвращает коллекцию удаленных объектов класса Department или null случае отсутствия в Сигуре отделов или в случае ошибки.

Метод:

DepartmentModule.DeleteDepartments(IEnumerable<Department?> departaments);

, где departaments - коллекция объектов записей в Сигуре, подлежащих удалению.

Пример использования:

var depsToDelete = await sigurService.DepartmentModule.DeleteDepartments(kitDEps);

2.5. Обновление информации по отделам, организациям

Возвращает коллекцию обновленных отделов класса Department или null случае отсутствия в Сигуре отделов или в случае ошибки.

Метод

UpdateDepartments(IEnumerable<Department> departaments);

, где departaments обязаны иметь Name, SigurId

Пример использования:

var updatedDeps = await await sigurService.DepartmentModule.UpdateDepartments(depsToUpdated);

2.6. Создание отдела, организации.

Возвращает объект класса Department или null случае возникновения ошибки.

Метод:

AddDepartment (DepartmentBase department);

, где department объект класса DepartmentBase обязан содержать Name, ParentId.

Пример использования:

var newDepDomain =  await sigurService.DepartmentModule.AddDepartment(newDep);

2.7. Получение количества подходящих под условия фильтра отделов

Возвращает целочисленное значение найденных записей или 0 случае отсутствия в Сигуре отделов или в случае ошибки.

Метод:

GetFilteredDepartmentsCount(IDepartmentFilterDto filter);

, где
filter - фильтр интерфейса IDepartmentFilterDto:
ByLikeName - похожие наименования,
ByParientID - по ИД записи родителя.

По умолчанию иерархическая рекурсия отключена. Можно активировать в DepartamentFilterFactory.Create(..., isRecursive:true);

Пример использования: Фабрика: EmployeeFilterFactory.Create();

//Формируем фильтрацию
var filter = DepartamentFilterFactory.Create(DeparmentFilterType.ByLikeName, "ООО \"КИТ\"", false);

var allSomeKitDepsCount = await sigurService.DepartmentModule.GetFilteredDepartmentsCount(filter);

2.8. Получение записей отделов по фильтру

Описание: Возвращает коллекцию объектов класса Department или null в случае отсутствия в Сигуре отделов или в случае ошибки.

Метод:

GetFilteredDepartaments(IDepartmentFilterDto filter)

, где filter - фильтр интерфейса IDepartmentFilterDto:
ByLikeName - похожие наименования,
ByParientID - по ИД записи родителя

Пример использования:

//Формируем фильтрацию
var filter = DepartamentFilterFactory.Create(DeparmentFilterType.ByParientID, 133);
var allChildKitDeps = await sigurService.DepartmentModule.DeleteDepartments(filter);

2.9 Получение значения количества подразделений

Метод:

Task<int> GetDepartmentsCount()

Возвращает: целочисленное значение количества записей подразделений.

Исключения:

  • SigurSystemException : В случае ошибки доступа

Пример вызова:

var depsCount = await sigurService.DepartmentModule.GetDepartmentsCount();

3. Модуль Карт доступа PassCardModule (карты доступа, пропуска)

3.1. Получение всех записей карт доступа.

Описание: Возвращает коллекцию объектов класса PassCard или null в случае отсутствия в Сигуре отделов или в случае ошибки.
В коллекции объекты с заполненными держателями карты при их наличии. Также указаны даты деактивации карты.
Операция длительно, в зависимости от количества записей.

Метод:

GetAllPassCards();

Пример использования:

var allCards = await sigurService.PassCardModule.GetAllPassCards();

3.2. Получение записи карты доступа по ИД(Изменено в 1.0.11).

Возвращает объект класса PassCard или null в случае отсутствия в Сигуре отделов или в случае ошибки.
Присутствуют сведения о держателе карты при наличии. Также указаны даты деактивации карты.

Метод: TryGetPassCardById(int Id);, где Id больше 0.

Пример использования:

var targetCard= await sigurService.PassCardModule.TryGetPassCardById(199);

3.3. Создание новой записи карты доступа (пропуска)

Возвращает объекта класса PassCard или null в случае отсутствия в Сигуре отделов или в случае ошибки.

Метод:

CreatePassCard(PassCardBase passCard);

,где passCard класса PassCardBase обязано иметь значения:

1. FormatType- Формат карты доступа значение из перечисления PassCardFormatType(часто используется W58)
2. IsGuest- Признак гостевого доступа. Где true есть гость, false-временный или постоянный.
3. FormattedCodeKey- значения кода карты. 
4. StartDate- дата начала действия карты. 
5. ExpirationDate- дата окончания действия карты.   

Пример использования:

//Создаём объект заготовки пропуска. 
var newPass = new PassCardBase()
{
    IsGuest = false,
    FormattedCodeKey = "808687767068656",
    FormatType = Domain.Enums.PassCardFormatType.W58,
    ExpirationDate = DateTime.UtcNow.AddDays(365),
    StartDate = DateTime.UtcNow,

};

//Вставка  нового пропуска в систему сигур
var insertNewPassResult = await sigurService.PassCardModule.CreatePassCard(newPass);

В полученном объекте типа PassCard будет SigurId.

3.4. Ассоциация карты доступа и держателя карты(сотрудник)(Исправление версии 1.0.7).

У владельца может быть множество карт доступа, но не более 5.

Метод ничего не возращает. Имеются исключения. Ведется журнализация.

ВАЖНО!!! Невозможно произвести операцию если запись карты уже была ассоциирована с каким либо объектом (сотрудник, автомобиль).ВАЖНО!!!

Что происходит под капотом Сигура? Создается связь между пропуском и владельцем. У владельца может быть множество карт доступа.

Метод:

TryAssociationByEmployee(PassCard passCard, Employee employee);

, где passCard и employee, обязаны иметь SigurId.

Пример использования:

 await sigurService.PassCardModule.TryAssociationByEmployee(passCard: foudedPass, employee: foundedEmp);

!!! Без прохождения операции ассоциации пропуск будет бесполезен!!!

3.5. Ассоциация карты доступа и держателя карты(транспортное средство). (Исправление версии 1.0.7).

У владельца может быть множество карт доступа, но не более 5.

Метод:

TryAssociationByVehicle(PassCard passCard, Vehicle vehicle);

, где passCard и vehicle, обязаны иметь sigurId.

Пример использования:

await sigurService.PassCardModule.TryAssociationByVehicle(passCard: foudedPass, vehicle: foundedVeh);

!!! Без прохождения операции ассоциации пропуск будет бесполезен!!!

3.6. Удаление карт доступа работника. По факту ничего в Сигуре не удаляется, изменяется статус записи пропуска.

Возвращает коллекцию карт доступа с типом PassCard или null в случае отсутствия записей о сотруднике или пропусках, также при возникновлении ошибки.

Метод:

DeleteEmployeePassCards(IEnumerable<PassCard> passCards);

, где passCards ассоциированные карты доступа работника.

Пример использования:

var deletedAssociationEmpPassCards = await sigurService.PassCardModule.DeleteEmployeePassCards(passCards);

3.7. Удаление карты. По факту запись пропуска не удаляется.

Возвращает значение типы bool, где true значит что найдена запись держателя карты и пропуска. В данном методе не важен тип держателя карты. Важно его наличие CardHolder.

ВАЖНО!!! Если имеется держатель карты, то удаление будет невозможным.

Метод:

DeletePassCard(PassCard passCard);

, где passCard объект класса PassCard, обязательное целочисленное значение SigurId более 0 и отсутствие держателя карты.

Пример использования:

var pasCardDeleteResult = await sigurService.PassCardModule.DeletePassCard(passCard);

3.8. Обновление карты.

Возвращает объект PassCard с обновленной информацией либо null в случае отсутствия записи пропуска.

Метод:

UpdatePassCard(PassCardDTO passCard);

, где passCard объект класса PassCard, обязательное целочисленное значение SigurId более 0.

Пример использования:

var resultUpdateCard = await sigurService.PassCardModule.UpdatePassCard(pass);

3.9. Обновление времени доступа карт доступа.

Метод не имеет возвращаемого значения.

Метод:

UpdateTimePassCards(IEnumerable<PassCard> passCards);

, где passCards пропуска подлежащие изменению по дате окончания действия пропуска. Важно наличие SigurId, StartDate , ExpirationDate , FormatType, IsGuest, CardHolder, CardHolder.SigurId

Пример использования:

var passesToTimeUpdate = await sigurService.PassCardModule.UpdateTimePassCards(passCards);

3.10. Обновление времени доступа карты доступа.

Метод предназначен для асинхронного обновления временных параметров (периода действия) одной конкретной пропускной карты в системе.

Метод не имеет возвращаемого значения и выбрасывает исключение при ошибках.

Метод:

UpdateTimePassCard(PassCard passCard);

где где passCard — объект пропуска, содержащий данные для обновления даты окончания действия пропуска.

Параметры:
passCard: объект типа PassCard, содержащий следующие обязательные поля: SigurId — идентификатор карты в системе Sigur.
StartDate — новая дата начала действия пропуска.
ExpirationDate — новая дата окончания действия пропуска.
FormatType — тип формата карты.
IsGuest — флаг, указывающий, является ли карта гостевой.

Пример использования:

var passToTimeUpdate = await sigurService.PassCardModule.UpdateTimePassCard(passCard);

3.11. Получение правил доступа.//Метод в разработке//

Метод:

GetAccessRules(PassCard passCard)

3.12. Получение точек доступа. //Метод в разработке//

Метод:

GetAccsessPoints(PassCard passCard);

3.13. Получение карт доступа по коду карты.

Возвращает коллекцию объектов PassCard карт доступа по коду карты, включая сведения о владельце CardHolder или исключение.

При наличии держателя карты поле CardHolder будет заполнено. Также будет заполнены даты действия карты.

Метод:

TryGetPassCardsByCodeKey(string codekey);

где codekey - значение кода карты в строковом string типе. Обязано быть заполненым.

Пример использования:

var cardsByCodekey = await sigurService.PassCardModule.TryGetPassCardsByCodeKey("805B1FFA842E05");

3.14 Создание гостевого пропуска.

Метод:

Task<PassCard> CreateQuestPass(Department questDepartment, PassCardBase questPassCard);

Описание:

Асинхронно создаёт гостевой пропуск в системе СКУД Sigur для указанного держателя карты — либо сотрудника, либо транспортного средства. Пропуск привязывается к подразделению, указанному в параметре questDepartment (обычно это специальное подразделение для разовых гостевых пропусков). Метод автоматически устанавливает флаг IsGuest = true и обновляет временные рамки действия пропуска в соответствии с данными из questPassCard.

Параметры:

  • questDepartment: Объект типа Department, представляющий подразделение, к которому будет привязан гостевой пропуск. Обязательно должен иметь корректный идентификатор (SigurId > 0).
  • questPassCard: Объект типа PassCardBase, содержащий базовые данные пропуска. Обязательно должен включать CardHolder, в котором заполнен либо Employee, либо ``Vehicle```.

Возвращает: Объект типа PassCard с полной информацией о созданном гостевом пропуске, включая идентификатор, даты действия, данные держателя и привязку к подразделению.

Исключения:

  • SigurIntegrationException: Возникает в следующих случаях:
    • Некорректный идентификатор подразделения (questDepartment.SigurId <= 0);
    • Отсутствует держатель карты (questPassCard.CardHolder == null);
    • Держатель карты не содержит ни сотрудника, ни транспортного средства;
    • Произошла ошибка при взаимодействии с API Sigur (создание, ассоциация, обновление и т.д.).
  • ArgumentNullException: Вложено в SigurIntegrationException, если questPassCard или questPassCard.CardHolder равны null.
  • ArgumentOutOfRangeException: Вложено в SigurIntegrationException, если questDepartment.SigurId <= 0.

Примеры вызова:

  • Для сотрудника:
var guestPass = new PassCardBase
{
    CardHolder = new CardHolder { Employee = new Employee { Name = "Иванов И.И." }, SigurId = 5001 },
    StartDate = DateTime.Now,
    ExpirationDate = DateTime.Now.AddDays(1),
    FormatType = CardFormatType.Wiegand26
};

var department = new Department { SigurId = 999, Name = "Гостевые пропуска" };

var createdPass = await sigurService.PassCardsModule.CreateQuestPass(department, guestPass);
  • Для транспортного средства:
var vehiclePass = new PassCardBase
{
    CardHolder = new CardHolder { Vehicle = new Vehicle { lpNumber = "А123ВС777" }, SigurId = 6002 },
    StartDate = DateTime.Now,
    ExpirationDate = DateTime.Now.AddHours(8),
    FormatType = CardFormatType.Barcode
};

var dept = new Department { SigurId = 999, Name = "Гостевые пропуска" };

var createdVehiclePass = await sigurService.PassCardsModule.CreateQuestPass(dept, vehiclePass);

4.Модуль Профессии (Должности) PositionsModule

4.1. Получение всех профессий.

Возвращает коллекцию объектов класса Position или null если записи профессий не найдены или возникла ошибка.

Метод:

GetAllPositions();

Пример использования:

var allPoses = await sigurService.PositionsModule.GetAllPositions();

4.2. Удаление профессии.

Возвращает значение типа bool, где false - запись профессии не была найдена, true - запись профессии найдена и удалена.

Метод:

DeletePosition(posToDelete);

,posToDelete объект класса Position, обязательно SigurID, Name

Пример использования:

var deletePosResult = await sigurService.PositionsModule.DeletePosition(posToDelete);

4.3. Удаление профессий.

Возвращает коллекцию объектов класса Position, удаленных из справочника Сигура или null в случае ошибки или отсутствия найденных записей профессий. Метод:

DeletePositions(IEnumerable<Position> positionsToDelete);

, где positionsToDelete коллекция с обязательными полями SigurID, Name. Пример использования:

var deletePosesResult = await sigurService.PositionsModule.DeletePositions(positionsToDelete);

4.4. Создание профессии.

Возвращает объект класса Position созданной профессии с SigurID или null при ошибке. ВАЖНО!!! Наименование профессии обязано быть уникальным. В противном случае возникнет исключение и результат null.

Метод:

CreatePosition(PositionBase position);

, где position объект класса PositionBase. Обязательно к заполнению уникальное значение Name.

Пример использования:

var newSigurPos= await sigurService.PositionsModule.CreatePosition(positionsToCreate);

4.5. Создание профессий.

Возвращает коллекцию объектов класса Position созданных записей в справочнике профессий в Сигуре. Аналогично п. 4.4.

Метод:

CreatePositions(IEnumerable<PositionBase> positionTitlies);

, где positionTitlies - коллекция объектов PositionBase содержащих Name.

Пример использования:

var newSigurPos= await sigurService.PositionsModule.CreatePositions(positionTitlies);

4.6. Получение записи профессии по ИД.

Возвращает объект Position или null в случае отсутствия записи в Сигуре с указанным ИД.

Метод:

GetPositionById(int positionId);

, где positionId целочисленное положительное значение более 0.

Пример использования:

var foundPos = await sigurService.PositionsModule.GetPositionById(155);

4.7. Получение профессии по наименованию.

Возвращает коллекцию объектов Position или null в случае отсутствия записей в Сигуре с указанным наименованием.

Метод:

GetPositionsByName(string posName);

, где posName - наименование профессии, не может пустым.

Пример использования:

var targetByName = await sigurService.PositionsModule.GetPositionsByName("Водитель высшей категории ААА");

4.8. Обновление профессии

Возвращает объект Position или null в случае отсутствия записи в Сигуре с указанным ИД.

Метод:

UpdatePosition(PositionBase name);

Пример использования:

var updatedPos = await sigurService.PositionsModule.UpdatePosition(targetPosition)

4.9. Обновление профессий

Возвращает коллекцию объектов Position или null в случае отсутствия записи в Сигуре с указанным ИД.

Метод:

GetPositionsByName(PositionBase name);

Пример использования:

var updatedPoses= await sigurService.PositionsModule.UpdatePositions(targetPositions);

5. Модуль Транспортные средства VehicleModule.

5.1. Получение списка транспортных средств.

Возвращает коллекцию объектов класса Vehicle или null в случае ошибки или отсутствие данных.

Метод:

GetAllVehicles();

Пример использования:

var allVehicles = await sigurService.VehicleModule.GetAllVehicles();

5.2. Получение записи транспортного средства по ИД

Возвращает объект класса Vehicle или null в случае ошибки или отсутствие данных.

Метод:

GetVehicleById(int vehicleId);

, где vehicleId целочисленное положительное значение более 0.

Пример использования:

var foundVehicle= await sigurService.VehicleModule.GetVehicleById(66);

5.3. Создание записи транспортного средства.

Возвращает объект класса Vehicle или null в случае ошибки создания записи.

Метод:

CreateVehicle(VehicleBase vehicle, Department dep);

, где vehicle объект класса VehicleBase с обязательным заполнением гос номера, dep - существующий отдел где обязательное наличие SigurID

Пример использования:

var newVehicle= await sigurService.VehicleModule.CreateVehicle(newGaz3110, DepKit);

5.4. Создание транспортных средств.

Возвращает коллекцию объектов класса Vehicle или null в случае ошибки создания записи. Метод:

CreateVehicles(IEnumerable<VehicleBase> vehicles);

, где vehicle объект класса VehicleBase с обязательным заполнением гос номера, DepId - ИД существующего отдела он же SigurID

Пример использования:

//Получаем отдел
var kitDep = await sigurService.DepartmentModule.GetDepartmentsByName("ООО \"КИТ\"");

//Создаём транспортные средства
var gaz3110 = new VehicleBase() { DepartmentId = kitDep.FirstOrDefault().SigurId, lpNumber = "КГ1991Б" };
var vaz2101 = new VehicleBase() { DepartmentId = kitDep.FirstOrDefault().SigurId, lpNumber = "МВ1945Д" };
var vehs = new List<VehicleBase>() {  vaz2101, gaz3110 };

//Создаём транспортные средства
var createdVehs = await sigurService.VehicleModule.CreateVehicles(vehs);

5.5. Удаление записи транспортного средства.

Возвращает значение типа bool, где false - не найдена запись или возникла ошибка, true - запись найдена и удалена.
Метод:

DeleteVehicle(Vehicle vehicle);

, где vehicle объект класса Vehicle, с обязательным заполнением гос номера и SigurID. Пример использования:

var deleteVehicleResult= await sigurService.VehicleModule.DeleteVehicle(vehicle);

5.6. Удаление транспортных средств

Возвращает коллекцию объектов Vehicle удаленных транспортных средств или null если не найдены записи или возникла ошибка. Метод:

DeleteVehicles(IEnumerable<Vehicle> vehicle);

, где vehicle коллекция объектов класса Vehicle, где обязательно SigurId значения более 0 Пример использования:

//Для примера создаем объекты транспортных средств для удаления (ИД имеются в Сигуре)
var vehsToDelete = new List<Vehicle>()
{
new Vehicle(){SigurId =164},
new Vehicle(){SigurId=165}
};
var vehiclesToDeleted = await sigurService.VehicleModule.DeleteVehicles(vehsToDelete);

5.7. Обновление транспортного средства.

Возвращает объект класса Vehicle или null в случае отсутствия записи в сигуре или при возникновении исключения. Можно изменить связь с отделом, изменить гос.номер Метод:

UpdateVehicle(foundVeh);

, где foundVeh - объект класса Vehicle.
Обязательные поля: lpNumber, DepartmentId, DepartmentName, SigurId.

Пример использования:

//Получаем отдел
var kitDep = await sigurService.DepartmentModule.GetDepartmentsByName("ООО \"КИТ\"");

//Получаем транспортное средство
var foundVeh = await sigurService.VehicleModule.GetVehicleById(162);

//Обновляем гос номер
foundVeh.lpNumber = "E001KX01";

//Обновляем отдел
foundVeh.DepartmentId = kitDep.FirstOrDefault().SigurId;

//Обновляем наименование отдела
foundVeh.DepartmentName = kitDep.FirstOrDefault().Name;

//Обновляем запись в Сигуре
var updateResult= await sigurService.VehicleModule.UpdateVehicle(foundVeh);

5.8. Обновление транспортных средств.

5.9. Удаление карт доступа транспортного средства.

Возвращает коллекцию объектов PassCard или null в случае отсутствия записи в сигуре или при возникновении исключения.

Метод:

DeleteVehiclePasses(Vehicle? vehicle, IEnumerable<PassCard>? vehiclePassCards);

, где vehicle - объект класса Vehicle, vehiclePassCards - коллекция объектов класса PassCard.

Пример использования:

//Получаем транспортное средство
var foundVeh = await sigurService.VehicleModule.GetVehicleById(162);

//Получаем карты доступа
var foundPassCards = await sigurService.PassCardModule.GetPassCardsByVehicle(foundVeh); //метод в разработке

//Удаляем карты доступа
var deletePassCards = await sigurService.VehicleModule.DeleteVehiclePasses(foundVeh, foundPassCards);
    

6. Модуль Точки доступа AccessPointsModule

!!!ВАЖНО: Точки дсотупа через АПИ не создаются. По факту это аппаратные точки доступа. Назначаются администратором системы безопасности. CRUD методы не реализованы!!!

6.1. Получение списка точек доступа.

Возвращает коллекцию объектов класса AccessPoint или null в случае ошибки или отсутствие данных.
Метод:

GetAllAccessPoints()

Пример использования:

var allAccessPoints = await sigurService.AccessPointsModule.GetAllAccessPoints();

6.2. Получение точки доступа по ИД.

Возвращает объект класса AccessPoint или null в случае ошибки или отсутствие данных.
Метод:

GetAccessPointById(int accessPointId);

, где accessPointId целочисленное положительное значение более 0.
Пример использования:

var foundAccessPoint = await sigurService.AccessPointsModule.GetAccessPointById(1);

6.3. Получение папок точек доступа.

Возвращает иерархическую коллекцию объектов класса AccessPoint в случае ошибки или отсутствие данных.

Метод:

GetHierarchyFolders();

Пример использования:

var hierarchyFolders = await sigurService.AccessPointsModule.GetHierarchyFolders();

6.4. Получение точек связанных работником.

Возвращает коллекцию объектов класса AccessPoint в случае ошибки или отсутствие данных.

Метод:

GetAccessPointsForEmployeeById(int employeeId);

, где employeeId целочисленное положительное значение более 0.

Пример использования:

var accessPointsForEmployee = await sigurService.AccessPointsModule.GetAccessPointsForEmployeeById(1);

6.5. Получение точек связанных транспортным средством.

Возвращает коллекцию объектов класса AccessPoint в случае ошибки или отсутствие данных.

Метод:

GetAccessPointsForVehicleById(int vehicleId);

, где vehicleId целочисленное положительное значение более 0.

Пример использования:

var accessPointsForVehicle = await sigurService.AccessPointsModule.GetAccessPointsForVehicleById(1);

6.6. Ассоциация точки доступа с работником.

Не возвращает значения. При возникновении ошибки бросает исключение. Метод:

AssociateAccessPointsWithEmployeeByIds(int employeeId, int [] accessPointIds);

, где accessPointIds -массив целочисленных значений идентификаторов точек доступа. employeeId- целочисленное положительное значение более 0 - идентификатор работника.

Пример использования:

await sigurService.AccessPointsModule.AssociateAccessPointsWithEmployeeByIds(employeeId: emp.SigurId, accessPointsIds: new[] { 25, 20 });

6.7. Ассоциация точки доступа с транспортным средством.

Не возвращает значения. При возникновении ошибки бросает исключение. Метод:

AssociateAccessPointsWithVehicleByIds(int vehicleId, int [] accessPointIds);

, где accessPointIds -массив целочисленных значений идентификаторов точек доступа. vehicleId- целочисленное положительное значение более 0 - идентификатор транспортного средства.

Пример использования:

await sigurService.AccessPointsModule.AssociateAccessPointsWithVehicleByIds(vehicleId: vehicle.SigurId, accessPointsIds: new[] { 25, 20 });

6.8. Дизассоциация точек доступа с работником.

Не возращает значения. При возникновении ошибки бросает исключение. Метод:

DisassociateAccessPointsWithEmployeeByIds(int employeeId, int [] accessPointIds);

, где accessPointIds -массив целочисленных значений идентификаторов точек доступа. employeeId- целочисленное положительное значение более 0 - идентификатор работника.

Пример использования:

await sigurService.AccessPointsModule.DisassociateAccessPointsWithEmployeeByIds(employeeId: emp.SigurId, accessPointsIds: new[] { 25, 20 });

6.9. Дизассоциация точкек доступа с транспортным средством.

Не возращает значения. При возникновении ошибки бросает исключение. Метод:

DisassociateAccessPointsWithVehicleByIds(int vehicleId, int [] accessPointIds);

, где accessPointIds -массив целочисленных значений идентификаторов точек доступа. vehicleId- целочисленное положительное значение более 0 - идентификатор транспортного средства.

Пример использования:

await sigurService.AccessPointsModule.DisassociateAccessPointsWithVehicleByIds(vehicleId: vehicle.SigurId, accessPointsIds: new[] { 25, 20 });

6.10. Ассоциация точки(ек) доступа с правилом(ми) доступа

Не возвращает значения. При возникновении ошибки бросает исключение. Метод:

AssociateAccessPointsWithAccessRuleByIds(int [] accessRuleIds, int [] accessPointIds);

, где accessRuleIds -массив целочисленных значений идентификаторов правил доступа. accessPointIds -массив целочисленных значений идентификаторов точек доступа.

Пример использования:

await sigurService.AccessPointsModule.AssociateAccessPointsWithAccessRuleByIds(accessRuleIds: new[] { 1, 3 }, accessPointsIds: new[] { 25, 20 });

6.11. Дизассоциация точки(ек) доступа с правилом(ми) доступа

Не возвращает значения. При возникновении ошибки бросает исключение. Метод:

DisassociateAccessPointsWithAccessRuleByIds(int [] accessRuleIds, int [] accessPointIds);

, где accessRuleIds -массив целочисленных значений идентификаторов правил доступа. accessPointIds -массив целочисленных значений идентификаторов точек доступа.

Пример использования:

await sigurService.AccessPointsModule.DisassociateAccessPointsWithAccessRuleByIds(accessRuleIds: new[] { 1, 3 }, accessPointsIds: new[] { 25, 20 });

6.13 Получение точек доступа из правила доступа.

Возвращает коллекцию объектов класса AccessPoint в случае ошибки или отсутствие данных.
Метод:

GetAccessPointsForAccessRuleById(int accessRuleId);

, где accessRuleId целочисленное положительное значение более 0.
Пример использования:

var accessPointsForAccessRule = await sigurService.AccessPointsModule.GetAccessPointsForAccessRuleById(1);

7. Модуль Правил доступа AccessRulesModule

7.1. Получение списка правил доступа.

Возвращает коллекцию объектов класса AccessRule в случае ошибки или отсутствие данных.
Метод:

TryGetAllAccessRules()

Пример использования:

var allAccessRules = await sigurService.AccessRulesModule.TryGetAllAccessRules();

7.2. Получение правила доступа по ИД.

Возвращает объект класса AccessRule или null в случае ошибки или отсутствие данных.
Метод:

GetAccessRuleById(int accessRuleId);

, где accessRuleId целочисленное положительное значение более 0.
Пример использования:

var foundAccessRule = await sigurService.AccessRulesModule.GetAccessRuleById(1);

7.3 Создание правила доступа.

Возвращает объект класса AccessRule в случае ошибки или отсутствие данных.

Метод:

TryCreateAccessRule(AccessRuleBase accessRuleBase);

, где accessRuleBase объект класса AccessRuleBase.

Пример использования:

//Создаём правило
 var newAcRule = new AccessRuleBase()
    {
        Name = "Кастомизированный режим работы",
        Description = "Создан через консоль",
        StartDate = DateTime.Now,
        EndDate = DateTime.Now.AddMonths(9),
        FolderId = 3,
        Level = 3

    };
    
    //Попытка экспорта нового правила с получением нового объекта с указанием его ИД
  var InsertNewAcRuleResult = await sigurService.AccessRulesModule.TryCreateAccessRule(newAcRule);

7.4. Удаление правила доступа.

Возвращает значение типа bool, где false - запись правила не была найдена, true - запись правила удалена.
Метод:

DeleteAccessRuleById(int accessRuleId);

, где accessRuleId целочисленное положительное значение более 0.
Пример использования:

var deleteAccessRuleResult = await sigurService.AccessRulesModule.DeleteAccessRuleById(1);

7.5. Получение правил доступа для по работнику

Возвращает коллекцию объектов AccessRule в случае ошибки или отсутствие данных.

Метод:

GetAccessRulesByEmployeeId(int employeeId);

, где employeeId целочисленное положительное значение более 0.

Пример использования:

var empsRules = await sigurService.AccessRulesModule.GetAccessRulesByEmployeeId(targetEmp.SigurId);

7.6. Получение правил доступа для транспортного средства.

Возвращает коллекцию объектов AccessRule в случае ошибки или отсутствие данных.

Метод:

GetAccessRulesByVehicleId(int vehicleId);

, где vehicleId целочисленное положительное значение более 0.

Пример использования:

var vehsRules = await sigurService.AccessRulesModule.GetAccessRulesByVehicleId(targetVehicle.SigurId);

7.7. Обновление правила доступа.

Возвращает объект класса AccessRule в случае ошибки или отсутствие данных.
Метод:

UpdateAccessRule(AccessRule targetRule);

, где accessRuleBase объект класса AccessRule, которое нужно обновить.

targetRule.SigurId обязан быть более 0. targetRule.Name обязан быть не пустой.

Пример использования:

   //Получаем правило
   var targetRule = await sigurService.AccessRulesModule.GetAccessRuleById(7);
   
   //Изменяем правило 
    targetRule.Description = "Измененное описание через консоль 2";
    targetRule.StartDate = DateTime.Now;
    targetRule.EndDate = DateTime.Now.AddMonths(9);
    
    //Обновляем правило
    var updatedRule = await sigurService.AccessRulesModule.UpdateAccessRule(targetRule);

7.8 Получение работников относящихся к правилу.

Возвращает коллекцию объектов Employee в случае ошибки или отсутствие данных.
!!!Важно!!! Метод без пагинации и может получить не более 3000 записей работников.

Метод:

GetEmployeesByAccessRule(int accessRuleId);

, где accessRuleId целочисленное положительное значение более 0.
Пример использования:

var foundEmpsInRule = await sigurService.AccessRulesModule.GetEmployeesByAccessRule(1);

7.9 Получение транспортных средств относящихся к правилу.

Возвращает коллекцию объектов Vehicle в случае ошибки или отсутствие данных.
Метод:

GetVehiclesByAccessRuleId(int accessRuleId);

, где accessRuleId целочисленное положительное значение более 0.
Пример использования:

var foundVehsInRule = await sigurService.AccessRulesModule.GetVehiclesByAccessRuleId(1);

7.10 Исключение работника из правила.

Не возвращает значения. При возникновении ошибки бросает исключение.
Метод:

RemoveEmployeeFromAccessRuleByIds(int[] accessRuleIds, int employeeId);

, где accessRuleIds- массив целочисленных положительных значений более 0 - идентификаторы правил, идентификаторы правил могут повторяться т.к. при проверке унифицируются. employeeId целочисленное положительное значение более 0 - идентификатор работника.

Пример использования:

//Получаем правило
 var targetRule = await sigurService.AccessRulesModule.GetAccessRuleById(1); 

//Счетчик - показометр, его наличие не нужно. 
//Получаем работников ассоциированных с правилом, к примеру их было 73. При следуеющем вызове их бужет меньше     
var empsByRule = await sigurService.AccessRulesModule.GetEmployeesByAccessRuleId(targetRule.SigurId);
    
// Исключаем работника из правила или правил     
await sigurService.AccessRulesModule.RemoveEmployeeFromAccessRuleByIds(employeeId:138,accessRuleIds:[targetRule.SigurId]);

7.11 Исключение транспортного средства из правила.

Не возвращает значения. При возникновении ошибки бросает исключение.
Метод:

RemoveVehicleFromAccessRuleByIds(int[] accessRuleIds, int vehicleId);

, где accessRuleIds- массив целочисленных положительных значений более 0 - идентификаторы правил, идентификаторы правил могут повторяться т.к. при проверке унифицируются. vehicleId целочисленное положительное значение более 0 - идентификатор транспортного средства.

Пример использования:

//Получаем правило
 var targetRule = await sigurService.AccessRulesModule.GetAccessRuleById(1);

//Счетчик - показометр, его наличие не нужно.   
 var vehsByRule = await sigurService.AccessRulesModule.GetVehiclesByAccessRuleId(targetRule.SigurId);
    
// Исключаем транспортное средство из правила или правил     
await sigurService.AccessRulesModule.RemoveVehicleFromAccessRuleByIds(vehicleId:138,accessRuleIds:[targetRule.SigurId]);                    

7.12 Ассоциация работника с правилом.

Не возращает значения. При возникновении ошибки бросает исключение.
Метод:

AddEmployeeToAccessRule(int[] accessRuleIds, int employeeId);

, где accessRuleIds массив целочисленных положительных значений более 0 - идентификатор правила, идентификаторы правил могут повторяться т.к. при проверке унифицируются.
employeeId целочисленное положительное значение более 0 - идентификатор работника.

Пример использования:

//Получаем правило
 var targetRule = await sigurService.AccessRulesModule.GetAccessRuleById(1);                    
    
var empsByRule = await sigurService.AccessRulesModule.GetEmployeesByAccessRuleId(targetRule.SigurId);
    
// Включаем работника в правило или правила     
await sigurService.AccessRulesModule.AddEmployeeToAccessRule(accessRuleIds:targetRule.SigurId,employeeId:138);

7.13 Ассоциация транспортного средства с правилом.

Не возращает значения. При возникновении ошибки бросает исключение.
Метод:

AddVehicleToAccessRule(int[] accessRuleIds, int vehicleId);

, где accessRuleIds массив целочисленных положительных значений более 0 - идентификатор правила, идентификаторы правил могут повторяться т.к. при проверке унифицируются.
vehicleId целочисленное положительное значение более 0 - идентификатор транспортного средства.

Пример использования:

//Получаем правило
 var targetRule = await sigurService.AccessRulesModule.GetAccessRuleById(1);                    
    
var empsByRule = await sigurService.AccessRulesModule.GetVehiclesByAccessRuleId(targetRule.SigurId);
    
// Включаем транспортное средство в правило или правила     
await sigurService.AccessRulesModule.AddVehicleToAccessRule(accessRuleIds:targetRule.SigurId,vehicleId:138);

7.14 Ассоциация транспортных средств с правилами.

Не возвращает значения. При возникновении ошибки бросает исключение.
Метод:

AddVehiclesToAccessRules(int[] accessRuleIds, int[] vehicleIds);

, где accessRuleIds массив целочисленных положительных значений более 0 - идентификатор правила, идентификаторы правил могут повторяться т.к. при проверке унифицируются.
vehicleId массив целочисленных положительных значений более 0 - идентификатор транспортного средства.

7.15 Ассоциация работников с правилами.

Не возвращает значения. При возникновении ошибки бросает исключение.
Метод:

AddEmployeesToAccessRules(int[] accessRuleIds, int[] employeeIds);

, где accessRuleIds массив целочисленных положительных значений более 0 - идентификатор правила, идентификаторы правил могут повторяться т.к. при проверке унифицируются.
employeeIds массив целочисленных положительных значений более 0 - идентификатор работника.

No packages depend on Epass.Integration.Sigur.

Version Downloads Last updated
1.0.22 23 11/07/2025
1.0.21 3 11/05/2025
1.0.20 3 10/30/2025
1.0.19 24 10/20/2025
1.0.18 4 10/20/2025
1.0.17 51 10/20/2025
1.0.16 5 10/20/2025
1.0.15 11 10/15/2025
1.0.14 640 06/20/2025
1.0.13 11 06/20/2025
1.0.12 18 06/20/2025
1.0.11 18 06/19/2025
1.0.10 15 06/18/2025
1.0.9 16 06/18/2025
1.0.8 10 06/18/2025
1.0.7 13 06/17/2025
1.0.6 9 06/16/2025
1.0.5 10 06/16/2025
1.0.4 18 06/10/2025
1.0.3 13 06/10/2025
1.0.2 15 06/09/2025
1.0.1 13 06/09/2025
1.0.0 18 06/08/2025