public DataTablesJsonResult(IDataTablesResponse response, string contentType, System.Text.Encoding contentEncoding, bool allowJsonThroughHttpGet)
 {
     Data            = response;
     ContentEncoding = contentEncoding ?? System.Text.Encoding.UTF8;
     ContentType     = String.Format(contentType ?? DefaultContentType, contentEncoding.WebName);
     AllowGet        = allowJsonThroughHttpGet;
 }
コード例 #2
0
 public DataTablesJsonResult(IDataTablesResponse response, string contentType, System.Text.Encoding contentEncoding, JsonRequestBehavior jsonRequestBehavior)
 {
     Data                = response;
     ContentEncoding     = contentEncoding ?? System.Text.Encoding.UTF8;
     ContentType         = String.Format(contentType ?? DefaultContentType, ContentEncoding.WebName);
     JsonRequestBehavior = jsonRequestBehavior;
 }
        // This test doesn't work, because the DataTables functionality requires a Http context
        //[Fact(DisplayName = "CreateResponse, request for an item that contains a 'b' should return a response with 1 item.")]
        public void CreateResponseRequestForItemThatContainsAbShouldReturnAResponseWith1Item()
        {
            // arrange
            var config = new MapperConfiguration(cfg => {
                cfg.CreateMap <TestModel, TestViewModel>();
            });
            IMapper mapper = new Mapper(config);


            var processor = new QueryablesProcessor(mapper);

            var testItemToBeFound = new TestModel()
            {
                IntProp = 1, StringProp = "abc"
            };
            var testItemNotToBeFound = new TestModel()
            {
                IntProp = 2, StringProp = "cde"
            };

            var testList = new List <TestModel>()
            {
                testItemToBeFound,
                testItemNotToBeFound
            };

            Func <IQueryable <TestModel> > getTestItems = () => testList.AsQueryable();

            var request = InitTestModelDataTablesRequest();
            var search  = new Mock <ISearch>();

            search.Setup(srch => srch.IsRegex).Returns(false);
            search.Setup(srch => srch.Value).Returns("b");
            request.Setup(req => req.Search).Returns(search.Object);

            // act
            IDataTablesResponse response = processor.CreateResponse <TestModel, TestViewModel>(request.Object, getTestItems);

            // assert
            Assert.Equal(2, response.TotalRecords);
            Assert.Equal(1, response.TotalRecordsFiltered);
            Assert.Single(response.Data as IEnumerable <TestModel>);
        }
コード例 #4
0
ファイル: MessageController.cs プロジェクト: pfonyad/IChatYou
        public ActionResult GetAvailableUsers(IDataTablesRequest request)
        {
            IDataTablesResponse response = null;

            try
            {
                if (request == null)
                {
                    throw new ArgumentNullException("request");
                }

                var data = userRepository.GetAll().Where(usr => usr.IsVisible && usr.Id != User.Identity.GetUserId());

                if (!string.IsNullOrEmpty(request.Search.Value))
                {
                    data = data.Where(item => item.FullName.Contains(request.Search.Value) || item.UserName.Contains(request.Search.Value) || item.Email.Contains(request.Search.Value));
                }

                var orderings = request.Columns
                                .Where(c => c.Sort != null)
                                .OrderBy(c => c.Sort.Order)
                                .Select(c => $"{c.Name} {c.Sort.Direction}")
                                .DefaultIfEmpty($"{nameof(ApplicationUser.FullName)} asc")
                                .Aggregate((current, next) => current + ", " + next);

                var orderedData = data.OrderBy(orderings);

                var dataPage = orderedData.Skip(request.Start).Take(request.Length).Select(usr => new { username = usr.UserName, fullname = usr.FullName, email = usr.Email });

                response = DataTablesResponse.Create(request, data.Count(), orderedData.Count(), dataPage);
            }
            catch (Exception ex)
            {
                logger.Error(ex, "GetAvailableUsers");
            }

            return(new DataTablesJsonResult(response ?? DataTablesResponse.Create(request, "No data available."), JsonRequestBehavior.AllowGet));
        }
コード例 #5
0
ファイル: MessageController.cs プロジェクト: pfonyad/IChatYou
        public ActionResult GetMyMessages(IDataTablesRequest request)
        {
            IDataTablesResponse response = null;

            try
            {
                if (request == null)
                {
                    throw new ArgumentNullException("request");
                }
                var d    = messageRepository.GetMessagesByUserId(User.Identity.GetUserId());
                var data = Mapper.Map <IEnumerable <MessageViewModel> >(d);

                if (!string.IsNullOrEmpty(request.Search.Value))
                {
                    data = data.Where(itm => itm.Sender.Contains(request.Search.Value) || itm.Sent.ToString().Contains(request.Search.Value));
                }

                var orderings = request.Columns
                                .Where(c => c.Sort != null)
                                .OrderBy(c => c.Sort.Order)
                                .Select(c => $"{c.Name} {c.Sort.Direction}")
                                .DefaultIfEmpty($"{nameof(BaseMessage.Sent)} asc")
                                .Aggregate((current, next) => current + ", " + next);

                var orderedData = data.OrderBy(orderings);

                var dataPage = orderedData.Skip(request.Start).Take(request.Length);

                response = DataTablesResponse.Create(request, data.Count(), orderedData.Count(), dataPage);
            }
            catch (Exception ex)
            {
                logger.Error(ex, "GetMyMessages");
            }

            return(new DataTablesJsonResult(response ?? DataTablesResponse.Create(request, "No data available."), JsonRequestBehavior.AllowGet));
        }
コード例 #6
0
 public DataTablesJsonResult(IDataTablesResponse response, bool allowJsonThroughHttpGet)
     : this(response, DefaultContentType, DefaultContentEncoding, allowJsonThroughHttpGet)
 {
 }
コード例 #7
0
 public DataTablesJsonResult(IDataTablesResponse response, JsonRequestBehavior jsonRequestBehavior)
     : this(response, DefaultContentType, DefaultContentEncoding, jsonRequestBehavior)
 {
 }