public async Task <ImageDto> UpdateImage(UpdateImageDto dto) { await _validator.ValidateAsync(dto); var imageEntity = _context.Images .Include(n => n.ImageCategories) .First(n => n.Id == dto.Id); _mapper.Map(dto, imageEntity); var categoriesToAdd = dto.CategoryIds.Where(categoryId => imageEntity.ImageCategories.All(n => n.CategoryId != categoryId)); var imgeCategoriesToDelete = imageEntity.ImageCategories.Where(n => !dto.CategoryIds.Contains(n.CategoryId)); categoriesToAdd.ForEach(categoryId => { if (imageEntity.ImageCategories.All(n => n.CategoryId != categoryId)) { imageEntity.ImageCategories.Add(new ImageCategoryEntity { CategoryId = categoryId, ImageId = imageEntity.Id }); } }); _context.ImageCategories.RemoveRange(imgeCategoriesToDelete); await _context.SaveChangesAsync(); return(_mapper.Map <ImageDto>(imageEntity)); }
public async Task <IActionResult> UpdateImage(Guid id, UpdateImageDto updateImageDto) { if (id != updateImageDto.ImageId) { return(BadRequest("Not consistent request")); } try { await _imagesService.UpdateImage(updateImageDto.ImageId, updateImageDto.ImageNewName); return(NoContent()); } catch (ArgumentException exc) { return(BadRequest(exc.Message)); } }
public async Task <IActionResult> Update(int id, [FromForm] UpdateImageDto dto) => await GetResponse(async() => new ApiResponseViewModel(true, "Update Image Successfully", await _imageService.Update(id, dto, UserId)));