public async Task <IActionResult> AddSongTheme(int songId, string theme) { //Make sure the song exists, if not redirect to ItemNotFound page if (songId < 1) { return(new BadRequestResult()); } //Make sure the user actually submitted text. If not, do nothing if (!string.IsNullOrWhiteSpace(theme)) { //Check to see if this theme already exists var existingThemeId = await _themeService.CheckIfThemeExistsAsync(theme); if (existingThemeId == null) { //if we're here the theme deosn't exist, create new theme var themeId = await _themeService.AddThemeAsync(theme, GetUserId()); //Now create a new SongTheme using the ThemeId from the theme that was just created await _themeService.AddSongThemeAsync(songId, themeId, GetUserId()); } else { //if we're here, the theme already exists. Check to see if a SongTheme already exists. var existingSongThemeId = await _themeService.CheckIfSongThemeExistsAsync(existingThemeId.GetValueOrDefault(), songId); if (existingSongThemeId == null) { //if we're here, the SongTheme doesn't exist, create a new one (will also create a SongThemeUser for the current user) await _themeService.AddSongThemeAsync(songId, existingThemeId.GetValueOrDefault(), GetUserId()); } else { //if we're here, the SongTheme already exists. Create a SongThemeUser for the current user. await _themeService.AddSongThemeUserAsync(existingSongThemeId.GetValueOrDefault(), GetUserId()); } } } return(PartialView("SongThemes", new SongThemesViewModel { SongThemes = await _themeService.GetSongThemesBySongIdAsync(songId), UserId = GetUserId(), SongId = songId })); }
public async Task <IActionResult> AddTheme(CreateThemeDto themeDto) { await _themeService.AddThemeAsync(themeDto, _protector.Unprotect(Request.Cookies["accessToken"])); return(RedirectToAction("AllThemes", "Themes")); }