示例#1
0
 private void ReplaceWithUserDefinedRules(FilterWithOperators filter)
 {
     if (filter.Filter != null && filter.Filter.Rules != null)
     {
         int paramIndex = 0;
         foreach (var rule in filter.Filter.Rules)
         {
             if (rule.PropertyName == "ChildCallIds")
             {
                 rule.Operator     = filter.FilterOperators.UserDefinedOperator;
                 rule.PropertyName = String.Format("ChildPhoneCalls.Count(p{0} => p{0}.Id == {1}) > 0", paramIndex++, rule.PropertyValue);
                 continue;
             }
             if (rule.PropertyName == "UserInfo")
             {
                 rule.Operator     = filter.FilterOperators.UserDefinedOperator;
                 rule.PropertyName = String.Format("UserInPhoneCall.Count(u{0} => u{0}.User.Phone.Contains(\"{1}\")) > 0", paramIndex++, rule.PropertyValue);
                 continue;
             }
             if (rule.PropertyName == "Status" && String.IsNullOrWhiteSpace(rule.PropertyValue))
             {
                 rule.PropertyValue = "0";
                 continue;
             }
             if (rule.PropertyName == "Duration")
             {
                 rule.PropertyName = "DurationSeconds";
             }
         }
     }
 }
 public virtual IEnumerable <T> FindAmount(FilterWithOperators filter, int fromRow, int amount, String orderPropertyName, SortOrder sortOrder = SortOrder.Asc)
 {
     return(Queryable.Where(filter)
            .OrderBy(String.Format("{0} {1}", (orderPropertyName == null ? DefaultOrderProperty : orderPropertyName), sortOrder.GetDescription()))
            .Skip(fromRow)
            .Take(amount)
            .ToList());
 }
示例#3
0
        public IList <PhoneCallDTO> GetPhoneCalls(FilterWithOperators filter, int page, int amount, string sortPropertyName, SortOrder sortOrder, out PaginationInfo paginationInfo)
        {
            if (sortPropertyName == "Duration")
            {
                sortPropertyName = "DurationSeconds";
            }

            paginationInfo = new PaginationInfo();
            List <PhoneCall>    phoneCallList    = null;
            List <PhoneCallDTO> phoneCallDTOList = new List <PhoneCallDTO>();

            ReplaceWithUserDefinedRules(filter);

            paginationInfo.RowsCount = _database.PhoneCalls.Count(filter);

            if (paginationInfo.RowsCount == 0)
            {
                paginationInfo.PageNumber = 1;
                paginationInfo.PagesCount = 1;
                return(phoneCallDTOList);
            }

            if (amount <= 0)
            {
                amount = 10;
            }

            if (amount > paginationInfo.RowsCount)
            {
                amount = paginationInfo.RowsCount;
            }

            paginationInfo.AmountOnPage = amount;
            paginationInfo.PagesCount   = paginationInfo.RowsCount / amount;
            if (paginationInfo.RowsCount % amount > 0)
            {
                ++paginationInfo.PagesCount;
            }

            paginationInfo.PageNumber = page;
            if (paginationInfo.PageNumber > paginationInfo.PagesCount)
            {
                paginationInfo.PageNumber = paginationInfo.PagesCount;
            }

            if (paginationInfo.PageNumber <= 0)
            {
                paginationInfo.PageNumber = 1;
            }

            phoneCallList = _database.PhoneCalls.FindAmount(filter, (paginationInfo.PageNumber - 1) * amount, amount, sortPropertyName, sortOrder).ToList();

            phoneCallDTOList = BLLMapperConfigurer.Mapper.Map <List <PhoneCall>, List <PhoneCallDTO> >(phoneCallList);
            return(phoneCallDTOList);
        }
示例#4
0
 public override IEnumerable <PhoneCall> FindAmount(FilterWithOperators filter, int fromRow, int amount, String orderPropertyName, SortOrder sortOrder = SortOrder.Asc)
 {
     return(base.FindAmount(filter, fromRow, amount, orderPropertyName, sortOrder));
 }
 public virtual int Count(FilterWithOperators filter)
 {
     return(DbSet.Where(filter).Count());
 }