Epass.Integration.Sigur 1.0.3
Подключение:
Метод services.AddSigur(SigurOptions sigurOptions); где объект SigurOptions
;
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"
//Получение службы - точки входа.
var sigurService = scope.ServiceProvider.GetRequiredService
/// Примеры использования:
- Модуль сотрудники EmployeesModule
1.1. Получение всех работников. Метод : EmployeesModule.GetAllEmployees(). Вызов метода без фильтров. Т.е. будут доступны все работники, к которым не было применено средств удаления (архивации). Возращает коллекцию Employee, либо null в случае ошибки или отсутвия данных.
Примеры вызова: 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.Создание нового сотрудника. В Сигуре создается запись работника. Индекс уникальности по ФИО отсутствует. Будьте внимательны. Рекомендуется использовать после проверки существования записи. Метод: EmployeesModule.CreateEmployee(employee: newWorker, dep: targetDep,position: pos), где position необязателен. Возращает экземляр класса 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 insertNewEmpResult = await sigurService.EmployeesModule.CreateEmployee(employee: newEmp, dep: targetDep);
1.4. Удаление сотрудника. В Сигуре запись сотрудника "стирается"(на самом деле в записи сотрудника комментируются). При этом анулируются свойства бизнес логики по допускному режиму. Метод: EmployeesModule.DeleteEmployee(Employee emp) , где emp объект класса Employee(обязан содержать SigurId). Возращает bool:true если найдена запись и успешно удалена, в противном случае false. Пример вызова: var deleteEmpResult = await sigurService.EmployeesModule.DeleteEmployee(emp);
1.5. Блокировка записи сотрудника. Блокировка записи сотрудника. В Сигуре запись сотрудника "блокируется"(он не сможет проходить через точки доступа).
Метод: EmployeesModule.Block(Employee emp) , где emp объект класса Employee(обязан содержать SigurId и 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 сигур или 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); // В тесте!!!
- Модуль Отделы, организации DepartmentModule 2.1. Получение всех отделов, организаций из Сигура. Возращает коллекцию объектов класса Department или null случае отсутствия в Сигуре каких либо отделов или в случае ошибки. Метод: GetAllDepartaments() Пример вызова: var allDepsFromSigur = await sigurService.DepartmentModule.GetAllDepartaments();
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 depsTpdelete = await sigurService.DepartmentModule.DeleteDepartments(kitDEps);
2.5. Обновление информации по отделам, организациям
Возращает коллекцию обновленных отделов класса Department или null случае отсутствия в Сигуре отделов или в случае ошибки.
Метод UpdateDepartments(IEnumerable
2.6. Создание отдела, организации. Возращает объект класса Department или null null случае возникновения ошибки. Метод AddDepartment (DepartmentBase departament), где departament объект класса 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, "ООО "КИТ""); var allSomeKitDepsCount = await sigurService.DepartmentModule.DeleteDepartments(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);
- Модуль Карт доступа PassCardModule ( карты доступа, пропуска)
3.1. Получение всех записей карт доступа. Возращает коллекцию объектов класса PassCard или null в случае отсутствия в Сигуре отделов или в случае ошибки. Метод: GetAllPassCards(). Пример использования: var allCards = await sigurService.PassCardModule.GetAllPassCards();
3.2. Получение записи карты доступа по ИД. Возращает объект класса PassCard или null в случае отсутствия в Сигуре отделов или в случае ошибки Метод: GetPassCardById(int Id), где Id больше 0. Пример использования: var targetCard= await sigurService.PassCardModule.GetPassCardById(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. Ассоциация карты доступа и держателя карты(сотрудник). Возращает обновленный, ассоциорованный пропуск с записью работника с типом PassCard. В пропуске обязано появиться значение CardHolder? CardHolder. Или null в случае отсутствия в Сигуре записи работника или пропуска, в случае ошибки. ВАЖНО!!! Невозможно произвести операцию если запись карты уже была ассоциорована с каким либо объектом ( сотрудник, автомобиль).ВАЖНО!!! Что происходит под капотом Сигура? Создается связь между пропуском и владельцем. У владельца может быть множество карт доступа. Метод: AssociationByEmployee(PassCard passCard, Employee employee), где passCard и employee, обязаны иметь sigurId. Пример использования: var assocPassToEmp = await sigurService.PassCardModule.AssociationByEmployee(passCard: foudedPass, employee: foundedEmp) !!! Без прохождение ассоциации пропуск будет бесполезен.!!!
3.5. Ассоциация карты доступа и держателя карты(транспортное средство). Возращает обновленный, ассоциорованный пропуск с записью транспортного средства с типом PassCard. В пропуске обязано появиться значение CardHolder? CardHolder. Или null в случае отсутствия в Сигуре записи транспортного средства или пропуска, в случае ошибки. ВАЖНО!!! Невозможно произвести операцию если запись карты уже была ассоциорована с каким либо объектом ( сотрудник, автомобиль).ВАЖНО!!! Что происходит под капотом Сигура? Создается связь между пропуском и владельцем. У владельца может быть множество карт доступа. Метод: AssociationByVehicle(PassCard passCard, Vehicle vehicle), где passCard и vehicle, обязаны иметь sigurId. Пример использования: var assocPassToVeh = await sigurService.PassCardModule.AssociationByVehicle(passCard: foudedPass, vehicle: foundedVeh) !!! Без прохождение ассоциации пропуск будет бесполезен.!!!
3.6. Удаление карт доступа работника. По факту ничего в Сигуре не удаляется, изменяется статус записи пропуска.
Возращает коллекцию карт доступа с типом PassCard или null в случае отсутствия записей о сотруднике или пропусках, также при возникновлении ошибки.
Метод: DeleteEmployeePassCards(IEnumerable
3.7. Удаление карты. По факту запись пропуска не удаляется. //Метод в разработке// Возращает значение типы bool, где true значит что найдена запись держателя карты и пропуска. В данном методе не важен тип держателя карты. Важно его наличие CardHolder. DeletePassCard(PassCard passCard);
3.8. Обновление карты. //Метод в разработке//
3.9. Обновление времени доступа карт доступа.
Метод не имеет значения.
Метод UpdateTimePassCards(IEnumerable
3.10. Обновление времени доступа карты доступа. Аналогично 3.9. Отличие - объектный подход вместо сериализации.
3.11. Получение правил доступа. //Метод в разработке// Метод: GetAccessRules(PassCard passCard)
3.12. Получение точек доступа. //Метод в разработке// Метод: GetAccsessPoints(PassCard passCard)
- Модуль Професиии(Должности) 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
4.4. Создание професcии. Возвращает объект класса Position созданной профессии с SigurID или null при ошибке. ВАЖНО!!! Наименование профессии обязано быть уникальным. В противном случае возникнет исключение и результат null. Метод: CreatePosition(PositionBase position), где position объект класса PositionBase. Обязательно к заполнению уникальное значение Name. Пример использования: var newSigurPos= await sigurService.PositionsModule.CreatePosition(positionsToCreate);
4.5. Создание професиий.
Возращает коллекцию объектов класса Position созданных записей в справочнике профессий в Сигуре. Аналогично п. 4.4.
Метод: CreatePositions(IEnumerable
4.6. Получение записи профессии по ИД. Возращает объект Position или null в случае отсутствия записи в Сигуре с указанным ИД. Метод: GetPositionById(int positionId), где positionId целочисленное положительное значение более 0. Пример использования: var foundPos = await sigurService.PositionsModule.GetPositionById(155);
4.7. Получение профессии по наименованию. //Дописать после проверки
Возращает объект Position или null в случае отсутствия записи в Сигуре с указанным ИД.
Метод <IEnumerable
4.8.Обновление профессии //Дописать после проверки
Возращает объект Position или null в случае отсутствия записи в Сигуре с указанным ИД.
Метод <IEnumerable
4.9. Обновление профессий //Дописать после проверки
Возращает коллекцию объектов Position или null в случае отсутствия записи в Сигуре с указанным ИД.
Метод <IEnumerable
- Модуль Транспортные средства 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
5.5. Удаление записи транспортного средства. Возращает значение типа bool, где false - не найдена запись или возникла ошибка, true - запись найдена и удалена. Метод: DeleteVehicle(Vehicle vehicle), где vehicle объект класса Vehicle, с обязательным заполнением гос номера и SigurID. Пример использования: var deleteVehicleResult= await sigurService.VehicleModule.DeleteVehicle(vehicle);
5.6. Удаление транспотрных средств
Возращает коллекцию объектов Vehicle удаленных транспортных средств или null если не найдены записи или возникла ошибка.
Метод: DeleteVehicles(IEnumerable
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. Обновление транспортных средств.
No packages depend on Epass.Integration.Sigur.
.NET 8.0
- AutoMapper (>= 12.0.1)
- AutoMapper.Extensions.Microsoft.DependencyInjection (>= 12.0.1)
- FluentValidation (>= 11.11.0)
- Microsoft.Extensions.Configuration (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 8.0.0)
| 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 |