Exemplo n.º 1
0
        public async Task <IActionResult> SearchAsync([FromBody] PageDescriptorModel page, CancellationToken cancellationToken = default)
        {
            var request = new GetAllModelsFromEntityByPageQuery <ToDoListModel, ToDoList, int, EntityDbContext>(page);
            var result  = await mediator.HandleAsync(request, cancellationToken);

            return(this.PagedJsonResult(result, page.Envelope ?? false));
        }
Exemplo n.º 2
0
        protected void BindEnvelope(IValueProvider valueProvider, PageDescriptorModel model)
        {
            var envelopeResult = valueProvider.GetValue(EnvelopeKey);
            var value          = envelopeResult.FirstValue;

            if (!string.IsNullOrEmpty(value))
            {
                if (bool.TryParse(value, out var envelope))
                {
                    model.Envelope = envelope;
                }
            }
        }
Exemplo n.º 3
0
        protected void BindTake(IValueProvider valueProvider, PageDescriptorModel model)
        {
            var limitResult = valueProvider.GetValue(TakeKey);
            var value       = limitResult.FirstValue;

            if (!string.IsNullOrEmpty(value))
            {
                if (int.TryParse(value, out var take))
                {
                    model.Take = take;
                }
            }
        }
Exemplo n.º 4
0
        protected void BindSkip(IValueProvider valueProvider, PageDescriptorModel model)
        {
            var offsetResult = valueProvider.GetValue(SkipKey);
            var value        = offsetResult.FirstValue;

            if (!string.IsNullOrEmpty(value))
            {
                if (int.TryParse(value, out var skip))
                {
                    model.Skip = skip;
                }
            }
        }
Exemplo n.º 5
0
        public virtual Task BindModelAsync(ModelBindingContext bindingContext)
        {
            var model = new PageDescriptorModel();

            bindingContext.Model = model;
            this.BindSkip(bindingContext.ValueProvider, model);
            this.BindTake(bindingContext.ValueProvider, model);
            this.BindEnvelope(bindingContext.ValueProvider, model);
            this.BindFilters(bindingContext.ValueProvider, model);
            this.BindSort(bindingContext.ValueProvider, model);
            bindingContext.Result = ModelBindingResult.Success(model);
            return(Task.CompletedTask);
        }
Exemplo n.º 6
0
        protected void BindSort(IValueProvider valueProvider, PageDescriptorModel model)
        {
            var sortResult = valueProvider.GetValue(SortKey);
            var value      = sortResult.FirstValue;

            if (!string.IsNullOrEmpty(value))
            {
                var sortValues = value.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                foreach (var sortValue in sortValues)
                {
                    var sort = SortDescriptorFactory.Create(sortValue);
                    if (sort != null)
                    {
                        model.Sorts.Add(sort);
                    }
                }
            }
        }
Exemplo n.º 7
0
        protected void BindFilters(IValueProvider valueProvider, PageDescriptorModel model)
        {
            var filterResult = valueProvider.GetValue(FilterKey);
            var value        = filterResult.FirstValue;

            if (!string.IsNullOrEmpty(value))
            {
                var filterValues = value.Split(new[] { ";" }, StringSplitOptions.None);
                foreach (var filterValue in filterValues)
                {
                    var filter = FilterDescriptorFactory.Create(filterValue);
                    if (filter != null)
                    {
                        model.Filters.Add(filter);
                    }
                }
            }
        }
Exemplo n.º 8
0
        public async Task SearchAsyncTest()
        {
            // Arrange
            var todolist = await this.WithEntityInTheDatabaseAsync(new Domain.Entities.ToDoList()
            {
                Name = "Before"
            });

            var todoItem = await this.WithEntityInTheDatabaseAsync(new Domain.Entities.ToDoItem()
            {
                Name       = "Before",
                ToDoListId = todolist.Id
            });

            var page = new PageDescriptorModel()
            {
                Skip     = 0,
                Take     = 5,
                Envelope = true
            };
            var request = this.Fixture
                          .Server
                          .CreateApiRequest <ToDoItemController>(c => c.SearchAsync(todolist.Id, page, default))
                          .WithIdentity(Identities.Basic);
            // Act
            var response = await request.SendAsync(HttpMethods.Post);

            // Assert
            Assert.True(response.IsSuccessStatusCode);
            var result = await response.Content.ReadFromJsonAsync <EnvelopedModel <ToDoItemModel> >();

            Assert.NotNull(result);
            Assert.NotEmpty(result.Data);
            Assert.Single(result.Data);
            Assert.Equal(page.Skip, result.Skip);
            Assert.Equal(page.Take, result.Take);
            Assert.Equal(1, result.Total);
        }
Exemplo n.º 9
0
        public async Task <IActionResult> SearchAsync([FromBody] PageDescriptorModel page, CancellationToken cancellationToken = default)
        {
            var models = await this.toDoListService.SearchAsync(page, cancellationToken);

            return(this.PagedJsonResult(models, page.Envelope ?? false));
        }