public JsonResult Export(KendoGridFilter filter, string guid)
        {
            var gridRequest = new KendoGridMvcRequest();

            if (filter != null)
            {
                gridRequest.FilterObjectWrapper = filter.Filters != null?filter.ToFilterObjectWrapper() : null;

                gridRequest.Logic = filter.Logic;
            }

            var query   = GetQueryable().AsNoTracking();
            var results = query.FilterBy <Employee, EmployeeVM>(gridRequest);

            using (var stream = new MemoryStream())
            {
                using (var excel = new ExcelPackage(stream))
                {
                    excel.Workbook.Worksheets.Add("Employees");
                    var ws = excel.Workbook.Worksheets[1];
                    ws.Cells.LoadFromCollection(results, true);
                    ws.Cells.AutoFitColumns();

                    excel.Save();
                    Session[guid] = stream.ToArray();
                    return(Json(new { success = true }));
                }
            }
        }
        public virtual IQueryable GetAutoComplete(KendoGridMvcRequest request)
        {
            // Get filter from KendoGridRequest (in case of kendoAutoComplete there is only 1 filter)
            var filter = request.FilterObjectWrapper.FilterObjects.First();

            // Change the field-name in the filter from ViewModel to Entity
            string fieldOriginal = filter.Field1;

            filter.Field1 = MapFieldfromViewModeltoEntity(filter.Field1);

            // Query the database with the filter
            var query = Service.AsQueryable().Where(filter.GetExpression1 <TEntity>());

            // Apply paging if needed
            if (request.PageSize != null)
            {
                query = query.Take(request.PageSize.Value);
            }

            // Do a linq dynamic query GroupBy to get only unique results
            var groupingQuery = query.GroupBy(string.Format("it.{0}", filter.Field1), string.Format("new (it.{0} as Key)", filter.Field1));

            // Make sure to return new objects which are defined as { "FieldName" : "Value" }, { "FieldName" : "Value" } else the kendoAutoComplete will not display search results.
            return(groupingQuery.Select(string.Format("new (Key as {0})", fieldOriginal)));
        }
        public object BindModel([NotNull] ControllerContext controllerContext, [NotNull] ModelBindingContext bindingContext)
        {
            if (controllerContext == null)
            {
                throw new ArgumentNullException(nameof(controllerContext));
            }

            if (bindingContext == null)
            {
                throw new ArgumentNullException(nameof(bindingContext));
            }

            _request = controllerContext.HttpContext.Request;
            var queryString = GetQueryString();

            var kendoGridRequest = new KendoGridMvcRequest
            {
                Take = queryString.GetQueryValue("take", (int?)null),
                Page = queryString.GetQueryValue("page", (int?)null),
                Skip = queryString.GetQueryValue("skip", (int?)null),
                PageSize = queryString.GetQueryValue("pageSize", (int?)null),

                FilterObjectWrapper = FilterHelper.Parse(queryString),
                GroupObjects = GroupHelper.Parse(queryString),
                AggregateObjects = AggregateHelper.Parse(queryString),
                SortObjects = SortHelper.Parse(queryString),
            };

            return kendoGridRequest;
        }
Example #4
0
        public JsonResult GridBySubFunctionId(KendoGridMvcRequest request, long?subFunctionId)
        {
            var query = GetQueryable().Where(s => s.SubFunction.Id == subFunctionId).AsNoTracking();
            var grid  = _kendoGridQueryableHelper.ToKendoGridEx <Employee, EmployeeDetailVM>(query, request);

            return(Json(grid));
        }
Example #5
0
        public JsonResult GridVirtualScrollable(KendoGridMvcRequest request)
        {
            var query     = GetQueryable().AsNoTracking();
            var kendoGrid = _kendoGridQueryableHelper.ToKendoGridEx <OU, OUVM>(query, request);

            return(Json(kendoGrid));
        }
Example #6
0
        public JsonResult Grid(KendoGridMvcRequest request)
        {
            var employees = new List <EmployeeModel>
            {
                new EmployeeModel {
                    EmployeeId = 1, FirstName = "Bill", LastName = "Jones", Email = "*****@*****.**"
                },
                new EmployeeModel {
                    EmployeeId = 2, FirstName = "Rob", LastName = "Johnson", Email = "*****@*****.**"
                },
                new EmployeeModel {
                    EmployeeId = 3, FirstName = "Jane", LastName = "Smith", Email = "*****@*****.**"
                }
            };

            for (int i = 10; i < 40; i++)
            {
                employees.Add(new EmployeeModel {
                    EmployeeId = i, FirstName = "FN:" + i, LastName = "LN" + i, Email = $"user_{i}@email.com"
                });
            }

            var grid = new KendoGrid <EmployeeModel>(request, employees.AsQueryable());

            return(Json(grid, new JsonSerializerSettings())); // Do no use CamelCasing
        }
        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            if (bindingContext == null)
            {
                throw new ArgumentNullException("bindingContext");
            }

            _request = controllerContext.HttpContext.Request;
            var queryString = GetQueryString();

            var kendoGridRequest = new KendoGridMvcRequest
            {
                Take     = queryString.GetQueryValue("take", (int?)null),
                Page     = queryString.GetQueryValue("page", (int?)null),
                Skip     = queryString.GetQueryValue("skip", (int?)null),
                PageSize = queryString.GetQueryValue("pageSize", (int?)null),

                FilterObjectWrapper = FilterHelper.Parse(queryString),
                GroupObjects        = GroupHelper.Parse(queryString),
                AggregateObjects    = AggregateHelper.Parse(queryString),
                SortObjects         = SortHelper.Parse(queryString),
            };

            return(kendoGridRequest);
        }
Example #8
0
        public JsonResult GridWithGroup(KendoGridMvcRequest request)
        {
            var queryContext = _employeeService.GetQueryContext(e => e.Company, e => e.Company.MainCompany, e => e.Country, e => e.Function, e => e.SubFunction);

            int seven = 7;

            return(GetKendoGridAsJson(request, queryContext.Query.Where(x => 7 == seven), queryContext.Includes));
        }
Example #9
0
        public virtual async Task <IActionResult> Get([FromBody] KendoGridMvcRequest request)
        {
            var query = pluginFinder.GetPluginDescriptors(LoadPluginsMode.All).Select(x => (EdmPluginDescriptor)x).AsQueryable();
            var grid  = new KendoGrid <EdmPluginDescriptor>(request, query);

            return(Json(grid, new JsonSerializerSettings {
                ContractResolver = new DefaultContractResolver()
            }));
        }
        public IActionResult Query(KendoGridMvcRequest request)
        {
            using (var connection = personRepository.Value.OpenConnection())
            {
                var query = connection.Query()
                            .OrderBy(x => x.FamilyName)
                            .ThenBy(x => x.GivenNames);

                var grid = new KendoGrid <Person>(request, query);
                return(Json(grid));
            }
        }
Example #11
0
        private string GetSearch(KendoGridMvcRequest request)
        {
            string search       = string.Empty;
            var    searchObject = request?.FilterObjectWrapper?.FilterObjects?.FirstOrDefault(o => !string.IsNullOrWhiteSpace(o.Field1));

            if (searchObject != null)
            {
                search = searchObject.Value1.ToUpper(CultureInfo.CurrentCulture);
            }

            return(search);
        }
Example #12
0
        public IActionResult Query(string entityType, [FromBody] KendoGridMvcRequest request)
        {
            using (var connection = repository.Value.OpenConnection())
            {
                var type = EnumExtensions.Parse <SavedQueryEntityType>(entityType);

                var query = connection.Query(x => x.Type == type)
                            .OrderBy(x => x.Name)
                            .ThenBy(x => x.Name);

                var grid = new KendoGrid <SavedQuery>(request, query);
                return(Json(grid));
            }
        }
Example #13
0
        public Task BindModelAsync([NotNull] ModelBindingContext bindingContext)
        {
            if (bindingContext == null)
            {
                throw new ArgumentNullException(nameof(bindingContext));
            }

            bool isForm = bindingContext.HttpContext.Request.HasFormContentType &&
                          bindingContext.HttpContext.Request.Method.ToUpper() == "POST";

            var collection = isForm ?
                             bindingContext.HttpContext.Request.Form as IEnumerable <KeyValuePair <string, StringValues> > :
                             bindingContext.HttpContext.Request.Query as IEnumerable <KeyValuePair <string, StringValues> >;

            var queryString = new NameValueCollection();

            foreach (KeyValuePair <string, StringValues> entry in collection)
            {
                string key   = entry.Key;
                string value = entry.Value.ToArray().FirstOrDefault();
                queryString.Add(key, value);
            }

            var kendoGridRequest = new KendoGridMvcRequest
            {
                Take     = queryString.GetQueryValue("take", (int?)null),
                Page     = queryString.GetQueryValue("page", (int?)null),
                Skip     = queryString.GetQueryValue("skip", (int?)null),
                PageSize = queryString.GetQueryValue("pageSize", (int?)null),

                FilterObjectWrapper = FilterHelper.Parse(queryString),
                GroupObjects        = GroupHelper.Parse(queryString),
                AggregateObjects    = AggregateHelper.Parse(queryString),
                SortObjects         = SortHelper.Parse(queryString),
            };

            bindingContext.Result = ModelBindingResult.Success(kendoGridRequest);

            return(Task.CompletedTask);
        }
Example #14
0
        public JsonResult Grid(KendoGridMvcRequest request)
        {
            var employees = new[]
            {
                new Employee {
                    EmployeeId = 1, FirstName = "Bill", LastName = "Jones", Email = "*****@*****.**"
                },
                new Employee {
                    EmployeeId = 2, FirstName = "Rob", LastName = "Johnson", Email = "*****@*****.**"
                },
                new Employee {
                    EmployeeId = 3, FirstName = "Jane", LastName = "Smith", Email = "*****@*****.**"
                }
            };

            var search    = GetSearch(request);
            var viewModel = string.IsNullOrWhiteSpace(search) ?
                            employees :
                            employees.Where(e => e.FirstName.ToUpper(CultureInfo.CurrentCulture).Contains(search)).Select(e => e).AsEnumerable();

            return(Json(viewModel));
        }
 protected JsonResult GetKendoGridAsJson(KendoGridMvcRequest request, IQueryable <TEntity> query)
 {
     return(GetKendoGridAsJson(request, query, null));
 }
Example #16
0
 public JsonResult GridManagersAngular(KendoGridMvcRequest request)
 {
     Thread.Sleep(2000); // Sleep 2 seconds to show loading gif
     return(GridManagers(request));
 }
Example #17
0
 protected JsonResult GetKendoGridAsJson(KendoGridMvcRequest request, IQueryContext <TEntity> queryContext)
 {
     return(Json(_kendoGridExQueryableHelper.ToKendoGridEx <TEntity, TViewModel>(queryContext.Query, request, queryContext.Includes)));
 }
Example #18
0
 protected KendoGrid <TEntity, TViewModel> GetKendoGrid(KendoGridMvcRequest request, IQueryable <TEntity> query)
 {
     return(_kendoGridExQueryableHelper.ToKendoGridEx <TEntity, TViewModel>(query, request));
 }
        public virtual JsonResult GetAutoCompleteAsJson(KendoGridMvcRequest request)
        {
            var results = GetAutoComplete(request);

            return(Json(results, JsonRequestBehavior.AllowGet));
        }
Example #20
0
        public JsonResult GridTop3(KendoGridMvcRequest request)
        {
            var entities = _productService.GetTop3Products();

            return(GetKendoGridAsJson(request, entities));
        }
        public JsonResult GridManagers(KendoGridMvcRequest request)
        {
            var entities = _employeeService.GetManagers();

            return(GetKendoGridAsJson(request, entities));
        }
 protected JsonResult GetKendoGridAsJson(KendoGridMvcRequest request, IQueryable <TEntity> query, IEnumerable <string> includes)
 {
     return(Json(query.ToKendoGridEx <TEntity, TViewModel>(request, includes)));
 }
 protected JsonResult GetKendoGridAsJson(KendoGridMvcRequest request, IQueryContext <TEntity> queryContext)
 {
     return(Json(queryContext.ToKendoGrid <TViewModel>(request)));
 }
        public JsonResult GridDetails(KendoGridMvcRequest request)
        {
            var queryContext = _employeeService.GetQueryContext(e => e.Company, e => e.Company.MainCompany, e => e.Country, e => e.Function, e => e.SubFunction);

            return(GetKendoGridAsJson(request, queryContext.Query, queryContext.Includes));
        }
 protected KendoGridEx <TEntity, TViewModel> GetKendoGrid(KendoGridMvcRequest request, IQueryable <TEntity> query)
 {
     return(query.ToKendoGridEx <TEntity, TViewModel>(request));
 }
        public JsonResult GridPaulJame(KendoGridMvcRequest request)
        {
            var entities = _employeeService.AsQueryable();

            return(GetKendoGridAsJson(request, entities));
        }
        public JsonResult Grid(KendoGridMvcRequest request)
        {
            var entities = GetQueryableNoTracking();

            return(GetKendoGridAsJson(request, entities));
        }
Example #28
0
        public JsonResult GridVirtualScrollable(KendoGridMvcRequest request)
        {
            var query = GetQueryable().AsNoTracking();

            return(Json(query.ToKendoGridEx <OU, OUVM>(request)));
        }
Example #29
0
        public JsonResult GridByFunctionId(KendoGridMvcRequest request, long?functionId)
        {
            var entities = GetQueryable().Where(s => s.Function.Id == functionId).AsNoTracking();

            return(GetKendoGridAsJson(request, entities));
        }