예제 #1
0
 public RouteValueDictionary GetFilterRouteValues()
 {
     if (StatelessFilter != null)
     {
         return(StatelessFilter.GetFilterRouteValues());
     }
     return(null);
 }
예제 #2
0
        public string GetWhereClause(bool ignoreChildTables = false, int?limitByUserId = null)
        {
            var sb               = new StringBuilder();
            var parentType       = typeof(T);
            var linkedTableInfos = GetLinkedTableInfos();

            foreach (var columnInfo in GetDataBoundColumnInfosNotIdColumns())
            {
                var linkedTable = linkedTableInfos.FirstOrDefault(c => c.ColumnName == columnInfo.Data);
                var searchValue = !string.IsNullOrEmpty(SearchValue) ? GetLikeSearchValue() : (!string.IsNullOrEmpty(columnInfo.SearchValue) ? columnInfo.GetLikeSearchValue() : string.Empty);

                if (!string.IsNullOrEmpty(searchValue))
                {
                    if (linkedTable != null)
                    {
                        if (!ignoreChildTables)
                        {
                            sb.Append(sb.Length == 0 ? "WHERE (" : " OR ");
                            sb.AppendFormat("[{0}].[{1}] LIKE '{2}'", linkedTable.LinkedTableName, linkedTable.LinkedTableColumnName, searchValue);
                        }
                    }
                    else
                    {
                        sb.Append(sb.Length == 0 ? "WHERE (" : " OR ");
                        sb.AppendFormat("[{0}].[{1}] LIKE '{2}'", parentType.Name, columnInfo.Data, searchValue);
                    }
                }
            }

            if (sb.Length > 0)
            {
                sb.Append(")");
            }

            if (limitByUserId.HasValue)
            {
                if (!typeof(T).ImplementsIUserData())
                {
                    throw new LimitByUserIdException();
                }
                sb.Append(sb.Length == 0 ? "WHERE " : " AND ");
                sb.AppendFormat("[{0}].[UserId] = {1}", parentType.Name, limitByUserId.Value);
            }

            if (StatelessFilter != null && StatelessFilter.IsSet())
            {
                sb.Append(sb.Length == 0 ? "WHERE " : " AND ");
                sb.AppendFormat("[{0}].[{1}] = {2}", parentType.Name, StatelessFilter.Key, StatelessFilter.Id);
            }

            sb.Append(sb.Length == 0 ? "WHERE " : " AND ");
            sb.Append($"[{parentType.Name}].[IsDeleted] = 0");

            return(sb.ToString());
        }