public JsonResult Save(int id, int parentId, string displayName, string systemName, string description, string image) { try { // Репозиторий var repository = Locator.GetService<ICategoriesRepository>(); // Обрабатываем запрос if (id < 0) { // проверяем, существует ли родительская категория, к которой хотят поместить новую категорию if (parentId != -1 && repository.Load(parentId) == null) { throw new ObjectNotFoundException("Категории, указанная в качестве родительской не существует"); } // Создаем категорию var category = new Category() { ParentId = parentId, Title = displayName }; repository.Add(category); repository.SubmitChanges(); return JsonSuccess(new { id = category.Id }); } else { var category = repository.Load(id); category.Title = displayName; category.Description = description; repository.SubmitChanges(); return JsonSuccess(new { id = category.Id }); } } catch (Exception e) { return JsonErrors(e); } }
/// <summary> /// Перечисляет категории и возращает список дочерних /// </summary> /// <param name="category">Категория</param> /// <param name="resultList">Куда поместить</param> private void EnumerateCategories(Category category, List<Category> resultList) { resultList.Add(category); foreach (var cat in category.ChildCategories) { EnumerateCategories(cat,resultList); } }
/// <summary> /// Возвращает изображение, ассоциированное с категорией /// </summary> /// <param name="category"></param> /// <returns></returns> public string GetCategoryImage(Category category) { return string.Empty; }
private void detach_ChildCategories(Category entity) { this.SendPropertyChanging(); entity.ParentCategory = null; }
/// <summary> /// Возвращает количество тендеров в указанной категории /// </summary> /// <param name="category"></param> /// <returns></returns> public int GetTendersCount(Category category) { // Проверяем на наличие в кеше if (CategoriesTendersCountCache.ContainsKey(category.Id)) { return CategoriesTendersCountCache[category.Id]; } // Похоже что нет - кешируем var count = Locator.GetService<ICategoriesRepository>().Load(category.Id).Tenders.Count; CategoriesTendersCountCache[category.Id] = count; return count; }