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)); } }
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); }