Esempio n. 1
0
        public async Task <IActionResult> EditDescriptionItem(DescriptionGroupItemDto descriptionGroupItemDto)
        {
            if (descriptionGroupItemDto == null)
            {
                return(BadRequest("Получены некорректные данные"));
            }

            var item = _mapper.Map <DescriptionGroupItem>(descriptionGroupItemDto);

            OperationResult result = await _shopManager.UpdateDescriptionItemAsync(item);

            if (!result.Succeeded)
            {
                return(BadRequest(string.Join(Environment.NewLine, result.Errors.Select(x => x.Description))));
            }
            else
            {
                return(Ok(item.Id));
            }
        }
Esempio n. 2
0
        public async Task <IActionResult> DeleteDescriptionItemConfirm(DescriptionGroupItemDto descriptionGroupItemDto)
        {
            if (descriptionGroupItemDto == null || descriptionGroupItemDto.Id == null)
            {
                return(RedirectToAction("DescriptionGroups"));
            }

            var result = await _shopManager.DeleteDescriptionItemAsync(descriptionGroupItemDto.Id.GetValueOrDefault());

            if (!result.Succeeded)
            {
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(error.Code, error.Description);
                }

                return(View("DeleteDescriptionItem", descriptionGroupItemDto));
            }

            TempData["Message"] = $"Описание \"{descriptionGroupItemDto.Name}\" успешно удалено.";
            return(RedirectToAction("DescriptionGroups"));
        }
        private static List <DescriptionGroupDto> ConvertDescsToDescGroupDto(Product source)
        {
            var descs = source.Descriptions.ToList();

            if (descs.IsNullOrEmpty())
            {
                return(null);
            }

            descs.ForEach(x =>
            {
                if (x.DescriptionGroupItem.DescriptionGroup == null)
                {
                    x.DescriptionGroupItem.DescriptionGroup = new DescriptionGroup()
                    {
                        Id = -1, Name = "*группа удалена*"
                    }
                }
                ;
            });

            var descGroups = descs //get flattened description groups from description nav property
                             .Select(x => x.DescriptionGroupItem.DescriptionGroup)
                             .GroupBy(x => x.Id)
                             .Select(g => g.First())
                             .Select(x => new DescriptionGroupDto() //convert description groups to dto
            {
                Id          = x.Id,
                Name        = x.Name,
                Description = x.Description
            })
                             .OrderBy(x => x.Name != "Общие характеристики") //ordering
                             .ThenBy(x => x.Name)
                             .ToList();

            var descItems = descs                                      //convert descriptions to dto items
                            .OrderBy(x => x.DescriptionGroupItem.Name) //ordering
                            .Select(x =>
            {
                var dto = new DescriptionGroupItemDto()
                {
                    Id   = x.DescriptionGroupItem.Id,
                    Name = x.DescriptionGroupItem.Name,
                    DescriptionGroupId = x.DescriptionGroupItem.DescriptionGroup.Id,
                    DescriptionId      = x.Id,
                    DescriptionValue   = x.Value
                };
                if (x.DescriptionGroupItem.DescriptionGroup.Name == "*группа удалена*" ||
                    x.DescriptionGroupItem.DescriptionGroup.Id == -1)
                {
                    dto.Id = null;
                }
                return(dto);
            })
                            .ToList();

            //add descriptions to their respective groups
            foreach (var descGroup in descGroups)
            {
                foreach (var descItem in descItems)
                {
                    if (descItem.DescriptionGroupId == descGroup.Id)
                    {
                        descGroup.DescriptionItems.Add(descItem);
                    }
                }
            }

            return(descGroups);
        }