public async Task <CategoryListModel> GetCategories(CategoryListQueryModel queryModel) { var url = UrlBuilder.CategoriesListUrl(queryModel); var categories = await Client.GetFromJsonAsync <CategoryListModel>(url); return(categories); }
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); }
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); }
async Task ClearFilters() { Model = new CategoryListQueryModel(); await OnCategoriesFiltered.InvokeAsync(Model); }
public Categories() { queryModel = new CategoryListQueryModel(); loading = false; }