示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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);
                }
            }
        }
示例#5
0
        /// <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);
        }
示例#6
0
 public TreeItem(IOrgItem value, TreeItem parent = null)
 {
     Value    = value;
     Parent   = parent;
     Children = new List <TreeItem>();
 }