Example #1
0
        public int GetAdvancedSearchPersonCountByImperativeRequest(PersonSearchProxy proxy, ImperativeRequestLoadState IRLS, ImperativeRequest imperativeRequest, decimal userId, decimal managerId, PersonCategory searchCat)
        {
            {
                const string PersonDetailAlias = "prsDtl";
                const string WorkGroupAlias    = "wg";
                const string RuleGroupAlias    = "rg";
                const string CalculationDateRangeGroupAlias = "cdrg";
                const string DepartmentAlias       = "dep";
                const string OrganizationUnitAlias = "organ";


                ICriteria crit        = base.NHibernateSession.CreateCriteria(typeof(Person));
                Junction  disjunction = Restrictions.Disjunction();
                crit.CreateAlias(Utility.Utility.GetPropertyName(() => new Person().PersonDetail), PersonDetailAlias);
                crit.Add(Restrictions.Eq(Utility.Utility.GetPropertyName(() => new Person().IsDeleted), false));

                //فعال
                if (proxy.PersonActivateState != null)
                {
                    crit.Add(Restrictions.Eq(Utility.Utility.GetPropertyName(() => new Person().Active), (bool)proxy.PersonActivateState));
                }

                //کد پرسنلی
                if (!Utility.Utility.IsEmpty(proxy.PersonCode))
                {
                    crit.Add(Restrictions.Like(Utility.Utility.GetPropertyName(() => new Person().BarCode), proxy.PersonCode, MatchMode.Anywhere));
                }

                //نام
                if (!Utility.Utility.IsEmpty(proxy.FirstName))
                {
                    crit.Add(Restrictions.Like(Utility.Utility.GetPropertyName(() => new Person().FirstName), proxy.FirstName, MatchMode.Anywhere));
                }

                //نام خانوادگی
                if (!Utility.Utility.IsEmpty(proxy.LastName))
                {
                    crit.Add(Restrictions.Like(Utility.Utility.GetPropertyName(() => new Person().LastName), proxy.LastName, MatchMode.Anywhere));
                }

                //نام پدر
                if (!Utility.Utility.IsEmpty(proxy.FatherName))
                {
                    crit.Add(Restrictions.Like(PersonDetailAlias + "." + Utility.Utility.GetPropertyName(() => new PersonDetail().FatherName), proxy.FatherName, MatchMode.Anywhere));
                }

                //جنسیت
                if (!Utility.Utility.IsEmpty(proxy.Sex))
                {
                    crit.Add(Restrictions.Eq(Utility.Utility.GetPropertyName(() => new Person().Sex), proxy.Sex));
                }

                //شروع تاریخ تولد
                if (!Utility.Utility.IsEmpty(proxy.FromBirthDate))
                {
                    crit.Add(Restrictions.Ge(PersonDetailAlias + "." + Utility.Utility.GetPropertyName(() => new PersonDetail().BirthDate), proxy.FromBirthDate));
                }

                //پایان تاریخ تولد
                if (!Utility.Utility.IsEmpty(proxy.ToBirthDate))
                {
                    crit.Add(Restrictions.Le(PersonDetailAlias + "." + Utility.Utility.GetPropertyName(() => new PersonDetail().BirthDate), proxy.ToBirthDate));
                }

                //شروع تاریخ استخدام
                if (!Utility.Utility.IsEmpty(proxy.FromEmploymentDate))
                {
                    crit.Add(Restrictions.Ge(Utility.Utility.GetPropertyName(() => new Person().EmploymentDate), proxy.FromEmploymentDate));
                }

                //پایان تاریخ استخدام
                if (!Utility.Utility.IsEmpty(proxy.ToEmploymentDate))
                {
                    crit.Add(Restrictions.Ge(Utility.Utility.GetPropertyName(() => new Person().EndEmploymentDate), proxy.ToEmploymentDate));
                }

                //شماره کارت
                if (!Utility.Utility.IsEmpty(proxy.CartNumber))
                {
                    crit.Add(Restrictions.Eq(Utility.Utility.GetPropertyName(() => new Person().CardNum), proxy.CartNumber));
                }

                //نظام وضیفه
                if (!Utility.Utility.IsEmpty(proxy.Military))
                {
                    crit.Add(Restrictions.Eq(PersonDetailAlias + "." + Utility.Utility.GetPropertyName(() => new PersonDetail().MilitaryStatus), proxy.Military));
                }

                //تحصیلات
                if (!Utility.Utility.IsEmpty(proxy.Education))
                {
                    crit.Add(Restrictions.Like(Utility.Utility.GetPropertyName(() => new Person().Education), proxy.Education, MatchMode.Anywhere));
                }

                //تاهل
                if (!Utility.Utility.IsEmpty(proxy.MaritalStatus))
                {
                    crit.Add(Restrictions.Eq(Utility.Utility.GetPropertyName(() => new Person().MaritalStatus), proxy.MaritalStatus));
                }

                //بخش
                if (!Utility.Utility.IsEmpty(proxy.DepartmentId))
                {
                    crit.CreateAlias("department", DepartmentAlias);

                    if (proxy.IncludeSubDepartments)
                    {
                        disjunction.Add(Restrictions.Eq(Utility.Utility.GetPropertyName(() => new Person().Department).ToLower(), new Department()
                        {
                            ID = (decimal)proxy.DepartmentId
                        }));
                        disjunction.Add(Restrictions.Like(DepartmentAlias + "." + Utility.Utility.GetPropertyName(() => new Department().ParentPath), "," + proxy.DepartmentId.ToString() + ",", MatchMode.Anywhere));
                    }
                    else
                    {
                        crit.Add(Restrictions.Eq(Utility.Utility.GetPropertyName(() => new Person().Department).ToLower(), new Department()
                        {
                            ID = (decimal)proxy.DepartmentId
                        }));
                    }
                }

                //پست سازمانی
                if (!Utility.Utility.IsEmpty(proxy.OrganizationUnitId))
                {
                    crit.CreateAlias("OrganizationUnitList", OrganizationUnitAlias);
                    crit.Add(Restrictions.Eq(OrganizationUnitAlias + "." + Utility.Utility.GetPropertyName(() => new OrganizationUnit().ID), (decimal)proxy.OrganizationUnitId));
                }

                //گروه کاری
                if (!Utility.Utility.IsEmpty(proxy.WorkGroupId))
                {
                    crit.CreateAlias(Utility.Utility.GetPropertyName(() => new Person().PersonWorkGroupList), WorkGroupAlias);
                    crit.Add(Restrictions.Eq(WorkGroupAlias + "." + Utility.Utility.GetPropertyName(() => new AssignWorkGroup().WorkGroup), new WorkGroup()
                    {
                        ID = (decimal)proxy.WorkGroupId
                    }));

                    if (!Utility.Utility.IsEmpty(proxy.WorkGroupFromDate))
                    {
                        crit.Add(Restrictions.Le(WorkGroupAlias + "." + Utility.Utility.GetPropertyName(() => new AssignWorkGroup().FromDate), proxy.WorkGroupFromDate));
                    }
                }

                //گروه قوانین
                if (!Utility.Utility.IsEmpty(proxy.RuleGroupId))
                {
                    crit.CreateAlias(Utility.Utility.GetPropertyName(() => new Person().PersonRuleCatAssignList), RuleGroupAlias);
                    crit.Add(Restrictions.Eq(RuleGroupAlias + "." + Utility.Utility.GetPropertyName(() => new PersonRuleCatAssignment().RuleCategory), new RuleCategory()
                    {
                        ID = (decimal)proxy.RuleGroupId
                    }));

                    if (!Utility.Utility.IsEmpty(proxy.RuleGroupFromDate))
                    {
                        crit.Add(Restrictions.Le(RuleGroupAlias + "." + Utility.Utility.GetPropertyName(() => new PersonRuleCatAssignment().FromDate), proxy.RuleGroupFromDate));
                    }
                    if (!Utility.Utility.IsEmpty(proxy.RuleGroupToDate))
                    {
                        crit.Add(Restrictions.Ge(RuleGroupAlias + "." + Utility.Utility.GetPropertyName(() => new PersonRuleCatAssignment().ToDate), proxy.RuleGroupToDate));
                    }
                }

                //محدوده محاسبات
                if (!Utility.Utility.IsEmpty(proxy.CalculationDateRangeId))
                {
                    crit.CreateAlias(Utility.Utility.GetPropertyName(() => new Person().PersonRangeAssignList), CalculationDateRangeGroupAlias);
                    crit.Add(Restrictions.Eq(CalculationDateRangeGroupAlias + "." + Utility.Utility.GetPropertyName(() => new PersonRangeAssignment().CalcDateRangeGroup), new CalculationRangeGroup()
                    {
                        ID = (decimal)proxy.CalculationDateRangeId
                    }));

                    if (!Utility.Utility.IsEmpty(proxy.CalculationFromDate))
                    {
                        crit.Add(Restrictions.Le(CalculationDateRangeGroupAlias + "." + Utility.Utility.GetPropertyName(() => new PersonRangeAssignment().FromDate), proxy.CalculationFromDate));
                    }
                }

                //ایستگاه کنترل
                if (!Utility.Utility.IsEmpty(proxy.ControlStationId))
                {
                    crit.Add(Restrictions.Eq("controlStation", new ControlStation()
                    {
                        ID = (decimal)proxy.ControlStationId
                    }));
                }

                //نوع استخدام
                if (!Utility.Utility.IsEmpty(proxy.EmploymentType))
                {
                    crit.Add(Restrictions.Eq("employmentType", new EmploymentType()
                    {
                        ID = (decimal)proxy.EmploymentType
                    }));
                }

                //جستجو در بین مدیران و اپراتورها
                if (proxy.SearchInCategory != PersonCategory.Public &&
                    !Utility.Utility.IsEmpty(proxy.SearchInCategory))
                {
                    if (proxy.SearchInCategory == PersonCategory.Manager)
                    {
                        IList <Person> personList = new ManagerRepository(false).GetAllManager();
                        var            ids        = from person in personList
                                                    select person.ID;
                        IList <decimal> idList = ids.ToList <decimal>();

                        crit.Add(Restrictions.In(Utility.Utility.GetPropertyName(() => new Person().ID), idList.ToArray()));
                    }
                }
                crit.Add(Expression.Sql(" prs_Id in (select * from fn_GetAccessiblePersons(?,?,?))", new object[] { managerId, userId, (int)searchCat }, new IType[] { NHibernateUtil.Decimal, NHibernateUtil.Decimal, NHibernateUtil.Int32 }));
                if (!disjunction.ToString().Equals("()"))
                {
                    crit.Add(disjunction);
                }
                if (IRLS == ImperativeRequestLoadState.Applied || IRLS == ImperativeRequestLoadState.NotApplied)
                {
                    IList <decimal> ImperativeRequestIDsList = this.NHibernateSession.QueryOver <ImperativeRequest>()
                                                               .Where(impReq => impReq.Precard.ID == imperativeRequest.Precard.ID && impReq.IsLocked && impReq.Year == imperativeRequest.Year && impReq.Month == imperativeRequest.Month)
                                                               .Select(impReq => impReq.ID)
                                                               .List <decimal>();
                    if (imperativeRequest.IsLocked)
                    {
                        crit.Add(Restrictions.In(Utility.Utility.GetPropertyName(() => new Person().ID), ImperativeRequestIDsList.ToArray()));
                    }
                    else
                    {
                        crit.Add(Restrictions.Not(Restrictions.In(Utility.Utility.GetPropertyName(() => new Person().ID), ImperativeRequestIDsList.ToArray())));
                    }
                }
                crit.SetProjection(Projections.Count(Utility.Utility.GetPropertyName(() => new Person().ID)));
                if (!Utility.Utility.IsEmpty(crit.ToString()))
                {
                    object count = crit.UniqueResult();
                    return((int)count);
                }
                return(0);
            }
        }
Example #2
0
        public IList <Person> GetAdvancedSearchPersonByImperativeRequest(PersonSearchProxy proxy, ImperativeRequestLoadState IRLS, ImperativeRequest imperativeRequest, decimal userId, decimal managerId, PersonCategory searchCat, int pageIndex, int pageSize)
        {
            const string PersonDetailAlias = "prsDtl";
            const string WorkGroupAlias    = "wg";
            const string RuleGroupAlias    = "rg";
            const string CalculationDateRangeGroupAlias = "cdrg";
            const string DepartmentAlias       = "dep";
            const string OrganizationUnitAlias = "organ";
            const string PersonTASpecAlias     = "prsTs";
            const string ContractAlias         = "con";
            const string GradeAlias            = "grade";
            const string EmploymentAlias       = "emp";
            ICriteria    crit        = base.NHibernateSession.CreateCriteria(typeof(Person));
            Junction     disjunction = Restrictions.Disjunction();

            crit.Add(Restrictions.Eq(Utility.Utility.GetPropertyName(() => new Person().IsDeleted), false));
            crit.CreateAlias(Utility.Utility.GetPropertyName(() => new Person().PersonDetailList), PersonDetailAlias);

            //فعال
            if (proxy.PersonActivateState != null)
            {
                crit.Add(Restrictions.Eq(Utility.Utility.GetPropertyName(() => new Person().Active), (bool)proxy.PersonActivateState));
            }

            //کد پرسنلی
            if (!Utility.Utility.IsEmpty(proxy.PersonCode))
            {
                crit.Add(Restrictions.Like(Utility.Utility.GetPropertyName(() => new Person().BarCode), proxy.PersonCode, MatchMode.Anywhere));
            }

            //نام
            if (!Utility.Utility.IsEmpty(proxy.FirstName))
            {
                crit.Add(Restrictions.Like(Utility.Utility.GetPropertyName(() => new Person().FirstName), proxy.FirstName, MatchMode.Anywhere));
            }

            //نام خانوادگی
            if (!Utility.Utility.IsEmpty(proxy.LastName))
            {
                crit.Add(Restrictions.Like(Utility.Utility.GetPropertyName(() => new Person().LastName), proxy.LastName, MatchMode.Anywhere));
            }

            //نام پدر
            if (!Utility.Utility.IsEmpty(proxy.FatherName))
            {
                crit.Add(Restrictions.Like(PersonDetailAlias + "." + Utility.Utility.GetPropertyName(() => new PersonDetail().FatherName), proxy.FatherName, MatchMode.Anywhere));
            }

            //جنسیت ,پیش فرض آن از واسط کاربر -1 است
            if (!Utility.Utility.IsEmpty(proxy.Sex) && proxy.Sex >= 0)
            {
                crit.Add(Restrictions.Eq(Utility.Utility.GetPropertyName(() => new Person().Sex), proxy.Sex));
            }

            //شماره کارت
            if (!Utility.Utility.IsEmpty(proxy.CartNumber))
            {
                crit.Add(Restrictions.Eq(Utility.Utility.GetPropertyName(() => new Person().CardNum), proxy.CartNumber));
            }

            //نظام وضیفه , پیش فرض آن از واسط کاربر 0 است
            if (!Utility.Utility.IsEmpty(proxy.Military) && proxy.Military > 0)
            {
                crit.Add(Restrictions.Eq(PersonDetailAlias + "." + Utility.Utility.GetPropertyName(() => new PersonDetail().MilitaryStatus), proxy.Military));
            }

            //تحصیلات
            if (!Utility.Utility.IsEmpty(proxy.Education))
            {
                crit.Add(Restrictions.Like(Utility.Utility.GetPropertyName(() => new Person().Education), proxy.Education, MatchMode.Anywhere));
            }

            //تاهل , پیش فرض آن از واسط کاربر 0 است
            if (!Utility.Utility.IsEmpty(proxy.MaritalStatus) && proxy.MaritalStatus > 0)
            {
                crit.Add(Restrictions.Eq(Utility.Utility.GetPropertyName(() => new Person().MaritalStatus), proxy.MaritalStatus));
            }

            //شروع تاریخ تولد
            if (!Utility.Utility.IsEmpty(proxy.FromBirthDate))
            {
                crit.Add(Restrictions.Ge(PersonDetailAlias + "." + Utility.Utility.GetPropertyName(() => new PersonDetail().BirthDate), proxy.FromBirthDate));
            }

            //پایان تاریخ تولد
            if (!Utility.Utility.IsEmpty(proxy.ToBirthDate))
            {
                crit.Add(Restrictions.Le(PersonDetailAlias + "." + Utility.Utility.GetPropertyName(() => new PersonDetail().BirthDate), proxy.ToBirthDate));
            }

            //شروع تاریخ استخدام
            if (!Utility.Utility.IsEmpty(proxy.FromEmploymentDate))
            {
                crit.Add(Restrictions.Ge(Utility.Utility.GetPropertyName(() => new Person().EmploymentDate), proxy.FromEmploymentDate));
            }

            //پایان تاریخ استخدام
            if (!Utility.Utility.IsEmpty(proxy.ToEmploymentDate))
            {
                crit.Add(Restrictions.Ge(Utility.Utility.GetPropertyName(() => new Person().EndEmploymentDate), proxy.ToEmploymentDate));
            }

            //بخش
            //if (!Utility.Utility.IsEmpty(proxy.DepartmentId))
            //{
            //    crit.CreateAlias("department", DepartmentAlias);

            //    if (proxy.IncludeSubDepartments)
            //    {
            //        disjunction.Add(Restrictions.Eq(Utility.Utility.GetPropertyName(() => new Person().Department).ToLower(), new Department() { ID = (decimal)proxy.DepartmentId }));
            //        disjunction.Add(Restrictions.Like(DepartmentAlias + "." + Utility.Utility.GetPropertyName(() => new Department().ParentPath), "," + proxy.DepartmentId.ToString() + ",", MatchMode.Anywhere));

            //    }
            //    else
            //    {
            //        crit.Add(Restrictions.Eq(Utility.Utility.GetPropertyName(() => new Person().Department).ToLower(), new Department() { ID = (decimal)proxy.DepartmentId }));
            //    }

            //}

            if (!Utility.Utility.IsEmpty(proxy.DepartmentListId))
            {
                crit.CreateAlias("department", DepartmentAlias);

                if (proxy.IncludeSubDepartments)
                {
                    disjunction.Add(Restrictions.In(DepartmentAlias + "." + Utility.Utility.GetPropertyName(() => new Department().ID), proxy.DepartmentListId.ToArray()));

                    foreach (decimal item in proxy.DepartmentListId)
                    {
                        disjunction.Add(Restrictions.Like(DepartmentAlias + "." + Utility.Utility.GetPropertyName(() => new Department().ParentPath), "," + item.ToString() + ",", MatchMode.Anywhere));
                    }
                }
                else
                {
                    crit.Add(Restrictions.In(DepartmentAlias + "." + Utility.Utility.GetPropertyName(() => new Department().ID), proxy.DepartmentListId.ToArray()));
                }
            }

            //پست سازمانی
            if (!Utility.Utility.IsEmpty(proxy.OrganizationUnitId))
            {
                crit.CreateAlias("OrganizationUnitList", OrganizationUnitAlias);
                crit.Add(Restrictions.Eq(OrganizationUnitAlias + "." + Utility.Utility.GetPropertyName(() => new OrganizationUnit().ID), (decimal)proxy.OrganizationUnitId));
            }

            //گروه کاری
            if (!Utility.Utility.IsEmpty(proxy.WorkGroupId))
            {
                crit.CreateAlias(Utility.Utility.GetPropertyName(() => new Person().PersonWorkGroupList), WorkGroupAlias);
                crit.Add(Restrictions.Eq(WorkGroupAlias + "." + Utility.Utility.GetPropertyName(() => new AssignWorkGroup().WorkGroup), new WorkGroup()
                {
                    ID = (decimal)proxy.WorkGroupId
                }));

                if (!Utility.Utility.IsEmpty(proxy.WorkGroupFromDate))
                {
                    crit.Add(Restrictions.Le(WorkGroupAlias + "." + Utility.Utility.GetPropertyName(() => new AssignWorkGroup().FromDate), proxy.WorkGroupFromDate));
                }
            }
            //رتبه
            if (!Utility.Utility.IsEmpty(proxy.GradeId))
            {
                crit.CreateAlias("grade", GradeAlias);
                crit.Add(Restrictions.Eq(GradeAlias + "." + Utility.Utility.GetPropertyName(() => new Grade().ID), (decimal)proxy.GradeId));
            }
            //گروه قوانین
            if (!Utility.Utility.IsEmpty(proxy.RuleGroupId))
            {
                crit.CreateAlias(Utility.Utility.GetPropertyName(() => new Person().PersonRuleCatAssignList), RuleGroupAlias);
                crit.Add(Restrictions.Eq(RuleGroupAlias + "." + Utility.Utility.GetPropertyName(() => new PersonRuleCatAssignment().RuleCategory), new RuleCategory()
                {
                    ID = (decimal)proxy.RuleGroupId
                }));

                if (!Utility.Utility.IsEmpty(proxy.RuleGroupFromDate))
                {
                    crit.Add(Restrictions.Le(RuleGroupAlias + "." + Utility.Utility.GetPropertyName(() => new PersonRuleCatAssignment().FromDate), proxy.RuleGroupFromDate));
                }
                if (!Utility.Utility.IsEmpty(proxy.RuleGroupToDate))
                {
                    crit.Add(Restrictions.Ge(RuleGroupAlias + "." + Utility.Utility.GetPropertyName(() => new PersonRuleCatAssignment().ToDate), proxy.RuleGroupToDate));
                }
            }

            //محدوده محاسبات
            if (!Utility.Utility.IsEmpty(proxy.CalculationDateRangeId))
            {
                crit.CreateAlias(Utility.Utility.GetPropertyName(() => new Person().PersonRangeAssignList), CalculationDateRangeGroupAlias);
                crit.Add(Restrictions.Eq(CalculationDateRangeGroupAlias + "." + Utility.Utility.GetPropertyName(() => new PersonRangeAssignment().CalcDateRangeGroup), new CalculationRangeGroup()
                {
                    ID = (decimal)proxy.CalculationDateRangeId
                }));

                if (!Utility.Utility.IsEmpty(proxy.CalculationFromDate))
                {
                    crit.Add(Restrictions.Le(CalculationDateRangeGroupAlias + "." + Utility.Utility.GetPropertyName(() => new PersonRangeAssignment().FromDate), proxy.CalculationFromDate));
                }
            }

            ////ایستگاه کنترل
            //if (!Utility.Utility.IsEmpty(proxy.ControlStationId))
            //{
            //    crit.Add(Restrictions.Eq("controlStation", new ControlStation() { ID = (decimal)proxy.ControlStationId }));
            //}
            if (!Utility.Utility.IsEmpty(proxy.ControlStationListId))
            {
                List <ControlStation> controlStationList = new List <ControlStation>();
                foreach (decimal item in proxy.ControlStationListId)
                {
                    controlStationList.Add(new ControlStation()
                    {
                        ID = item
                    });
                }
                crit.CreateAlias(Utility.Utility.GetPropertyName(() => new Person().PersonTASpecList), PersonTASpecAlias);
                crit.Add(Restrictions.In(PersonTASpecAlias + "." + Utility.Utility.GetPropertyName(() => new PersonTASpec().ControlStation), controlStationList));
            }
            //نوع استخدام
            //if (!Utility.Utility.IsEmpty(proxy.EmploymentType))
            //{
            //    crit.Add(Restrictions.Eq("employmentType", new EmploymentType() { ID = (decimal)proxy.EmploymentType }));
            //}
            if (!Utility.Utility.IsEmpty(proxy.EmploymentTypeListId))
            {
                crit.CreateAlias("employmentType", EmploymentAlias);
                crit.Add(Restrictions.In(EmploymentAlias + "." + Utility.Utility.GetPropertyName(() => new EmploymentType().ID), proxy.EmploymentTypeListId.ToArray()));
            }
            // گروه واسط کاربری
            if (!Utility.Utility.IsEmpty(proxy.UIValidationGroupListId))
            {
                List <UIValidationGroup> uiValidationGroupList = new List <UIValidationGroup>();
                foreach (decimal item in proxy.UIValidationGroupListId)
                {
                    uiValidationGroupList.Add(new UIValidationGroup()
                    {
                        ID = item
                    });
                }
                crit.CreateAlias(Utility.Utility.GetPropertyName(() => new Person().PersonTASpecList), PersonTASpecAlias);
                crit.Add(Restrictions.In(PersonTASpecAlias + "." + Utility.Utility.GetPropertyName(() => new PersonTASpec().UIValidationGroup), uiValidationGroupList));
            }
            //قرارداد
            if (!Utility.Utility.IsEmpty(proxy.ContractId))
            {
                crit.CreateAlias(Utility.Utility.GetPropertyName(() => new Person().PersonContractAssignmentList), ContractAlias);
                crit.Add(Restrictions.Eq(ContractAlias + "." + Utility.Utility.GetPropertyName(() => new PersonContractAssignment().Contract), new Contract()
                {
                    ID = (decimal)proxy.ContractId
                }));
                crit.Add(Restrictions.Eq(ContractAlias + "." + Utility.Utility.GetPropertyName(() => new PersonContractAssignment().IsDeleted), false));
                if (!Utility.Utility.IsEmpty(proxy.ContractFromDate))
                {
                    crit.Add(Restrictions.Ge(ContractAlias + "." + Utility.Utility.GetPropertyName(() => new PersonContractAssignment().FromDate), Utility.Utility.ToMildiDateTime(proxy.ContractFromDate)));
                }
                if (!Utility.Utility.IsEmpty(proxy.RuleGroupToDate))
                {
                    crit.Add(Restrictions.Le(ContractAlias + "." + Utility.Utility.GetPropertyName(() => new PersonContractAssignment().ToDate), Utility.Utility.ToMildiDateTime(proxy.ContractToDate)));
                }
            }
            //جستجو در بین مدیران و اپراتورها
            if (proxy.SearchInCategory != PersonCategory.Public &&
                !Utility.Utility.IsEmpty(proxy.SearchInCategory))
            {
                if (proxy.SearchInCategory == PersonCategory.Manager)
                {
                    IList <Person> personList = new ManagerRepository(false).GetAllManager();
                    var            ids        = from person in personList
                                                select person.ID;
                    IList <decimal> idList = ids.ToList <decimal>();

                    crit.Add(Restrictions.In(Utility.Utility.GetPropertyName(() => new Person().ID), idList.ToArray()));
                }
            }
            IList <Person> list = new List <Person>();

            crit.Add(Expression.Sql(" prs_Id in (select * from fn_GetAccessiblePersons(?,?,?))", new object[] { managerId, userId, (int)searchCat }, new IType[] { NHibernateUtil.Decimal, NHibernateUtil.Decimal, NHibernateUtil.Int32 }));

            if (!disjunction.ToString().Equals("()"))
            {
                crit.Add(disjunction);
            }
            if (IRLS == ImperativeRequestLoadState.Applied || IRLS == ImperativeRequestLoadState.NotApplied)
            {
                IList <decimal> ImperativeRequestIDsList = this.NHibernateSession.QueryOver <ImperativeRequest>()
                                                           .Where(impReq => impReq.Precard.ID == imperativeRequest.Precard.ID && impReq.IsLocked && impReq.Year == imperativeRequest.Year && impReq.Month == imperativeRequest.Month)
                                                           .Select(impReq => impReq.ID)
                                                           .List <decimal>();
                if (imperativeRequest.IsLocked)
                {
                    crit.Add(Restrictions.In(Utility.Utility.GetPropertyName(() => new Person().ID), ImperativeRequestIDsList.ToArray()));
                }
                else
                {
                    crit.Add(Restrictions.Not(Restrictions.In(Utility.Utility.GetPropertyName(() => new Person().ID), ImperativeRequestIDsList.ToArray())));
                }
            }
            if (!Utility.Utility.IsEmpty(crit.ToString()))
            {
                if (pageIndex == 0 && pageSize == 0)
                {
                    list = crit
                           .List <Person>();
                }
                else
                {
                    list = crit
                           .SetFirstResult(pageIndex * pageSize)
                           .SetMaxResults(pageSize)
                           .List <Person>();
                }
            }
            return(list);
        }