/// <summary> /// Сравнение объектов /// </summary> /// <param name="other"></param> /// <returns></returns> public bool Equals(IOrgItem other) { if (other is Department) { Department otherDepartment = other as Department; return(Id.Equals(otherDepartment.Id) && ParentDepartmentID.Equals(otherDepartment.ParentDepartmentID) && Name.Equals(otherDepartment.Name) && Code.Equals(otherDepartment.Code)); } return(false); }
/// <summary> /// Содержится ли искомый элемент в потомках текущего /// </summary> /// <param name="org">Искомый элемент</param> /// <returns></returns> public bool ContainsOrgItem(IOrgItem org) { if (Children != null) { foreach (var child in Children) { if (child.Value.Equals(org)) { return(true); } } } return(false); }
/// <summary> /// Сравнение объектов /// </summary> /// <param name="other"></param> /// <returns></returns> public bool Equals(IOrgItem other) { if (other is Employee) { Employee otherEmployee = other as Employee; return(Id.Equals(otherEmployee.Id) && DepartmentID.Equals(otherEmployee.DepartmentID) && SurName.Equals(otherEmployee.SurName) && FirstName.Equals(otherEmployee.FirstName) && Patronymic.Equals(otherEmployee.Patronymic) && DateOfBirth.Equals(otherEmployee.DateOfBirth) && DocSeries.Equals(otherEmployee.DocSeries) && DocNumber.Equals(otherEmployee.DocNumber) && Position.Equals(otherEmployee.Position)); } return(false); }
/// <summary> /// Функция сортировки элементов в дерево /// </summary> /// <param name="input">списко элементов, которые необходимо отсортировать</param> public void Sotring(List <IOrgItem> input) { List <IOrgItem> excluded = new List <IOrgItem>(); int i = -1; while (input.Count != excluded.Count) { i++; if (i == input.Count) { i = 0; } IOrgItem org = input[i]; if (excluded.Contains(org)) { continue; } if (String.IsNullOrEmpty(org.ParentDepartmentID)) { Root = new TreeItem(org); excluded.Add(org); continue; } TreeItem item = SearchItem(Root, org); if (item != null) { if (!item.ContainsOrgItem(org)) { TreeItem newItem = new TreeItem(org, item); item.Children.Add(newItem); } excluded.Add(org); } } }
/// <summary> /// Осуществлет поиск родительского элемента /// рекурсивна /// </summary> /// <param name="item">Элемент с которого осуществляется поиск</param> /// <param name="org">Элемент для которог ищется родитель</param> /// <returns>null - если родитель не найден. TreeItem - рожительский элемент</returns> private TreeItem SearchItem(TreeItem item, IOrgItem org) { if (item == null) { return(null); } if (item.Value.ItemId.Equals(org.ParentDepartmentID)) { return(item); } foreach (var child in item.Children) { TreeItem result = SearchItem(child, org); if (result != null) { return(result); } } return(null); }
public TreeItem(IOrgItem value, TreeItem parent = null) { Value = value; Parent = parent; Children = new List <TreeItem>(); }