/// <summary> /// Initializes the list of objects according to the user rights. /// </summary> public void Init(BaseTable <Obj> objTable, UserRights userRights) { ArgumentNullException.ThrowIfNull(objTable, nameof(objTable)); ArgumentNullException.ThrowIfNull(userRights, nameof(userRights)); try { if (!objTable.TryGetIndex("ParentObjNum", out ITableIndex parentObjIndex)) { throw new ScadaException(CommonPhrases.IndexNotFound); } foreach (Obj obj in objTable.Enumerate()) { if (obj.ParentObjNum == null && userRights.GetRightByObj(obj.ObjNum).View) { Add(new ObjectItem(obj, 0)); AddChildObjects(parentObjIndex, userRights, obj.ObjNum, 0); } } } catch (Exception ex) { throw new ScadaException(Locale.IsRussian ? "Ошибка при инициализации списка объектов" : "Error initializing object list", ex); } }
/// <summary> /// Adds the child objects of the specified object recursively. /// </summary> private void AddChildObjects(ITableIndex parentObjIndex, UserRights userRights, int parentObjNum, int parentLevel) { foreach (Obj childObj in parentObjIndex.SelectItems(parentObjNum)) { if (userRights.GetRightByObj(childObj.ObjNum).View) { Add(new ObjectItem(childObj, parentLevel + 1)); AddChildObjects(parentObjIndex, userRights, childObj.ObjNum, parentLevel + 1); } } }