/// <summary> /// Заполнение словаря параметров resolveContext значениями идентификаторов группы, пользователя, роли /// </summary> public void FillResolveContext(SessionContext sessionContext, BaseResolveContext resolveContext, Options options) { // Для повышения быстродействия значения идентификаторов можно закэшировать var userId = sessionContext.UserInfo.EmployeeId; var unit = sessionContext.UserInfo.Employee.Unit; var unitId = sessionContext.ObjectContext.GetObjectRef <StaffUnit>(unit).Id; StaffEmployee staffEmployee = sessionContext.ObjectContext.GetObject <StaffEmployee>(userId); IStaffService staffService = sessionContext.ObjectContext.GetService <IStaffService>(); StringBuilder roleIdList = new StringBuilder(); StringBuilder groupIdList = new StringBuilder(); foreach (StaffGroup group in staffService.FindEmployeeGroups(staffEmployee)) { var groupId = sessionContext.ObjectContext.GetObjectRef <StaffGroup>(group).Id; groupIdList.Append(string.Concat(groupId, ";")); } foreach (StaffRole role in staffService.FindEmployeeRoles(staffEmployee)) { var roleId = sessionContext.ObjectContext.GetObjectRef <StaffRole>(role).Id; roleIdList.Append(string.Concat(roleId, ";")); } resolveContext.Parameters.Add(Constants.ConditionTypes.UnitConditionType, unitId.ToString()); resolveContext.Parameters.Add(Constants.ConditionTypes.RolesConditionType, roleIdList.ToString()); resolveContext.Parameters.Add(Constants.ConditionTypes.GroupsConditionType, groupIdList.ToString()); }