public IActionResult SetTags(int id, bool hasGallery) { if (!_context.Products.Any(d => d.ProductId == id)) { return(NotFound()); } var model = new SetTagsToProductViewModel(); var tags = _context.Tags.Include(d => d.TagValues).OrderBy(d => d.Name).ToList(); var tagValues = _context.TagValues.Where(d => d.ProductId == id).ToList(); var list = new List <TagTransferModel>(); foreach (var tag in tags) { list.Add(new TagTransferModel() { TagId = tag.TagId, TagName = tag.Name, Value = tagValues.SingleOrDefault(d => d.TagId == tag.TagId)?.Value ?? String.Empty, TagValueId = tagValues.SingleOrDefault(d => d.TagId == tag.TagId)?.TagValueId ?? 0, }); } model.TagTransferModels = list; model.HasGallery = hasGallery; model.ProductId = id; return(View(model)); }
public async Task <IActionResult> SetTags(SetTagsToProductViewModel model) { var productTags = _context.ProductTags.ToList(); var tagValues = _context.TagValues.Where(d => d.ProductId == model.ProductId); foreach (var tag in model.TagTransferModels) { var tagValue = new TagValue() { ProductId = model.ProductId, TagId = tag.TagId, Value = tag.Value, TagValueId = tag.TagValueId }; var value = tagValues.Where(d => d.TagId == tagValue.TagId).SingleOrDefault(d => d.ProductId == tagValue.ProductId); if (String.IsNullOrWhiteSpace(tag.Value)) { var tagValueToDelete = tagValues.Where(d => d.TagId == tagValue.TagId).SingleOrDefault(d => d.TagValueId == tagValue.TagValueId); var productTagToDelete = productTags.Where(d => d.TagId == tagValue.TagId).SingleOrDefault(d => d.ProductId == tagValue.ProductId); if (tagValueToDelete != null) { _context.TagValues.Remove(tagValueToDelete); } if (productTagToDelete != null) { _context.ProductTags.Remove(productTagToDelete); } await _context.SaveChangesAsync(); continue; } if (!tagValues.Contains(tagValue)) { _context.TagValues.Add(tagValue); _context.ProductTags.Add(new ProductTags() { ProductId = tagValue.ProductId, TagId = tagValue.TagId }); } else if (value != null) { value.Value = tagValue.Value; } _context.SaveChanges(); } if (!model.HasGallery) { return(RedirectToAction("Create", "Galleries", new { id = model.ProductId })); } return(RedirectToAction(nameof(Details), new { id = model.ProductId })); }
public ActionResult SetTags(SetTagsToProductViewModel model) { var productTags = db.ProductTags.ToList(); var tagValues = db.TagValues.Where(d => d.ProductId == model.ProductId); if (model.TagTransferModels != null) { foreach (var tag in model.TagTransferModels) { var tagValue = new TagValue() { ProductId = model.ProductId, TagId = tag.TagId, Value = tag.Value, Id = tag.TagValueId }; var value = tagValues.Where(d => d.TagId == tagValue.TagId) .SingleOrDefault(d => d.ProductId == tagValue.ProductId); if (String.IsNullOrWhiteSpace(tag.Value)) { var tagValueToDelete = tagValues.Where(d => d.TagId == tagValue.TagId) .SingleOrDefault(d => d.Id == tagValue.Id); var productTagToDelete = productTags.Where(d => d.TagId == tagValue.TagId) .SingleOrDefault(d => d.ProductId == tagValue.ProductId); if (tagValueToDelete != null) { db.TagValues.Remove(tagValueToDelete); } if (productTagToDelete != null) { db.ProductTags.Remove(productTagToDelete); } db.SaveChanges(); continue; } if (!tagValues.Any(d => d.Id == tagValue.Id)) { db.TagValues.Add(tagValue); db.ProductTags.Add(new ProductTags() { ProductId = tagValue.ProductId, TagId = tagValue.TagId }); } else if (value != null) { value.Value = tagValue.Value; } db.SaveChanges(); } } if (db.Products.FirstOrDefault(d => d.Id == model.ProductId)?.GalleryId == null) { return(RedirectToAction("SetGallery", "Products", new { id = model.ProductId })); } return(RedirectToAction(nameof(Details), new { id = model.ProductId })); }