public void AddMusician(AddMusicianRequest request) { using (var transaction = _context.Database.BeginTransaction()) { try { if (request.Track != null) { var track = GetTrackByName(request.Track.TrackName); if (track == null) { _context.Add(request.Track); _context.SaveChanges(); } } var trackId = GetTrackByName(request.Track.TrackName).IdTrack; var Musician = new Musician { FirstName = request.FirstName, LastName = request.LastName, Nickname = request.Nickname }; _context.Musicians.Add(Musician); var MusicianTrack = new MusicianTrack { IdTrack = trackId, IdMusician = _context.Musicians .Where(p => p.FirstName == Musician.FirstName && p.LastName == Musician.LastName) .FirstOrDefault().IdMusician }; _context.MusicianTracks.Add(MusicianTrack); _context.SaveChanges(); transaction.Commit(); } catch (Exception exc) { transaction.Rollback(); throw new MusicianDoesNotAddedException("Uncorrect requst!"); } } }
public void AddMusician(MusicianRequestDto musicianRequestDto) { List <TrackDto> tracksDto = musicianRequestDto.tracksDto; List <Track> musianTracks = new List <Track>(); // create new tracks if they dont exist if (tracksDto != null) { tracksDto.ForEach(tr => { Track dbTrack = _context.Track.Where(x => x.TrackName.Equals(tr.trackName)).FirstOrDefault(); if (dbTrack == null) { Track newTrack = new Track { TrackName = tr.trackName, Duration = tr.duration }; musianTracks.Add(newTrack); _context.Add(newTrack); } else { musianTracks.Add(dbTrack); } }); } Musician newMusician = new Musician() { FirstName = musicianRequestDto.firstName, LastName = musicianRequestDto.lastName, NickName = musicianRequestDto.nickName }; _context.Add(newMusician); musianTracks.ForEach(tr => { var muzTrack = new MusicianTrack() { IdTrack = tr.IdTrack, IdMusician = newMusician.IdMusician }; _context.Add(muzTrack); }); _context.SaveChanges(); }
public void AddMusician(MusicianRequest request) { var track = _context.Track.SingleOrDefault(t => t.TrackName == request.Track.TrackName); if (track == null) { track = new Track() { TrackName = request.Track.TrackName, Duration = request.Track.Duration }; } var musician = new Musician() { FirstName = request.FirstName, LastName = request.LastName, NickName = request.NickName }; var musicianTrack = new MusicianTrack() { Track = track, Musician = musician }; //_context.MusicianTrack.Attach(musicianTrack); //_context.Musician.Attach(musician); //_context.Track.Attach(track); _context.MusicianTrack.AddRange(musicianTrack); _context.Musician.Add(musician); _context.Track.Add(track); _context.SaveChanges(); }
public NewMusicianResponseDto AddNewMusician(NewMusicianRequestDto newMusicianRequestDto) { var musician = new Musician { FirstName = newMusicianRequestDto.FirstName, LastName = newMusicianRequestDto.LastName, NickName = newMusicianRequestDto.NickName, }; var track = _context.Tracks.FirstOrDefault(t => t.TrackName.Equals(newMusicianRequestDto.Track.TrackName) && t.Duration.Equals(newMusicianRequestDto.Track.Duration)) ?? new Track { TrackName = newMusicianRequestDto.Track.TrackName, Duration = newMusicianRequestDto.Track.Duration }; var musicianTrack = new MusicianTrack { Musician = musician, Track = track }; _context.Add(musicianTrack); _context.SaveChanges(); return(new NewMusicianResponseDto { IdMusician = musician.IdMusician, FirstName = musician.FirstName, LastName = musician.LastName, NickName = musician.NickName, Track = new NewTrackResponseDto { IdTrack = track.IdTrack, TrackName = track.TrackName, Duration = track.Duration } }); }
public Musician AddMusician(MusicianTracksRequest request) { var _track = _context.Tracks.FirstOrDefault(t => t.TrackName == request.Track.TrackName); if (_track != null) { throw new TrackAlreadyExistException($"Track with the name {request.Track.TrackName} already exists."); } var _musician = new Musician { FirstName = request.FirstName, LastName = request.LastName, Nickname = request.NickName }; _track = new Track { TrackName = request.Track.TrackName, Duration = request.Track.Duration }; var _idMusician = _context.Musicians.Max(m => m.IdMusician); var _idTrack = _context.Tracks.Max(m => m.IdTrack); var _musicianTrack = new MusicianTrack { IdTrack = _idTrack, IdMusician = _idMusician }; _context.Musicians.Add(_musician); _context.Tracks.Add(_track); //_context.MusicianTracks.Add(_musicianTrack); _context.MusicianTracks.AddRange(_musicianTrack); _context.SaveChanges(); return(_musician); }
public Musician InsertMusician(string firstname, string lastName, string nickname, TrackInsertModel track) { // if lastname or firstname are empty return an empty musician to signal a bad request if (firstname == "" || lastName == "" || firstname == null || lastName == null) { return(new Musician()); } using (TransactionScope tranScope = new TransactionScope()) { try { var getNewestId = _context.Musicians.Max(m => m.IdMusician); Musician newMusician = new Musician(); newMusician.FirstName = firstname; newMusician.LastName = lastName; newMusician.IdMusician = getNewestId + 1; if (nickname != null) { newMusician.NickName = nickname; } //if track variables are not null proceed to add musician to track if (track.trackName != null && track.trackName != "" && track.duration != 0) { var CheckIfTrackExists = _context.Tracks.Where(t => (t.TrackName == track.trackName) && (t.Duration == track.duration)).FirstOrDefault(); // if track doesnt exist create a new track if (CheckIfTrackExists == null) { var getHighestTrackId = _context.MusicianTracks.Max(t => t.IdTrack); Track newTrack = new Track(); newTrack.IdTrack = getHighestTrackId + 1; newTrack.TrackName = track.trackName; newTrack.Duration = track.duration; _context.Tracks.Add(newTrack); CheckIfTrackExists = newTrack; } //add track to musiciantrack table var getHighiestMusicianTrackId = _context.MusicianTracks.Max(mt => mt.IdMusicianTrack); getHighiestMusicianTrackId++; MusicianTrack newMuscianTrack = new MusicianTrack(); newMuscianTrack.IdMusicianTrack = getHighiestMusicianTrackId; newMuscianTrack.IdTrack = CheckIfTrackExists.IdTrack; newMuscianTrack.IdMusician = newMusician.IdMusician; _context.MusicianTracks.Add(newMuscianTrack); } //add musciian to database and complete the transaction _context.Musicians.Add(newMusician); tranScope.Complete(); return(newMusician); } catch (Exception ex) { return(null); } } }