public IActionResult AddTag(int id) { TagViewModel model = new TagViewModel { SongId = id }; return(View(model)); }
public async Task <IActionResult> AddTag(TagViewModel model) { if (ModelState.IsValid) { Tag tag = new Tag { Name = model.Name.ToLower(), UserId = int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)), Verified = false }; bool save = true; foreach (var element in dataManager.TagRepository.GetAll()) { if (element.Name == tag.Name) { tag = element; save = false; } } if (save) { tag.Id = dataManager.TagRepository.Save(tag); } var song = dataManager.SongRepository.Get(model.SongId); var id = User.FindFirstValue(ClaimTypes.NameIdentifier); if (!song.Tags.Any(t => t.Name == tag.Name)) { song.Tags.Add(tag); dataManager.SongRepository.Save(song); if (!save) { await hubContext.Clients.User(id).SendAsync("notify", "Your tag is already verified and was added"); } else { await hubContext.Clients.User(id).SendAsync("notify", "Your tag will be verified"); } } else { await hubContext.Clients.User(id).SendAsync("notify", "This song already has your tag"); } return(Redirect("/")); } return(View(model)); }