Epass.Integration.Sigur 1.0.20

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

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

{  
   BaseUrl = configuration.GetValue<string>("SigurCreditial:BaseUrl"),
   Login = configuration.GetValue<string>("SigurCreditial:Login"),
   Password = configuration.GetValue<string>("SigurCreditial:Password"),
   AuthEndpoint = configuration.GetValue<string>("SigurCreditial:AuthEndpoint"),
   RefreshEndpoint = configuration.GetValue<string>("SigurCreditial:RefreshEndpoint"),
};

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",
AuthEndpoint - адрес эндпоинта для получения токена API Сигура. По умолчанию имеет значение "/api/v1/users/auth"
RefreshEndpoint- адрес эндпоинта для обновления токена API Сигура. По умолчанию имеет значение "/api/v1/jwt/refresh"

/// Примеры использования: 
Получение службы - точки входа. 
Метод: services.AddSigur(SigurOptions sigurOptions);
///Пример вызова: 
var sigurService = scope.ServiceProvider.GetRequiredService<ISigurIntergrationService>();

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

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

Метод:

EmployeesModule.GetAllEmployees();

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

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

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

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

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

Метод: EmployeesModule.GetFilteredEmployees(IEmployeeFilter filter);

Описание:Вызов метода с фильтрами IEmployeeFilter. Доступно только соответствующие записи по условию.

Фильтр создаётся фабрикой. Следует изучить перечисление EmployeeFilterType:

    ByFullName - поиск по полному ФИО,
    ByLikeName - поиск похожего ФИО
    BlockedOnly - поиск заблокированных записей.
    ByDepartments - поиск по департаменту, 
    ByPositions - поиск по профессии
    ByTableNumber - по табельному номеру.

Фабрика:

EmployeeFilterFactory.Create();

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

поиск по имени

var filterByName = EmployeeFilterFactory.Create(EmployeeFilterType.ByFullName, "Иван Иванович Иванов");

поиск по профессии

var filterByPosition = EmployeeFilterFactory.Create(EmployeeFilterType.ByPositions, pos);

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

с применением фильтра по имени

var empsByName =  await sigurService.EmployeesModule.GetFilteredEmployees(filterByName);

с применением фильтра по профессии

var empsByPosition = await sigurService.EmployeesModule.GetFilteredEmployees(filterByPosition);

1.3. Создание нового сотрудника. (обновлено в 1.0.11)

Описание: В Сигуре создается запись работника. В системе Сигуре индекс уникальности по ФИО отсутствует.

Рекомендуется использовать после проверки существования записи.

Метод:

EmployeesModule.CreateEmployee(employee: newWorker, dep: targetDep,position: pos);

, где position - профессия производного от Position , targetDep - производный от Department.

Возвращает экземпляр класса Employee производного от EmployeeBase.

Пример создания объекта EmployeeBase: 
//массив байт фотографии - для примера

var photoFilePath = "C:\\Users\\andrej.zavtur\\Pictures\\Безымянный.jpg";

var photo = File.ReadAllBytes(photoFilePath);

//Создание объекта 
var newEmp = new EmployeeBase()
{
    Name = "Сергей Сергеевич Сергеев",
    Description = "Тестовая запись с применением базового класса",
    TabNumber = "0001", // Не обязательно
    PhotoBytes = photo     
    
};
   //Получение профессии
    var sysPos =  sigurService.PositionsModule.GetPositionsByName("Системный администратор").Result.FirstOrDefault();
    
    //Получение департамента
    var ftDep = sigurService.DepartmentModule.GetDepartmentsByName("ООО \"ФТ-СОФТ\"").Result.FirstOrDefault();

    //Создание нового сотрудника 
    var insertNewEmpResult = await sigurService.EmployeesModule.CreateEmployee(employee: newEmp, dep: ftDep, position: sysPos);

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

Описание: В Сигуре запись сотрудника "стирается"(на самом деле в записи сотрудника комментируются). При этом аннулируются свойства бизнес логики по допускному режиму.

Метод:

EmployeesModule.DeleteEmployee(Employee emp);

, где emp объект класса Employee(обязан содержать emp.SigurId).

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

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

var deleteEmpResult = await sigurService.EmployeesModule.DeleteEmployee(emp);

1.5. Блокировка записи сотрудника.

Описание: Блокировка записи сотрудника. В Сигуре запись сотрудника "блокируется"(он не сможет проходить через точки доступа).

Метод:

EmployeesModule.Block(Employee emp);

, где emp объект класса Employee(обязан содержать emp.SigurId и emp.Name имя).

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

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

var blockEmpResult = await sigurService.EmployeesModule.Block(emp);

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

Описание: Разблокировка записи сотрудника. В Сигуре запись сотрудника "разблокируется"(сможет проходить через точки доступа).

Метод:

EmployeesModule.UnBlock(Employee emp);

, где emp объект класса Employee(обязан содержать SigurId и Name имя).

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

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

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

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

Возвращает объект класса Employee в случае нахождения в API Cигура или null в случае отсутствия или ошибки.

Метод:

EmployeesModule.GetEmployeeById(int id);

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

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

var foundEmpRecord= await.EmployeesModule.GetEmployeeById(122);

1.8. Обновление сотрудника// В Тесте!!!

Возвращает обновлённый объект класса Employee в случае нахождения в API Сигур или null в случае отсутствия или ошибки.

Метод:

EmployeesModule.UpdateEmployee(Employee employee);

, где employee.SigurId обязан быть более 0, employee.Name не пустым.

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

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

1.9. Увольнение работника.

Производит проверку наличия записи в Сигуре сотрудника, в случает отсутствия возвращает исключение.
Производит проверку наличия пропусков(коллекция объектов PassCard) сотрудника.
При наличии карт доступа удаляет все пропуска сотрудника. Все действия логируются. Возвращает объект увольненого сотрудника класса Employee.

Метод:

TryFiredEmployee(Employee employee);

где employee - доменный тип Employee,

ВАЖНО!!! employee.Sigur обязан быть более нуля.

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

//Получение записи сотрудника.
Employee emp = await sigurService.EmployeesModule.GetEmployeeById(130);

// Увольнение сотрудника в системе СКУД Сигур.
Employee toFiredEmp = await sigurService.EmployeesModule.TryFiredEmployee(emp);

1.10. Устаревшее поведение (для справки). Получение карт доступа сотрудника.Используйте актуальный метод GetEmployeeCards п. 1.10.1

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

TryGetEmployeeCards(Employee employee);

где employee - доменный тип Employee.

ВАЖНО!!! employee.Sigur обязан быть более нуля.

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

//Получение записи сотрудника по ид 130.
Employee emp = await sigurService.EmployeesModule.GetEmployeeById(130);

//Получение карт доступа сотрудника. 
var empCards= await  sigurService.EmployeesModule.TryGetEmployeeCards(emp);

1.10.1 Получение карт доступа сотрудника

Возвращает коллекцию объектов PassCard — все карты доступа, привязанные к указанному сотруднику в системе Sigur. Метод проверяет корректность переданного сотрудника (наличие SigurId > 0). Если сотрудник не найден в СКУД Sigur — выбрасывается SigurIntegrationException. Если у сотрудника отсутствуют карты доступа — возвращается пустая коллекция, исключение не выбрасывается.

ВАЖНО! Свойство employee.SigurId должно быть задано и больше нуля.

GetEmployeeCards(Employee employee);

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

// Получение записи сотрудника по ID 130
Employee emp = await sigurService.EmployeesModule.GetEmployeeById(130);

// Получение всех карт доступа сотрудника (включая неактивные)
var empCards = await sigurService.EmployeesModule.GetEmployeeCards(emp);

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

Возвращает коллекцию IReadyCollection элементов Employee. При исключении возвращает SigurIntegrationException При отсутствии возвращает пустой список.

Метод:

GetByTabNumber(string tabNumber);

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

await sigurService.EmployeesModule.GetByTabNumber("777");

1.12 Кастомная архивация

Архивирует указанного сотрудника, перемещая его в заданное архивное подразделение и обновляя описание с информацией об архивации. Все активные карты доступа сотрудника блокируются (устанавливается дата окончания действия — текущий момент UTC).

При исключении возвращает SigurIntegrationException. При передаче некорректных данных (например, отсутствие SigurId у сотрудника или архивного подразделения) выбрасывается ArgumentException или ArgumentNullException.

При пустом значении initiator будет использовано значение по умолчанию System

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

// Архивация сотрудника с указанием инициатора и целевого архивного подразделения
var employee = /* полученный сотрудник */;
var archiveDept = /* целевое архивное подразделение */;
await sigurService.EmployeesModule.Archive(employee, archiveDept, "AdminUser");

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);

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

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

!!!ВАЖНО!!! На текущий момент сигур отдаёт не более 3000 записей за один запрос(по умолчанию было 50). Разбираюсь. ЕСТЬ возможность пагинации в разработке.

Описание: Возвращает коллекцию объектов класса 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");

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