public async Task UpdateImage(ImageEditVM viewModel) { Image image = context.Image.Include(o => o.TagToImage).Single(o => o.Id == viewModel.ImageId); image.Title = viewModel.Title; image.GalleryId = viewModel.GalleryId; if (!string.IsNullOrWhiteSpace(viewModel.Tags)) { var tags = await context.Tag.ToListAsync(); foreach (var tag in viewModel.Tags.Split(",")) { var tagName = tag.Trim(); var tagToBeInserted = tags.SingleOrDefault(t => t.Name == tagName); var tagToImage = new TagToImage(); if (tagToBeInserted == null) { tagToImage.Tag = new Tag { Name = tagName }; tagToImage.Image = image; image.TagToImage.Add(tagToImage); } else { if (image.TagToImage.Count(o => o.ImageId == image.Id && o.TagId == tagToBeInserted.Id) == 0) { tagToImage.Tag = tagToBeInserted; tagToImage.Image = image; image.TagToImage.Add(tagToImage); } tags.Remove(tagToBeInserted); } } var tagsToRemove = tags.Where(o => o.TagToImage.Any(t => t.ImageId == image.Id)).SelectMany(a => a.TagToImage); if (tagsToRemove != null) { context.TagToImage.RemoveRange(tagsToRemove); } } await context.SaveChangesAsync(); await RemoveUnusedTags(); }
public void Display(TagToImage toDisplay) { m_image.sprite = toDisplay.m_sprite; m_displayTimeCountDown = m_disapearTime + m_disapearTime; m_image.color = Color.white; }