Example #1
0
        public IList <Person> GetQuickSearchPersonByImperativeRequest(string key, ImperativeRequestLoadState IRLS, ImperativeRequest imperativeRequest, decimal userId, decimal managerId, PersonCategory searchCat, int pageSize, int pageIndex)
        {
            string SQLCommand = "";

            SQLCommand = @"SELECT prs.* FROM TA_Person as prs
                                  where prs_IsDeleted=0 AND prs_Active=1 AND prs_BarCode <> '00000000' 
                                        AND ( prs_BarCode like :searchKey OR
                                        prs_CardNum like :searchKey OR
                                        prs_FirstName + ' ' + prs_LastName like :searchKey)
                                        AND prs_ID in (select * from fn_GetAccessiblePersons(:managerId,:userId,:searchCat))";

            if (IRLS != ImperativeRequestLoadState.Normal)
            {
                SQLCommand += "AND prs_ID";
                switch (IRLS)
                {
                case ImperativeRequestLoadState.Applied:
                    SQLCommand += " in";
                    break;

                case ImperativeRequestLoadState.NotApplied:
                    SQLCommand += " not in";
                    break;
                }
                SQLCommand += @"(select impReq.imperativeRequest_PersonID from TA_ImperativeRequest impReq 
                             where impReq.imperativeRequest_PrecardID = :precardId
                             and impReq.imperativeRequest_IsLocked = :isLocked 
                             and impReq.imperativeRequest_Year = :year 
                             and impReq.imperativeRequest_Month = :month
                            )";
            }

            IQuery query = base.NHibernateSession.CreateSQLQuery(SQLCommand)
                           .AddEntity(typeof(Person))
                           .SetParameter("searchKey", "%" + key + "%")
                           .SetParameter("userId", userId)
                           .SetParameter("managerId", managerId)
                           .SetParameter("searchCat", (int)searchCat);

            if (IRLS == ImperativeRequestLoadState.Applied || IRLS == ImperativeRequestLoadState.NotApplied)
            {
                query = query.SetParameter("precardId", imperativeRequest.Precard.ID)
                        .SetParameter("isLocked", imperativeRequest.IsLocked)
                        .SetParameter("year", imperativeRequest.Year)
                        .SetParameter("month", imperativeRequest.Month);
            }
            query = query.SetFirstResult(pageIndex * pageSize).SetMaxResults(pageSize);

            IList <Person> list = new List <Person>();

            list = query.List <Person>();

            return(list);
        }
Example #2
0
        public int GetQuickSearchPersonCountByImperativeRequest(string key, ImperativeRequestLoadState IRLS, ImperativeRequest imperativeRequest, decimal userId, decimal managerId, PersonCategory searchCat)
        {
            string SQLCommand = "";

            SQLCommand = @"select count(prs_ID) from TA_Person prs
                                  where Prs_IsDeleted=0  AND prs_Active=1 AND 
                                        (prs_BarCode like :searchKey OR
                                        prs_CardNum like :searchKey OR
                                        prs_FirstName + ' ' + prs_LastName like :searchKey)
                                        AND prs.prs_BarCode <> '00000000'
                                        AND prs.prs_ID in (select * from fn_GetAccessiblePersons(:managerId,:userId,:searchCat))";

            if (IRLS != ImperativeRequestLoadState.Normal)
            {
                SQLCommand += "AND prs_ID";
                switch (IRLS)
                {
                case ImperativeRequestLoadState.Applied:
                    SQLCommand += " in";
                    break;

                case ImperativeRequestLoadState.NotApplied:
                    SQLCommand += " not in";
                    break;
                }
                SQLCommand += @"(select impReq.imperativeRequest_PersonID from TA_ImperativeRequest impReq 
                             where impReq.imperativeRequest_PrecardID = :precardId
                             and impReq.imperativeRequest_IsLocked = :isLocked 
                             and impReq.imperativeRequest_Year = :year 
                             and impReq.imperativeRequest_Month = :month
                            )";
            }

            IQuery query = base.NHibernateSession.CreateSQLQuery(SQLCommand)
                           .SetParameter("searchKey", "%" + key + "%")
                           .SetParameter("userId", userId)
                           .SetParameter("managerId", managerId)
                           .SetParameter("searchCat", (int)searchCat);

            if (IRLS == ImperativeRequestLoadState.Applied || IRLS == ImperativeRequestLoadState.NotApplied)
            {
                query = query.SetParameter("precardId", imperativeRequest.Precard.ID)
                        .SetParameter("isLocked", imperativeRequest.IsLocked)
                        .SetParameter("year", imperativeRequest.Year)
                        .SetParameter("month", imperativeRequest.Month);
            }
            object count = query.List <object>().First();

            return(Utility.Utility.ToInteger(count.ToString()));
        }
        public int GetQuickSearchPersonCountByImperativeRequest(string key, ImperativeRequestLoadState IRLS, ImperativeRequest imperativeRequest, PersonCategory searchCat)
        {
            try
            {
                BApplicationSettings.CheckGTSLicense();

                IList <Person> personList = new List <Person>();

                key = key == null ? String.Empty : key;
                key = key.Trim();
                decimal managerId = this.personBusiness.GetCurentManagerId(ref searchCat);
                int     count     = this.imperativeRequestRepository.GetQuickSearchPersonCountByImperativeRequest(key, IRLS, imperativeRequest, BUser.CurrentUser.ID, managerId, searchCat);
                return(count);
            }
            catch (Exception ex)
            {
                LogException(ex, "BImperativeRequest", "GetQuickSearchPersonCountByImperativeRequest");
                throw ex;
            }
        }
        public int GetAdvancedSearchPersonCountByImperativeRequest(PersonAdvanceSearchProxy proxy, ImperativeRequestLoadState IRLS, ImperativeRequest imperativeRequest, PersonCategory searchInCategory)
        {
            try
            {
                BApplicationSettings.CheckGTSLicense();

                #region Date Convert
                if (!Utility.IsEmpty(proxy.FromBirthDate) && BLanguage.CurrentSystemLanguage == LanguagesName.Parsi)
                {
                    proxy.FromBirthDate = Utility.ToMildiDateString(proxy.FromBirthDate);
                }
                if (!Utility.IsEmpty(proxy.ToBirthDate) && BLanguage.CurrentSystemLanguage == LanguagesName.Parsi)
                {
                    proxy.ToBirthDate = Utility.ToMildiDateString(proxy.ToBirthDate);
                }
                if (!Utility.IsEmpty(proxy.FromEmploymentDate) && BLanguage.CurrentSystemLanguage == LanguagesName.Parsi)
                {
                    proxy.FromEmploymentDate = Utility.ToMildiDateString(proxy.FromEmploymentDate);
                }
                if (!Utility.IsEmpty(proxy.ToEmploymentDate) && BLanguage.CurrentSystemLanguage == LanguagesName.Parsi)
                {
                    proxy.ToEmploymentDate = Utility.ToMildiDateString(proxy.ToEmploymentDate);
                }
                if (!Utility.IsEmpty(proxy.WorkGroupFromDate) && BLanguage.CurrentSystemLanguage == LanguagesName.Parsi)
                {
                    proxy.WorkGroupFromDate = Utility.ToMildiDateString(proxy.WorkGroupFromDate);
                }
                if (!Utility.IsEmpty(proxy.RuleGroupFromDate) && BLanguage.CurrentSystemLanguage == LanguagesName.Parsi)
                {
                    proxy.RuleGroupFromDate = Utility.ToMildiDateString(proxy.RuleGroupFromDate);
                }
                if (!Utility.IsEmpty(proxy.RuleGroupToDate) && BLanguage.CurrentSystemLanguage == LanguagesName.Parsi)
                {
                    proxy.RuleGroupToDate = Utility.ToMildiDateString(proxy.RuleGroupToDate);
                }
                if (!Utility.IsEmpty(proxy.CalculationFromDate) && BLanguage.CurrentSystemLanguage == LanguagesName.Parsi)
                {
                    proxy.CalculationFromDate = Utility.ToMildiDateString(proxy.CalculationFromDate);
                }
                #endregion

                decimal managerId = this.personBusiness.GetCurentManagerId(ref searchInCategory);
                int     count     = this.imperativeRequestRepository.GetAdvancedSearchPersonCountByImperativeRequest(proxy, IRLS, imperativeRequest, BUser.CurrentUser.ID, managerId, searchInCategory);
                return(count);
            }
            catch (Exception ex)
            {
                LogException(ex, "BImperativeRequest", "GetAdvancedSearchPersonCountByImperativeRequest");
                throw ex;
            }
        }
        public IList <ImperativeUndermanagementInfoProxy> GetQuickSearchPersonByImperativeRequest(string searchValue, ImperativeRequestLoadState IRLS, ImperativeRequest imperativeRequest, PersonCategory searchInCategory, int pageIndex, int pageSize)
        {
            try
            {
                UIValidationExceptions exception = new UIValidationExceptions();
                if (imperativeRequest.Precard == null || imperativeRequest.Precard.ID == 0)
                {
                    exception.Add(new ValidationException(ExceptionResourceKeys.RequestPrecardIsEmpty, "پیشکارت نباید خالی باشد", ExceptionSrc));
                }
                if (imperativeRequest.Year == null || imperativeRequest.Year == 0)
                {
                    exception.Add(new ValidationException(ExceptionResourceKeys.RequestYearIsEmpty, "سال نباید خالی باشد", ExceptionSrc));
                }
                if (imperativeRequest.Month == null || imperativeRequest.Month == 0)
                {
                    exception.Add(new ValidationException(ExceptionResourceKeys.RequestMonthIsEmpty, "ماه نباید خالی باشد", ExceptionSrc));
                }

                if (exception.Count == 0)
                {
                    BApplicationSettings.CheckGTSLicense();

                    IList <Person> personList = new List <Person>();
                    ISearchPerson  searchTool = new BPerson();
                    searchValue = searchValue == null ? String.Empty : searchValue;
                    searchValue = searchValue.Trim();
                    int count = searchTool.GetPersonInQuickSearchCount(searchValue, searchInCategory);
                    if (pageSize * pageIndex == 0 || pageSize * pageIndex < count)
                    {
                        decimal        managerId = this.personBusiness.GetCurentManagerId(ref searchInCategory);
                        IList <Person> result    = this.imperativeRequestRepository.GetQuickSearchPersonByImperativeRequest(searchValue, IRLS, imperativeRequest, BUser.CurrentUser.ID, managerId, searchInCategory, pageSize, pageIndex);
                        return(this.ConvertToImperativeUndermanagementInfoProxy(result, imperativeRequest, pageSize, pageIndex));
                    }
                    else
                    {
                        throw new OutOfExpectedRangeException("0", Convert.ToString(count - 1), Convert.ToString(pageSize * (pageIndex + 1)), ExceptionSrc + "GetQuickSearchPersonByImperativeRequest");
                    }
                }
                else
                {
                    throw exception;
                }
            }
            catch (Exception ex)
            {
                LogException(ex, "BImperativeRequest", "GetQuickSearchPersonByImperativeRequest");
                throw ex;
            }
        }
        public IList <ImperativeUndermanagementInfoProxy> GetAdvancedSearchPersonByImperativeRequest(PersonAdvanceSearchProxy proxy, ImperativeRequestLoadState IRLS, ImperativeRequest imperativeRequest, PersonCategory searchInCategory, int pageIndex, int pageSize)
        {
            try
            {
                UIValidationExceptions exception = new UIValidationExceptions();
                if (imperativeRequest.Precard == null || imperativeRequest.Precard.ID == 0)
                {
                    exception.Add(new ValidationException(ExceptionResourceKeys.RequestPrecardIsEmpty, "پیشکارت نباید خالی باشد", ExceptionSrc));
                }
                if (imperativeRequest.Year == null || imperativeRequest.Year == 0)
                {
                    exception.Add(new ValidationException(ExceptionResourceKeys.RequestYearIsEmpty, "سال نباید خالی باشد", ExceptionSrc));
                }
                if (imperativeRequest.Month == null || imperativeRequest.Month == 0)
                {
                    exception.Add(new ValidationException(ExceptionResourceKeys.RequestMonthIsEmpty, "ماه نباید خالی باشد", ExceptionSrc));
                }

                if (exception.Count == 0)
                {
                    BApplicationSettings.CheckGTSLicense();

                    #region Date Convert
                    if (!Utility.IsEmpty(proxy.FromBirthDate) && BLanguage.CurrentSystemLanguage == LanguagesName.Parsi)
                    {
                        proxy.FromBirthDate = Utility.ToMildiDateString(proxy.FromBirthDate);
                    }
                    if (!Utility.IsEmpty(proxy.ToBirthDate) && BLanguage.CurrentSystemLanguage == LanguagesName.Parsi)
                    {
                        proxy.ToBirthDate = Utility.ToMildiDateString(proxy.ToBirthDate);
                    }
                    if (!Utility.IsEmpty(proxy.FromEmploymentDate) && BLanguage.CurrentSystemLanguage == LanguagesName.Parsi)
                    {
                        proxy.FromEmploymentDate = Utility.ToMildiDateString(proxy.FromEmploymentDate);
                    }
                    if (!Utility.IsEmpty(proxy.ToEmploymentDate) && BLanguage.CurrentSystemLanguage == LanguagesName.Parsi)
                    {
                        proxy.ToEmploymentDate = Utility.ToMildiDateString(proxy.ToEmploymentDate);
                    }
                    if (!Utility.IsEmpty(proxy.WorkGroupFromDate) && BLanguage.CurrentSystemLanguage == LanguagesName.Parsi)
                    {
                        proxy.WorkGroupFromDate = Utility.ToMildiDateString(proxy.WorkGroupFromDate);
                    }
                    if (!Utility.IsEmpty(proxy.RuleGroupFromDate) && BLanguage.CurrentSystemLanguage == LanguagesName.Parsi)
                    {
                        proxy.RuleGroupFromDate = Utility.ToMildiDateString(proxy.RuleGroupFromDate);
                    }
                    if (!Utility.IsEmpty(proxy.RuleGroupToDate) && BLanguage.CurrentSystemLanguage == LanguagesName.Parsi)
                    {
                        proxy.RuleGroupToDate = Utility.ToMildiDateString(proxy.RuleGroupToDate);
                    }
                    if (!Utility.IsEmpty(proxy.CalculationFromDate) && BLanguage.CurrentSystemLanguage == LanguagesName.Parsi)
                    {
                        proxy.CalculationFromDate = Utility.ToMildiDateString(proxy.CalculationFromDate);
                    }
                    #endregion

                    IList <Person> list;
                    if (!Utility.IsEmpty(proxy.PersonId))
                    {
                        list = new List <Person>();
                        Person prs = this.personBusiness.GetByID((decimal)proxy.PersonId);
                        list.Add(prs);
                    }
                    else
                    {
                        decimal managerId = personBusiness.GetCurentManagerId(ref searchInCategory);
                        list = this.imperativeRequestRepository.GetAdvancedSearchPersonByImperativeRequest(proxy, IRLS, imperativeRequest, BUser.CurrentUser.ID, managerId, searchInCategory, pageIndex, pageSize);
                    }
                    return(this.ConvertToImperativeUndermanagementInfoProxy(list, imperativeRequest, pageSize, pageIndex));
                }
                else
                {
                    throw exception;
                }
            }
            catch (Exception ex)
            {
                LogException(ex, "BImperativeRequest", "GetAdvancedSearchPersonByImperativeRequest");
                throw ex;
            }
        }
Example #7
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 #8
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);
        }