Я создаю приложение для документации, в котором я разрешаю людям в моем бизнесе получать доступ к документации по определенному программному обеспечению. Благодаря этому у меня есть страница, на которой любой администратор может управлять категориями и пользователями. Для этого я хочу, чтобы администратор мог изменить порядок категории, в которой она должна отображаться в моем меню навигации. Теперь работает та часть, где он должен правильно упорядочивать категории на основе порядка внутри меню навигации. Но когда я пытаюсь отредактировать существующие категории и их номера заказов, заказы не обновляются соответствующим образом, см. Этот пример:
Это делается перед редактированием существующих категорий, эти категории недавно добавлены/сделаны
Это после редактирования категорий, "Реагировать" должно быть порядком 2, где API будет порядком 0, а тест будет порядком 1
Как вы можете видеть, приказ больше не имеет смысла. Очевидно, что не должно быть разрешено более 1 любого заказа.
Теперь проблема, скорее всего, связана с этим кодом.
CategoryService.cs
public async Task<List<Category>> InsertCategory(Category category)
{
await GetCategories();
for (int i = 0; i < Categories.Where(c => c.Order >= category.Order).Count(); i++)
{
Categories[i].Order++;
if (Categories[i].Order == category.Order)
{
Categories[i].Order--;
break;
}
}
await categoryRepository.InsertAsync(Categories);
EventHelper.NotifyCategoryListChanged(Categories, EventArgs.Empty);
return Categories;
}
Порядок кода выглядит следующим образом:
Каталог категорий.бритва
private async void SaveCategory(Category category)
{
if(!string.IsNullOrEmpty(category.Name))
{
await categoryService.SaveCategory(category);
Snackbar.Add("Category " + category.Name + " added", Severity.Success);
MudDialog.Close(DialogResult.Ok(category.Id));
}
else
{
Snackbar.Add("Please enter a category name.", Severity.Warning);
}
}
Приведенный выше код вызывается после нажатия кнопки. Это передает категорию с определенным номером заказа, этот номер передается из простого выпадающего меню.
То SaveCategory
функция выглядит так:
CategorySerice.cs
public async Task<Category> SaveCategory(Category category)
{
await InsertCategory(category);
if (categoryRepository.GetByIdAsync(category.Id) == null)
{
await categoryRepository.AddAsync(category);
}
else
{
await categoryRepository.SaveAsync(category);
}
EventHelper.NotifyCategoryListChanged(Categories, EventArgs.Empty);
return category;
}
Эта функция вызывает проблемную функцию перед фактическим сохранением/добавлением чего-либо в базу данных. Таким образом, это может произойти для недавно добавленной или отредактированной категории.
После этого запускается событие, уведомляющее мое меню навигации о том, что были внесены изменения, и оно должно повторно отображаться, чтобы показать это. В этом нет никаких проблем.
Но я не могу понять, как правильно будет указывать Заказы, когда я их изменю. Быстрое напоминание, эта функция не работает при редактировании существующих категорий. Если бы я добавил новую категорию, например, при заказе 2. Он правильно перемещает все без проблем.
Любая помощь приветствуется!
CategoryService.cs
Это единственный источник истины, когдаGetCategories
получает вызов, он получает новую информацию из базы данных.