Example #1
0
        public async Task <CategoryListModel> GetCategories(CategoryListQueryModel queryModel)
        {
            var url = UrlBuilder.CategoriesListUrl(queryModel);

            var categories = await Client.GetFromJsonAsync <CategoryListModel>(url);

            return(categories);
        }
Example #2
0
        public IActionResult Get([FromQuery] CategoryListQueryModel queryModel = null)
        {
            var model = ControllerServices.GetCategories(queryModel);

            _logger.LogInformation("Found {itemsNumber} categories of {itemsTotal}", model.Items.Count(), model.Total);

            return(Ok(model));
        }
        async Task ApplyCategoriesFilter(CategoryListQueryModel model)
        {
            queryModel.ActiveOnly  = model.ActiveOnly;
            queryModel.Query       = model.Query;
            queryModel.VisibleOnly = model.VisibleOnly;

            await LoadCategories(queryModel);
        }
Example #4
0
        public CategoryListModel GetCategories(CategoryListQueryModel queryModel)
        {
            if (queryModel is null)
            {
                queryModel = new CategoryListQueryModel();
            }

            var categoriesQuery = Database.Categories;

            if (queryModel.ActiveOnly)
            {
                categoriesQuery = categoriesQuery.Active();
            }
            if (queryModel.VisibleOnly)
            {
                categoriesQuery = categoriesQuery.Visible();
            }
            if (!string.IsNullOrWhiteSpace(queryModel.Query))
            {
                categoriesQuery = categoriesQuery.Where(c => c.Name.Contains(queryModel.Query) || c.Code.Contains(queryModel.Query) || c.Description.Contains(queryModel.Query));
            }

            int skip = (queryModel.Page - 1) * queryModel.Size;

            int total = categoriesQuery.Count();
            var items = categoriesQuery
                        .OrderBy(c => c.Name)
                        .Select(c => new CategoryListModel.ListItem
            {
                Id          = c.Id,
                Code        = c.Code,
                Name        = c.Name,
                Url         = c.Url,
                IsVisible   = c.IsVisible,
                VisibleFrom = c.VisibleFrom,
                VisibleTo   = c.VisibleTo,
                Deleted     = c.Deleted
            }).Skip(skip).Take(queryModel.Size).ToArray();

            double pages = total / queryModel.Page;

            var model = new CategoryListModel
            {
                Total       = total,
                CurrentPage = pages == 0 ? 0 : queryModel.Page,
                TotalPages  = Convert.ToInt32(Math.Ceiling(pages)),
                Items       = items
            };

            return(model);
        }
        async Task LoadCategories(CategoryListQueryModel queryModel = null)
        {
            loading = true;

            try
            {
                categories = await Client.GetCategories(queryModel);
            }
            finally
            {
                StateHasChanged();
                loading = false;
            }
        }
        public string CategoriesListUrl(CategoryListQueryModel queryModel)
        {
            var url = $"{ApiPrefix}/{ResourceName}";

            if (queryModel != null)
            {
                url = $"{url}?activeOnly={queryModel.ActiveOnly}&page={queryModel.Page}&size={queryModel.Size}&visibleOnly={queryModel.VisibleOnly}";
                if (!string.IsNullOrWhiteSpace(queryModel.Query))
                {
                    url = $"{url}&query={HttpUtility.UrlEncode(queryModel.Query)}";
                }
            }

            return(url);
        }
Example #7
0
 async Task ClearFilters()
 {
     Model = new CategoryListQueryModel();
     await OnCategoriesFiltered.InvokeAsync(Model);
 }
 public Categories()
 {
     queryModel = new CategoryListQueryModel();
     loading    = false;
 }