Пример #1
0
        public IActionResult Delete(int id)
        {
            var query = (from d in context.Department
                         select new Department
            {
                DepartmentId = d.DepartmentId,
                Name = d.Name,
                Parent = d.Parent,
                Hierarchy = d.Hierarchy
            }).
                        OrderBy(d => d.Parent).ToList();

            AnalyzeHierarchy ah = new AnalyzeHierarchy();

            if (ah.czyMaszDzieci(id, query) == true)
            {
                return(RedirectToAction("Index", "Department"));
            }
            else if (ah.czyMaszDzieci(id, query) == false)
            {
                var department = context.Set <Department>();
                department.Remove(new Department {
                    DepartmentId = id
                });

                try
                {
                    context.SaveChanges();
                    return(RedirectToAction("Index", "Department"));
                }
                catch (Exception e)
                {
                    return(RedirectToAction("Index", "Department"));
                }
            }
            return(RedirectToAction("Index", "Department"));
        }
Пример #2
0
        public IActionResult Index()
        {
            var query = (from d in context.Department
                         select new Department
            {
                DepartmentId = d.DepartmentId,
                Name = d.Name,
                Parent = d.Parent,
                Hierarchy = d.Hierarchy
            }).
                        OrderBy(d => d.Hierarchy).ToList();

            List <Department> depart       = new List <Department>();
            AnalyzeHierarchy  ah           = new AnalyzeHierarchy();
            List <int>        zapamietajID = new List <int>();

            int        currentParentId            = query[0].Parent;
            int        rememberParentId           = 0;
            bool       firstLoop                  = false;
            bool       whenBothCheckChildrenFalse = false;
            Department rememberOmittedDepartment  = null;
            int        iStart = 0;

            for (int z = 0; z < 20; z++)
            {
                if (firstLoop == true)
                {
                    for (int i = 0; i < zapamietajID.Count; i++)
                    {
                        if (query[i].DepartmentId != zapamietajID[i])
                        {
                            currentParentId = query[i].Parent;
                            break;
                        }
                    }
                }
                firstLoop = true;

                for (int i = iStart; i < query.Count; i++)
                {
                    whenBothCheckChildrenFalse = false;

                    if (zapamietajID.Contains(query[i].DepartmentId))
                    {
                        continue;
                    }

                    //if (rememberOmittedDepartment != null)
                    //{
                    //    zapamietajID.Add(rememberOmittedDepartment.DepartmentId);
                    //    depart.Add(rememberOmittedDepartment);
                    //    //currentParentId = rememberOmittedDepartment.DepartmentId;
                    //    //currentParentId = query[i].DepartmentId;
                    //    rememberOmittedDepartment = null;
                    //    continue;
                    //}

                    if (ah.czyMaszDzieci(query[i].DepartmentId, query) == true)
                    {
                        if (currentParentId == query[i].Parent)
                        {
                            zapamietajID.Add(query[i].DepartmentId);
                            depart.Add(query[i]);
                            currentParentId = query[i].DepartmentId;
                            if (rememberParentId != query[i].Parent)
                            {
                                rememberParentId = currentParentId;
                            }
                            continue;
                        }
                    }
                    else if (ah.czyMaszDzieci(query[i].DepartmentId, query) == false)
                    {
                        if (currentParentId == query[i].Parent)
                        {
                            zapamietajID.Add(query[i].DepartmentId);
                            depart.Add(query[i]);
                            continue;
                        }
                        if (rememberParentId == query[i].Parent)
                        {
                            whenBothCheckChildrenFalse = true;
                        }
                    }

                    if (whenBothCheckChildrenFalse == true)
                    {
                        //rememberOmittedDepartment = query[i];
                        iStart = i - 1;
                        break;
                    }
                }
            }
            return(View(depart));
        }