コード例 #1
0
        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!");
                }
            }
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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
                }
            });
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
                }
            }
        }