Beispiel #1
0
        public void ShouldFilterString()
        {
            // given
            var gridFilter = new GridFilters <UserRM>
            {
                PageIndex = 1,
                PageSize  = 5,
                SortField = "Email",
                SortOrder = "asc",
                Filters   = new UserRM
                {
                    Id        = 69,
                    Email     = "",
                    FirstName = "Mark",
                    LastName  = "",
                }
            };

            // when
            var result = _queryHandler.Execute(gridFilter, new TeachersQueryHandler.Query());

            // then
            Assert.AreEqual(result.ItemsCount, 2);
            CollectionAssert.AreEquivalent(
                result.Data.Select(a => a.Id),
                new[] { _teacher1, _teacher2 }.Select(a => a.ID)
                );
        }
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            GridOptions requestOptions = new GridOptions();

            var requestQuery = filterContext.HttpContext.Request.QueryString;

            if (requestQuery.HasKeys())
            {
                GridFilters filterOps    = null;
                string      filterString = requestQuery["filters"];
                if (!String.IsNullOrWhiteSpace(filterString))
                {
                    filterOps = Newtonsoft.Json.JsonConvert.DeserializeObject <GridFilters>(filterString);
                }
                requestOptions.Filters   = filterOps;
                requestOptions.IsSearch  = Boolean.Parse(requestQuery["_search"]);
                requestOptions.ND        = requestQuery["nd"];
                requestOptions.Page      = Int32.Parse(requestQuery["page"]);
                requestOptions.Rows      = Int32.Parse(requestQuery["rows"]);
                requestOptions.SortIndex = requestQuery["sidx"];
                requestOptions.SortOrder = requestQuery["sord"];
            }

            if (filterContext.ActionParameters.ContainsKey("options"))
            {
                filterContext.ActionParameters["options"] = requestOptions;
            }
            else
            {
                filterContext.ActionParameters.Add("options", requestOptions);
            }

            base.OnActionExecuting(filterContext);
        }
Beispiel #3
0
        public void GridFilters_RegistersDefaultFilters(Type type, String name, Type filter)
        {
            Type actual   = new GridFilters().Table[type][name];
            Type expected = filter;

            Assert.Equal(expected, actual);
        }
Beispiel #4
0
        public JsonResult ReadCTKhenThuong(GridFilters filter = null)
        {
            try
            {
                IEnumerable <CTKhenThuongViewModel> dsCTKhenThuong = null;

                //filter
                if (filter != null && filter.Filters != null && filter.Filters.Count > 0)
                {
                    var field   = filter.Filters[0].Field;
                    var operate = filter.Filters[0].Operator;
                    var value   = filter.Filters[0].Value;
                    int maqd;

                    if (field == "MaQuyetDinh" && operate == "eq" &&
                        int.TryParse(value, out maqd))
                    {
                        dsCTKhenThuong = _CTKhenThuongService.GetCTKhenThuongInQDKhenThuong(maqd);
                    }
                }
                if (dsCTKhenThuong == null)
                {
                    dsCTKhenThuong = _CTKhenThuongService.GetAllCTKhenThuongVM();
                }

                return(Json(dsCTKhenThuong));
            }
            catch (Exception ex)
            {
                //Show Message here
                return(Json(new { error = ex.Message }));
            }
        }
Beispiel #5
0
        protected IQueryable <T> ApplyOrder <T>(GridFilters <TResult> filters, IQueryable <T> query)
        {
            string methodName;

            if (filters.SortOrder?.ToLower() == "asc")
            {
                methodName = nameof(Queryable.OrderBy);
            }
            else if (filters.SortOrder?.ToLower() == "desc")
            {
                methodName = nameof(Queryable.OrderByDescending);
            }
            else
            {
                return(query);
            }

            var elementType         = typeof(T);
            var parameterExpression = Expression.Parameter(elementType);
            var propertyExpression  = Expression.Property(parameterExpression, filters.SortField);
            var selector            = Expression.Lambda(propertyExpression, parameterExpression);

            var orderByExpression = Expression.Call(
                typeof(Queryable),
                methodName,
                new[] { elementType, propertyExpression.Type },
                query.Expression,
                selector);

            return(query.Provider.CreateQuery <T>(orderByExpression));
        }
        public override GridResult <UserRM> Execute(GridFilters <UserRM> filters, Query query)
        {
            var students = _dbContext.Students
                           .Include(a => a.AppUser);

            return(Result(filters, students));
        }
        public override GridResult <UserRM> Execute(GridFilters <UserRM> filters, Query query)
        {
            var admins = _dbContext.Admins
                         .Include(a => a.AppUser);

            return(Result(filters, admins));
        }
Beispiel #8
0
        public GridFiltersTests()
        {
            filters = new GridFilters();
            Grid <GridModel> grid = new Grid <GridModel>(Array.Empty <GridModel>());

            column = new GridColumn <GridModel, String?>(grid, model => model.Name);
        }
Beispiel #9
0
        public GridFiltersTests()
        {
            filters = new GridFilters();
            Grid <GridModel> grid = new Grid <GridModel>(new GridModel[0]);

            column = new GridColumn <GridModel, String>(grid, model => model.Name);
        }
        public static IEnumerable <TRow> Select <TKey, TTable, TDataContext, TRow>(
            this BaseDataSourceView <TKey, TTable, TDataContext, TRow> view,
            StoreReadDataEventArgs e,
            BaseFilterControl <TKey, TTable, TDataContext> filter,
            GridFilters gridFilter,
            BaseGridColumns columns,
            bool sort)
            where TKey : struct
            where TTable : class
            where TDataContext : DataContext, new()
            where TRow : BaseRow, new()
        {
            var dataSourceSelectArguments = new DataSourceSelectArguments(e.Start, e.Limit);

            dataSourceSelectArguments.RetrieveTotalRowCount = true;

            if (sort && e.Sort != null && e.Sort.Length > 0)
            {
                dataSourceSelectArguments.SortExpression = GetSortExpression(columns, e.Sort);
            }

            IEnumerable result = null;

            view.Select(dataSourceSelectArguments, data => { result = data; });
            e.Total = dataSourceSelectArguments.TotalRowCount;

            return(result.Cast <TRow>());
        }
        public override GridResult <UserRM> Execute(GridFilters <UserRM> filters, Query query)
        {
            var teachers = _dbContext.Teachers
                           .Include(a => a.AppUser);

            return(Result(filters, teachers));
        }
 public GridFiltersTests()
 {
     column = new GridColumn<GridModel, String>(new Grid<GridModel>(new GridModel[0]), model => model.Name);
     column.Grid.Query = new QueryCollection();
     column.IsMultiFilterable = true;
     filters = new GridFilters();
 }
 public GridFiltersTests()
 {
     column                   = new GridColumn <GridModel, String>(new Grid <GridModel>(new GridModel[0]), model => model.Name);
     column.Grid.Query        = new QueryCollection();
     column.IsMultiFilterable = true;
     filters                  = new GridFilters();
 }
Beispiel #14
0
        public void ShouldSort(string order)
        {
            // given
            var gridFilter = new GridFilters <UserRM>
            {
                PageIndex = 1,
                PageSize  = 5,
                SortField = "Email",
                SortOrder = "asc",
            };

            // when
            var result = _queryHandler.Execute(gridFilter, new TeachersQueryHandler.Query());

            // then
            if (order == "asc")
            {
                CollectionAssert.AreEquivalent(
                    result.Data.Select(a => a.Id),
                    _teachers.OrderBy(x => x.AppUser.Email).Select(x => x.ID)
                    );
            }
            else if (order == "asc")
            {
                CollectionAssert.AreEquivalent(
                    result.Data.Select(a => a.Id),
                    _teachers.OrderByDescending(x => x.AppUser.Email).Select(x => x.ID)
                    );
            }
        }
Beispiel #15
0
        public void GridFilters_RegistersDefaultFilters(Type type, String name, Type expected)
        {
            GridFilters filters = new GridFilters();

            Type actual = filters.Table[type][name];

            Assert.AreEqual(expected, actual);
        }
        public override GridResult <SectionRM> Execute(GridFilters <SectionRM> filters, Query query)
        {
            var sections = _dbContext.Sections
                           .Include(x => x.StudentSections)
                           .Where(x => x.StudentSections.Any(y => y.StudentID == query.StudentId));

            return(Result(filters, sections));
        }
        public override GridResult <SectionRM> Execute(GridFilters <SectionRM> filters, Query query)
        {
            var sections = _dbContext.Sections
                           .Include(x => x.StudentSections)
                           .Where(x => x.State == Entities.SectionState.Active)
                           .Where(x => x.StudentSections.All(y => y.StudentID != query.StudentId));

            return(Result(filters, sections));
        }
Beispiel #18
0
        public override GridResult <SectionRM> Execute(GridFilters <SectionRM> filters, Query query)
        {
            var sections = _dbContext.Sections.Join(
                _dbContext.Topics.Where(t => t.TeacherID == query.TeacherID),
                x => x.TopicID,
                y => y.ID,
                (sec, top) => sec);

            return(Result(filters, sections));
        }
Beispiel #19
0
        public GridFiltersTests()
        {
            Expression<Func<GridModel, String>> expression = (model) => model.Name;
            column = Substitute.For<IGridColumn<GridModel>>();
            column.Grid.Query = new NameValueCollection();
            column.Expression.Returns(expression);
            column.IsMultiFilterable = true;
            column.Grid.Name = "Grid";
            column.Name = "Name";

            filters = new GridFilters();
        }
        public static IServiceCollection AddItnGrid(this IServiceCollection services, Action <IGridFilters> configure)
        {
            services.Configure <MvcOptions>(options =>
            {
                options.ModelBinderProviders.Insert(0, new GridModelBinderProvider());
            });

            IGridFilters filters = new GridFilters();

            configure(filters);

            return(services.AddSingleton(filters));
        }
 public static IEnumerable <TRow> Select <TKey, TTable, TDataContext, TRow>(
     this BaseDataSourceView <TKey, TTable, TDataContext, TRow> view,
     StoreReadDataEventArgs e,
     BaseFilterControl <TKey, TTable, TDataContext> filter,
     GridFilters gridFilter,
     BaseGridColumns columns)
     where TKey : struct
     where TTable : class
     where TDataContext : DataContext, new()
     where TRow : BaseRow, new()
 {
     return(Select(view, e, filter, gridFilter, columns, true));
 }
Beispiel #22
0
        public GridFiltersTests()
        {
            Expression <Func <GridModel, String> > expression = (model) => model.Name;

            column            = Substitute.For <IGridColumn <GridModel> >();
            column.Grid.Query = new NameValueCollection();
            column.Expression.Returns(expression);
            column.IsMultiFilterable = true;
            column.Grid.Name         = "Grid";
            column.Name = "Name";

            filters = new GridFilters();
        }
Beispiel #23
0
 private void AddSearchFilters(GridFilters gridFilters, string search, params string[] searchFields)
 {
     string[] fieldsToSearch = searchFields;
     if (!String.IsNullOrEmpty(search))
     {
         foreach (var item in fieldsToSearch)
         {
             gridFilters.Filters.Add(new GridFilter()
             {
                 _value = search, Field = item.Replace("_", ".").ToString(), Operator = "LIKE"
             });
         }
     }
 }
Beispiel #24
0
 public static void ReadData <TKey, TTable, TDataContext, TRow>(
     this GridPanel gridPanel,
     BaseDataSourceView <TKey, TTable, TDataContext, TRow> view,
     StoreReadDataEventArgs e,
     BaseFilterControl <TKey, TTable, TDataContext> filter,
     GridFilters gridFilter,
     BaseGridColumns columns)
     where TKey : struct
     where TTable : class
     where TDataContext : DataContext, new()
     where TRow : BaseRow, new()
 {
     gridPanel.GetStore().ReadData <TKey, TTable, TDataContext, TRow>(view, e, filter, gridFilter, columns);
 }
        public static void InitializeColumns(this GridFilters gridFilter, IEnumerable <IGridColumn> columns)
        {
            foreach (var column in columns)
            {
                if (column.HasFilter)
                {
                    gridFilter.Filters.Add(column.CreateFilter());
                }

                if (column.HasChildren)
                {
                    gridFilter.InitializeColumns(column.Children);
                }
            }
        }
        public string GetDetailGrid(int pageTemplateId, string refKeyValue)
        {
            PageTemplate pageTemplate = SessionService.PageTemplate(pageTemplateId);

            if (pageTemplate.RefKey2 == 0)
            {
                return("");
            }

            GridFilters gridFilters = new GridFilters {
                Logic = "and", Filters = new List <GridFilter> {
                    new GridFilter {
                        Field = pageTemplate.RefKey2Name, Operator = "eq", Value = refKeyValue
                    }
                }
            };


            PageTemplate    pageTemplate2 = SessionService.PageTemplate(pageTemplate.PageTemplateId2);
            List <GridSort> gridSorts     = new List <GridSort>();

            //xxx fix
            //if (pageTemplate2.SortColumns.Length > 2)
            //{
            //    var sortColumns = pageTemplate2.SortColumns;
            //    if (sortColumns.Contains(","))
            //    {
            //        var items = sortColumns.Split(new char[',']);
            //        foreach (var item in items)
            //        {
            //            var columnId = item.Replace(" ", "").Replace("ASC", "").Replace("DESC", "");
            //            var columnName = SessionService.ColumnName(Convert.ToInt32(columnId));
            //            GridSort gridSort = new GridSort { Field = columnName, Dir = (item.Contains("ASC")) ? "ASC" : "DESC" };
            //            gridSorts.Add(gridSort);
            //        }
            //    } else
            //    {
            //        var columnId = sortColumns.Replace(" ", "").Replace("ASC", "").Replace("DESC", "");
            //        var columnName = SessionService.ColumnName(Convert.ToInt32(columnId));
            //        GridSort gridSort = new GridSort { Field = columnName, Dir = (sortColumns.Contains("ASC")) ? "ASC" : "DESC" };
            //        gridSorts.Add(gridSort);
            //    }
            //}

            var json = PageService.GetServerSideRecords(0, 500000, 0, 0, gridSorts, gridFilters, pageTemplate.PageTemplateId2);

            return(json);
        }
Beispiel #27
0
        public IQueryable <TEntity> FilterEntity(IQueryable <TEntity> entity,
                                                 string orderByDefault,
                                                 string orderby,
                                                 string sortAscDesc,
                                                 int?limit,
                                                 int?offset,
                                                 dynamic filter,
                                                 string search,
                                                 out int totalCount,
                                                 params string[] searchFields)
        {
            GridFilters gridFilters = GetGridFilters(filter);

            gridFilters.Logic = "and";
            AddSearchFilters(gridFilters, search, searchFields);

            List <GridSort> gridSort = GetSortBy(sortAscDesc, orderby);

            object[] parameters;
            string   whereClause = GetWhereClause(gridFilters, out parameters);

            if (!String.IsNullOrEmpty(whereClause))
            {
                entity = entity.Where(whereClause, parameters);
            }

            if (gridSort != null && gridSort.Count > 0)
            {
                foreach (var s in gridSort)
                {
                    entity = entity.OrderBy(orderby + " " + sortAscDesc);
                }
            }
            else
            {
                if (!String.IsNullOrEmpty(orderByDefault))
                {
                    entity = entity.OrderBy(orderByDefault);
                }
            }

            var totalEntity = entity;

            totalCount = totalEntity.Select(s => 1).Count();
            entity     = entity.Skip(Convert.ToInt32(offset)).Take(Convert.ToInt32(limit));

            return(entity);
        }
Beispiel #28
0
        protected GridResult <TResult> Result <T>(GridFilters <TResult> filters, IQueryable <T> query)
        {
            var props             = typeof(TResult).GetProperties();
            var filterExpressions = GenerateFilterExpressions(filters.Filters, props);

            var qry = query.ProjectTo <TResult>(_mapperConfiguration);

            foreach (var exp in filterExpressions)
            {
                qry = qry.Where(exp);
            }
            qry = ApplyOrder(filters, qry);

            return(new GridResult <TResult>
            {
                ItemsCount = qry.Count(),
                Data = ApplyPagination(filters, qry)
            });
        }
Beispiel #29
0
        public static void ReadData <TKey, TTable, TDataContext, TRow>(
            this Store store,
            BaseDataSourceView <TKey, TTable, TDataContext, TRow> view,
            StoreReadDataEventArgs e,
            BaseFilterControl <TKey, TTable, TDataContext> filter,
            GridFilters gridFilter,
            BaseGridColumns columns)
            where TKey : struct
            where TTable : class
            where TDataContext : DataContext, new()
            where TRow : BaseRow, new()
        {
            if (filter.Url.UserControl == null)
            {
                filter.Url.UserControl = filter.GetTableName() + "Journal";
            }
            try
            {
                var data = view.Select(e, filter, gridFilter, columns, store.RemoteSort);
                if (!string.IsNullOrEmpty(store.DataSourceID))
                {
                    store.DataSourceID = null;
                }
                store.DataSource = data;
            }
            catch (SqlException exception)
            {
                if (exception.Number != -2)
                {
                    throw;
                }

                store.DataSource = new TRow[0];
                X.Msg.Show(new MessageBoxConfig
                {
                    Title   = Properties.Resources.SInformation,
                    Message = Properties.Resources.STimeOut,
                    Buttons = MessageBox.Button.OK,
                    Icon    = MessageBox.Icon.WARNING,
                });
            }
        }
Beispiel #30
0
        private GridFilters GetGridFilters(dynamic filter)
        {
            GridFilters gridFilters = new GridFilters();

            gridFilters.Filters = new List <GridFilter>();

            if (filter != null)
            {
                var filtersParam = ((IDictionary <String, object>)filter);
                if (filtersParam != null)
                {
                    foreach (var item in filtersParam)
                    {
                        var values = ((IDictionary <String, object>)item.Value);
                        foreach (var itemVal in values)
                        {
                            var           data      = (IList <object>)itemVal.Value;
                            List <string> paramList = new List <string>();
                            foreach (var dataItem in data)
                            {
                                if (dataItem != null)
                                {
                                    paramList.Add(dataItem.ToString());
                                }
                            }
                            if (paramList.Count > 0)
                            {
                                gridFilters.Filters.Add(new GridFilter()
                                {
                                    _value = String.Join(",", paramList.ToArray()), Field = item.Key.Replace("_", ".").ToString(), Operator = "IN"
                                });
                            }
                        }
                    }
                }
            }

            return(gridFilters);
        }
Beispiel #31
0
    private void InitComponent(GridPanelInfo panel, List <GridPanelColumnInfo> columnList)
    {
        if (panel.DisplayRowNumber)
        {
            RowNumbererColumn stt = new RowNumbererColumn();
            stt.Header = "STT";
            GridPanel1.ColumnModel.Columns.Add(stt);
        }
        if (panel.Header == false)
        {
            GridPanel1.Title = "";
        }
        else
        {
            GridPanel1.Title = panel.Title;
        }
        if (!string.IsNullOrEmpty(panel.AutoExpandColumn))
        {
            columnList = GridController.GetInstance().GetColumnInfo(this.ID, TableName, 1);
            if (columnList.Count() != 0)
            {
                if (columnList.Where(p => p.ColumnName == panel.AutoExpandColumn).FirstOrDefault() != null)
                {
                    GridPanel1.AutoExpandColumn = panel.AutoExpandColumn;
                }
            }
            else
            {
                datatable = DataController.DataHandler.GetInstance().ExecuteDataTable("select top 1 * from " + TableName);
                foreach (DataColumn item in datatable.Columns)
                {
                    if (item.ColumnName == panel.AutoExpandColumn)
                    {
                        GridPanel1.AutoExpandColumn = panel.AutoExpandColumn;
                        break;
                    }
                }
            }
        }
        this.PrimaryKey = Util.GetInstance().GetPrimaryKeyOfTable(panel.TableName);
        // Store1.AutoLoadParams.Add(new Ext.Net.Parameter("limit", panel.PageSize.ToString()));

        //sHdfgridName.Value = this.ID.ToString();
        //sHdftable.Value = this.TableName;
        //sHdfPrimaryKey.Value = panel.PrimaryColumn;
        //sHdfwhere.Value = panel.WhereClause.Replace("where", "");

        //if (this.Height != 0)
        //    GridPanel1.Height = this.Height;
        //else
        //    GridPanel1.Height = panel.Height.Value;
        //if (this.Width != 0)
        //    GridPanel1.Width = this.Width;
        //else
        //    GridPanel1.Width = panel.Width.Value;

        GenerateListener();
        //if (panel.PageSize.HasValue)
        //    PagingToolbar1.PageSize = panel.PageSize.Value;
        //else
        //    PagingToolbar1.PageSize = 5;

        if (!string.IsNullOrEmpty(panel.Icon))
        {
            GridPanel1.IconCls = panel.Icon;
        }
        else
        {
            GridPanel1.Icon = Icon.Table;
        }
        //set local filter
        if (panel.AllowFilter)
        {
            GridFilters filter = new GridFilters();
            filter.Local       = true;
            filter.FiltersText = "Lọc";
            GridPanel1.Plugins.Add(filter);
            datatable = DataController.DataHandler.GetInstance().ExecuteDataTable("select top 1 * from " + TableName);
            foreach (DataColumn item in datatable.Columns)
            {
                switch (item.DataType.ToString())
                {
                case "System.Int32":
                    NumericFilter numberic = new NumericFilter();
                    numberic.DataIndex = item.ColumnName;
                    filter.Filters.Add(numberic);
                    break;

                case "System.Boolean":
                    BooleanFilter boolean = new BooleanFilter();
                    boolean.DataIndex = item.ColumnName;
                    filter.Filters.Add(boolean);
                    break;

                case "System.String":
                    StringFilter str = new StringFilter();
                    str.DataIndex = item.ColumnName;
                    filter.Filters.Add(str);
                    break;

                case "System.DateTime":
                    DateFilter datefilter = new DateFilter();
                    datefilter.BeforeText = "Trước ngày";
                    datefilter.AfterText  = "Sau ngày";
                    datefilter.OnText     = "Vào ngày";
                    datefilter.DataIndex  = item.ColumnName;
                    filter.Filters.Add(datefilter);
                    break;
                }
            }
        }
    }
Beispiel #32
0
        public void GridFilters_RegistersDefaultFilters(Type type, String name, Type expected)
        {
            GridFilters filters = new GridFilters();

            Type actual = filters.Table[type][name];

            Assert.Equal(expected, actual);
        }
Beispiel #33
0
 public JsonResult StudentSearchQuery([FromBody] GridFilters <UserRM> filter)
 => Json(_gridQueryRunner.Run(filter, new StudentsQueryHandler.Query()));