Пример #1
0
 public CategoryMapJsonModel(CategoryMap categoryMap)
 {
     Id = categoryMap.Id;
     CategoryId = categoryMap.CategoryId;
     CategoryName = Locator.GetService<ICategoriesRepository>().Load(categoryMap.CategoryId).Title;
     DisplayName = categoryMap.DisplayName;
     Image = categoryMap.Image;
     SortOrder = categoryMap.SortOrder;
     DateCreated = categoryMap.DateCreated;
 }
Пример #2
0
		private void detach_CategoryMaps(CategoryMap entity)
		{
			this.SendPropertyChanging();
			entity.Category = null;
		}
        public JsonResult Save([ModelBinder(typeof(JsonModelBinder))] CategoryMapJsonModel model, HttpPostedFileBase file, int parent, string categoryIds)
        {
            // TODO: refactor
            try
            {
                // Репозиторий
                var repository = Locator.GetService<ICategoriesMapRepository>();
                var categoriesRepository = Locator.GetService<ICategoriesRepository>();
                var mapItemsRepository = Locator.GetService<ICategoriesMapItemsRepository>();
                var mapItems = mapItemsRepository.FindAll().ToList();

                CategoryMap categoryMap;

                if (model.Id <= 0)
                {
                    // Создаем новый элемент
                    categoryMap = new CategoryMap
                    {
                        DisplayName = model.DisplayName,
                        DateCreated = DateTime.Now,
                        SortOrder = model.SortOrder,
                        CategoryId = parent
                    };
                    repository.Add(categoryMap);
                    repository.SubmitChanges();
                }
                else
                {
                    // Обновляем существующую
                    categoryMap = repository.Load(model.Id);
                    if (categoryMap == null)
                    {
                        throw new ObjectNotFoundException(String.Format("Карта категорий с идентификатором {0} не найден", model.Id));
                    }

                    categoryMap.DisplayName = model.DisplayName;
                    categoryMap.SortOrder = model.SortOrder;
                    categoryMap.CategoryId = parent;
                }

                if (file != null && file.ContentLength > 0)
                {
                    // Загружаем изображение для карты категорий
                    try
                    {
                        categoryMap.UploadImage(file);
                    }
                    catch (Exception e)
                    {
                        return JsonErrors(e);
                    }
                }

                if (categoryIds != null)
                {
                    var itemsOfMap = mapItems.Where(f => f.CategoryMapId == categoryMap.Id).ToList();

                    foreach (var item in itemsOfMap)
                    {
                        mapItemsRepository.Delete(item);
                    }

                    if (categoryIds.Length > 0)
                    {
                        var categoryIdsArr = categoryIds.Split(',').Select(n => Convert.ToInt32(n)).ToArray();
                        var categories = categoryIdsArr.Select(id => categoriesRepository.Load(id)).ToList();

                        if (categories.Any())
                        {
                            foreach (var category in categories)
                            {
                                mapItemsRepository.Add(new CategoryMapItem
                                {
                                    Category = category,
                                    CategoryMap = categoryMap
                                });
                            }
                        }
                    }
                }

                // Сохраняем изменения
                mapItemsRepository.SubmitChanges();
                repository.SubmitChanges();

                return JsonSuccess();
            }
            catch (Exception e)
            {
                return JsonErrors(e);
            }
        }
Пример #4
0
		private void attach_CategoryMaps(CategoryMap entity)
		{
			this.SendPropertyChanging();
			entity.Category = this;
		}