public IActionResult Edit(int id) { EditSongViewModel model = new EditSongViewModel(); model.song = _mapper.Map <SongModel>(_songService.GetSong(id)); model.genreList = _mapper.Map <List <GenreModel> >(_genreService.GetAllGenres()); return(View(model)); }
public async Task <IActionResult> Edit(int id, EditSongViewModel vm) { try { var song = await unitOfWork.Songs.GetAsync(id); // temporary solutions tracking // https://github.com/aspnet/AspNetCore.Docs/issues/10393 var isAuthorized = await authorizationService .AuthorizeAsync(User, song.OwenerId, AutherazationOperations.OwenResourse); if (!isAuthorized.Succeeded) { return(RedirectToAction("AccessDenied", "Users")); } if (!ModelState.IsValid) { return(View(vm)); } if (id != vm.Dto.Id) { vm.Message = "Opps update failed please try again"; return(View(vm)); } // check if the selected album is exist if (vm.Dto.AlbumId != null && !await unitOfWork.Albums.Exist(vm.Dto.AlbumId)) { vm.Message = $"The selected Album { vm.AlbumName } is no longer exist"; return(View(vm)); } var selectedGenres = vm.Genres.Where(s => s.IsSelected); vm.Dto.GenresIds = await GetValidGenresIdsAsync(selectedGenres); await unitOfWork.Songs.UpdateAsync(vm.Dto); await unitOfWork.SaveAsync(); return(RedirectToAction(nameof(Index))); } catch (Exception ex) { logger.LogError(ex, "An error occurred while deleting song."); } // ToDo: Implement error page return(View("Error")); }
public async Task <IActionResult> Edit(int id) { try { var song = await unitOfWork.Songs.GetAsync(id); // temporary solutions tracking // https://github.com/aspnet/AspNetCore.Docs/issues/10393 var isAuthorized = await authorizationService .AuthorizeAsync(User, song.OwenerId, AutherazationOperations.OwenResourse); if (!isAuthorized.Succeeded) { return(RedirectToAction("AccessDenied", "Users")); } var genres = await unitOfWork.Genres.GetAllAsync(); var songDto = mapper.Map <SongForUpdatingDto>(song); var genresDto = mapper.Map <List <CheckBoxItem> >(genres); // Select the genres that the song have foreach (var songGenre in song.Genres) { var selectedSong = genresDto.First(g => g.Id == songGenre.Id); selectedSong.IsSelected = true; } var vm = new EditSongViewModel { AlbumName = song.Album != null ? song.Album.Name : "", Dto = songDto, Genres = genresDto }; return(View(vm)); } catch (Exception ex) { logger.LogError(ex, "An error occurred while getting albums."); } // ToDo: Implement error page return(View("Error")); }
public ViewResult Edit(Guid id) { var song = _databaseContext.Song.FirstOrDefault(p => p.SongID == id); ViewData["Genres"] = _databaseContext.Genre.ToList(); ViewData["Writer"] = _databaseContext.Person.ToList(); ViewData["Singer"] = _databaseContext.Person.ToList(); ViewData["Producer"] = _databaseContext.Person.ToList(); ViewData["Performer"] = _databaseContext.Person.ToList(); ViewData["Guitarist"] = _databaseContext.Person.ToList(); ViewData["Drummer"] = _databaseContext.Person.ToList(); ViewData["Composer"] = _databaseContext.Person.ToList(); ViewData["Bassist"] = _databaseContext.Person.ToList(); Console.WriteLine("pi" + song.SongName); Console.WriteLine("li" + song.SongPersons.ToList().Select(u => u.PersonID)); Console.WriteLine("si" + song.Genres.ToList().Select(gu => gu.GenreID)); var model = new EditSongViewModel { Song = song, GenreIDs = song.Genres.ToList().Select(gu => gu.GenreID), Bassist = song.SongPersons.ToList().Select(u => u.Person.PersonID), Composer = song.SongPersons.ToList().Select(u => u.Person.PersonID), Drummer = song.SongPersons.ToList().Select(u => u.Person.PersonID), Guitarist = song.SongPersons.ToList().Select(u => u.Person.PersonID), Performer = song.SongPersons.ToList().Select(u => u.Person.PersonID), Producer = song.SongPersons.ToList().Select(u => u.Person.PersonID), Singer = song.SongPersons.ToList().Select(u => u.Person.PersonID), Songwriter = song.SongPersons.ToList().Select(u => u.Person.PersonID) }; return(View(model)); }
public IActionResult Edit(EditSongViewModel model) { Boolean success = _songService.UpdateSong(_mapper.Map <MusicCore.Song>(model.song)); return(RedirectToAction("Songs")); }
public IActionResult Update(Guid id, EditSongViewModel model) { if (ModelState.IsValid) { var song = _databaseContext.Song/*.Include("SongGenres.Genre")/.Include(s=>s.SongPersons).ThenInclude(s=>s.Person)*/ .FirstOrDefault(m => m.SongID == id); Console.WriteLine("songovi" + song.SongPersons.Count()); Console.WriteLine("ime" + song.SongName); song.Duration = model.Song.Duration; song.SongName = model.Song.SongName; song.SongYear = model.Song.SongYear; Boolean band = model.Band; List <SongPerson> osobe = new List <SongPerson>(); TempData["Success"] = true; song.Genres.Clear(); song.SongPersons.Clear(); var newGenres = _databaseContext.Genre.Where(u => model.GenreIDs.Contains(u.GenreID)).ToList(); foreach (var genre in newGenres) { song.Genres.Add(genre); } if (band == true) { var newBassist = _databaseContext.Person.Where(u => model.Bassist.Contains(u.PersonID)).ToList(); Console.WriteLine("broj" + newBassist.Count()); var newGuitarist = _databaseContext.Person.Where(u => model.Guitarist.Contains(u.PersonID)).ToList(); var newDrummer = _databaseContext.Person.Where(u => model.Drummer.Contains(u.PersonID)).ToList(); var newSinger = _databaseContext.Person.Where(u => model.Singer.Contains(u.PersonID)).ToList(); foreach (var person in newBassist) { Console.WriteLine("basist" + id); SongPerson sp = new SongPerson { Song = song, Person = person }; var per = osobe.Find(x => x.Person.PersonID == person.PersonID); if (per != null) { osobe.Remove(per); per.Function |= Function.BASSIST; osobe.Add(per); } else { sp.Function = Function.BASSIST; osobe.Add(sp); } } foreach (var person in newDrummer) { Console.WriteLine("bubnjar" + id); SongPerson sp = new SongPerson { Song = song, Person = person }; var per = osobe.Find(x => x.Person.PersonID == person.PersonID); if (per != null) { osobe.Remove(per); per.Function |= Function.DRUMMER; osobe.Add(per); } else { sp.Function = Function.DRUMMER; osobe.Add(sp); } } foreach (var person in newGuitarist) { Console.WriteLine("gitarist" + id); SongPerson sp = new SongPerson { Song = song, Person = person }; var per = osobe.Find(x => x.Person.PersonID == person.PersonID); if (per != null) { osobe.Remove(per); per.Function |= Function.GUITARIST; osobe.Add(per); } else { sp.Function = Function.GUITARIST; osobe.Add(sp); } } foreach (var person in newSinger) { Console.WriteLine("pjevac" + id); SongPerson sp = new SongPerson { Song = song, Person = person }; var per = osobe.Find(x => x.Person.PersonID == person.PersonID); if (per != null) { osobe.Remove(per); per.Function |= Function.SINGER; osobe.Add(per); } else { sp.Function = Function.SINGER; osobe.Add(sp); } } } var newProducer = _databaseContext.Person.Where(u => model.Producer.Contains(u.PersonID)).ToList(); var newSongWriter = _databaseContext.Person.Where(u => model.Songwriter.Contains(u.PersonID)).ToList(); var newComposer = _databaseContext.Person.Where(u => model.Composer.Contains(u.PersonID)).ToList(); var newPerformer = _databaseContext.Person.Where(u => model.Performer.Contains(u.PersonID)).ToList(); foreach (var person in newProducer) { Console.WriteLine("producer" + id); SongPerson sp = new SongPerson { Song = song, Person = person }; var per = osobe.Find(x => x.Person.PersonID == person.PersonID); if (per != null) { osobe.Remove(per); per.Function |= Function.PRODUCER; osobe.Add(per); } else { sp.Function = Function.PRODUCER; osobe.Add(sp); } } foreach (var person in newPerformer) { Console.WriteLine("performer" + id); SongPerson sp = new SongPerson { Song = song, Person = person }; var per = osobe.Find(x => x.Person.PersonID == person.PersonID); if (per != null) { osobe.Remove(per); per.Function |= Function.PERFORMER; osobe.Add(per); } else { sp.Function = Function.PERFORMER; osobe.Add(sp); } } foreach (var person in newComposer) { Console.WriteLine("composer" + id); SongPerson sp = new SongPerson { Song = song, Person = person }; var per = osobe.Find(x => x.Person.PersonID == person.PersonID); if (per != null) { osobe.Remove(per); per.Function |= Function.COMPOSER; osobe.Add(per); } else { sp.Function = Function.COMPOSER; osobe.Add(sp); } } foreach (var person in newSongWriter) { Console.WriteLine("pisac" + id); SongPerson sp = new SongPerson { Song = song, Person = person }; var per = osobe.Find(x => x.Person.PersonID == person.PersonID); if (per != null) { osobe.Remove(per); per.Function |= Function.SONGWRITER; osobe.Add(per); } else { sp.Function = Function.SONGWRITER; osobe.Add(sp); } } song.SongPersons.Clear(); foreach (var item in osobe) { Console.WriteLine("mj" + osobe.Count()); song.SongPersons.Add(item); } _databaseContext.SaveChanges(); } return(RedirectToAction(nameof(Index))); }