Beispiel #1
0
        /// <summary>
        /// زیر بخش های یک بخش را بر اساس بخش های تحت مدیریت برمیگرداند
        /// </summary>
        /// <param name="nodeID">کلید اصلی بخش مورد نظر</param>
        /// <param name="flowId">کلید اصلی جریان کاری</param>
        /// <param name="departmentsList">لیست بخش مورد نظر که در آن جستجو می کنیم</param>
        /// <returns>لیست بخش ها</returns>
        public IList <Department> GetDepartmentChilds(GTS.Clock.Model.RequestFlow.Flow flow, decimal nodeID, IList <Department> departmentsList)
        {
            try
            {
                // why?
                //DepartmentRepository depRep = new DepartmentRepository(false);
                //GTS.Clock.Model.RequestFlow.Flow flow = new GTS.Clock.Business.RequestFlow.BFlow().GetByID(flowId);
                List <Department>  underManagmentTree = new List <Department>();
                IList <Department> containsNode       = bUnderManagment.GetUnderManagmentDepartmentByFlow(flow, true, departmentsList);
                foreach (Department dep in containsNode)
                {
                    underManagmentTree.Add(dep);
                }
                IList <Department> childs = departmentsList.Where(x => x.ParentID == nodeID).ToList <Department>();
                IList <Department> result = new List <Department>();
                foreach (Department child in childs)
                {
                    if (underManagmentTree.Where(x => x.ID == child.ID).Any())
                    {
                        result.Add(child);
                    }
                }

                return(result);
            }
            catch (Exception ex)
            {
                LogException(ex);
                throw ex;
            }
        }
Beispiel #2
0
 /// <summary>
 /// بصورت بازگشتی درحت را پیمایش و شرط نمایش را بررسی میکند
 ///  اگر تشخیص داده شد که گره ای نباید نشان داده شود نیازی به پیمایش گره های فرزند نیست
 ///  زیرا این تشخیص شامل آنها نیز میشود
 /// </summary>
 /// <param name="department"></param>
 /// <param name="visibleIds"></param>
 private void SetVisibility(Department department, GTS.Clock.Model.RequestFlow.Flow flow, IList <Department> containsChildList)
 {
     GTS.Clock.Business.RequestFlow.BFlow bFlow = new GTS.Clock.Business.RequestFlow.BFlow();
     if (department.ChildList != null)
     {
         foreach (Department child in department.ChildList)
         {
             if (!containsChildList.Contains(child))
             {
                 child.Visible = child.Visible || false;//ممکن است در جریانهای قبلی مقدار یک گرفته باشد
             }
             else
             {
                 child.Visible = true;
                 this.SetVisibility(child, flow, bFlow.GetDepartmentChilds(child.ID, flow.ID));
             }
         }
     }
 }
Beispiel #3
0
        /// <summary>
        /// بصورت بازگشتی درحت را پیمایش و شرط نمایش را بررسی میکند
        ///  اگر تشخیص داده شد که گره ای نباید نشان داده شود نیازی به پیمایش گره های فرزند نیست
        ///  زیرا این تشخیص شامل آنها نیز میشود
        /// </summary>
        /// <param name="department"></param>
        /// <param name="visibleIds"></param>
        //private void SetVisibility(Department department, GTS.Clock.Model.RequestFlow.Flow flow, IList<Department> containsChildList)
        //{
        //    GTS.Clock.Business.RequestFlow.BFlow bFlow = new GTS.Clock.Business.RequestFlow.BFlow();
        //    if (department.ChildList != null)
        //    {
        //        foreach (Department child in department.ChildList)
        //        {
        //            if (!containsChildList.Contains(child))
        //            {
        //                child.Visible = child.Visible || false;//ممکن است در جریانهای قبلی مقدار یک گرفته باشد
        //            }
        //            else
        //            {
        //                child.Visible = true;
        //                this.SetVisibility(child, flow, bFlow.GetDepartmentChilds(child.ID, flow.ID));
        //            }
        //        }
        //    }
        //}

        /// <summary>
        /// بررسی امکان رویت بخش ها
        /// بصورت بازگشتی درحت را پیمایش و شرط نمایش را بررسی میکند
        ///  اگر تشخیص داده شد که بخش ای نباید نشان داده شود نیازی به پیمایش زیر بخش های فرزند نیست
        ///  زیرا این تشخیص شامل آنها نیز میشود
        /// </summary>
        /// <param name="department">بخش</param>
        /// <param name="flow">جریان کاری</param>
        /// <param name="containsChildList">لیست زیر بخش ها</param>
        /// <param name="departmentsList">لیست بخش های که روی آن باید پیمایش شود</param>
        private void SetVisibility(GTS.Clock.Business.RequestFlow.BFlow bFlow, Department department, GTS.Clock.Model.RequestFlow.Flow flow, IList <Department> containsChildList, IList <Department> departmentsList)
        {
            if (departmentsList.Where(x => x.ParentID == department.ID).Any())
            {
                foreach (Department child in departmentsList.Where(x => x.ParentID == department.ID).ToList <Department>())
                {
                    if (!containsChildList.Contains(child))
                    {
                        child.Visible = child.Visible || false;//ممکن است در جریانهای قبلی مقدار یک گرفته باشد
                    }
                    else
                    {
                        child.Visible = true;
                        this.SetVisibility(bFlow, child, flow, bFlow.GetDepartmentChilds(child.ID, flow.ID, departmentsList), departmentsList);
                    }
                }
            }
        }