Exemplo n.º 1
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);
                }
            }
        }
Exemplo n.º 2
0
        public IActionResult InsertMusician(String firstname, string lastName, string nickname, TrackInsertModel track)
        {
            Musician musician = _context.InsertMusician(firstname, lastName, nickname, track);

            if (musician != null)
            {
                return(Ok(musician));
            }
            else if (musician.FirstName == null || musician.LastName == null)
            {
                return(BadRequest());
            }
            else
            {
                return(StatusCode(500));
            }
        }