Пример #1
0
        public IActionResult Edit(int? id, EditCategoryViewModel viewModel)
        {
            if (id == null)
                return new NotFoundResult();

            var ordinals = new Dictionary<int, int>();
            var isBig = new Dictionary<int, bool>();
            int index = 0;
            foreach (var pictureId in viewModel.GetPictureIds())
            {
                isBig[pictureId] = viewModel.GetPictureIsBigs()[index];
                ordinals[pictureId] = index++;
            }

            foreach (var picture in _context.Categories
                    .Include(c => c.Pictures)
                    .Single(c => c.Id == id)
                    .Pictures)
                picture.CategoryId = null;

            foreach (var picture in _context.Pictures
                    .Where(p => viewModel.GetPictureIds().Contains(p.Id)))
            {
                picture.CategoryId = id;
                picture.Ordinal = ordinals[picture.Id];
                picture.IsFriendly = isBig[picture.Id];
            }

            var category = _context.Categories.Single(c => c.Id == id);
            category.Name = viewModel.Name;
            category.Caption = viewModel.Caption;
            category.ThumbnailId = viewModel.ThumbnailId;
            category.ParentCategoryId = viewModel.SelectedParentCategory;

            _context.SaveChanges();

            return RedirectToAction("Edit");
        }