private void UpdateSong(SongDetail songDetail) { var song = _songRepository.Get(songDetail.Id); var members = _bandRepository.GetMembers(songDetail.BandId).ToArray(); var instruments = _instrumentRepository.GetAll(); var genre = _bandRepository.GetGenre(songDetail.GenreId); var tempo = _songRepository.GetTempo(songDetail.TempoId); if (song != null) { song.Title = songDetail.Title; song.Singer = songDetail.SingerId > 0 ? members.Single(x => x.Id == songDetail.SingerId) : null; song.Key = _songRepository.GetKey(songDetail.KeyId); song.Composer = songDetail.Composer; song.Genre = genre; song.Tempo = tempo; song.NeverClose = songDetail.NeverClose; song.NeverOpen = songDetail.NeverOpen; song.IsDisabled = songDetail.Disabled; song.UserUpdate = _currentUser; song.DateUpdate = DateTime.Now; song.SongMemberInstruments.Clear(); foreach (var mi in songDetail.SongMemberInstrumentDetails .Where(mi => mi.InstrumentId > 0)) { song.SongMemberInstruments.Add(new SongMemberInstrument { Song = song, Member = members.Single(x => x.Id == mi.MemberId), Instrument = instruments.Single(x => x.Id == mi.InstrumentId) }); } }; _songRepository.Update(song); }
private int AddSong(SongDetail songDetail) { var band = _bandRepository.Get(songDetail.BandId); var members = _bandRepository.GetMembers(songDetail.BandId).ToArray(); var instruments = _instrumentRepository.GetAll(); var genre = _bandRepository.GetGenre(songDetail.GenreId); var tempo = _songRepository.GetTempo(songDetail.TempoId); var newSong = new Song { Band = band, Title = songDetail.Title, Singer = songDetail.SingerId > 0 ? members.Single(x => x.Id == songDetail.SingerId) : null, Key = _songRepository.GetKey(songDetail.KeyId), Composer = songDetail.Composer, Genre = genre, Tempo = tempo, NeverClose = songDetail.NeverClose, NeverOpen = songDetail.NeverOpen, IsDisabled = songDetail.Disabled, UserCreate = _currentUser, UserUpdate = _currentUser, DateCreate = DateTime.Now, DateUpdate = DateTime.Now, SongMemberInstruments = new List<SongMemberInstrument>() }; foreach (var mi in songDetail.SongMemberInstrumentDetails .Where(mi => mi.InstrumentId > 0)) { newSong.SongMemberInstruments.Add( new SongMemberInstrument { Song = newSong, Member = members.Single(x => x.Id == mi.MemberId), Instrument = instruments.Single(x => x.Id == mi.InstrumentId) }); } return _songRepository.Add(newSong); }