/// <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; } }
/// <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="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); } } } }