public IHttpActionResult Post(Album album)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest();
            }

            this.Data.Albums.Add(album);
            this.Data.SaveChanges();

            return Ok(album);
        }
        public IHttpActionResult Put(int id, Album album)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest();
            }

            var albumFromDb = this.Data.Albums.GetById(id);
            albumFromDb = album;

            this.Data.Albums.Update(albumFromDb);
            this.Data.SaveChanges();

            return Ok(album);
        }
        private Album AddSongsToAlbum(int[] songIds, Album album)
        {
            album.Songs.Clear();

            foreach (var songId in songIds)
            {
                var songToAdd = this.data.Songs.Find(songId);

                if (songToAdd == null)
                {
                    return null;
                }

                album.Songs.Add(songToAdd);
            }

            return album;
        }
        public IHttpActionResult Post([FromBody]AlbumDataModel model)
        {
            if (!this.ModelState.IsValid)
            {
                return this.BadRequest(this.ModelState);
            }

            if (this.data.Producers.Find(model.ProducerId) == null)
            {
                return this.BadRequest("No such producer can be found.");
            }

            var album = new Album
            {
                Name = model.Name,
                ProducerId = model.ProducerId,
                Year = model.Year
            };

            if (this.AddArtistsToAlbum(model.ArtistIds, album) == null || this.AddSongsToAlbum(model.SongIds, album) == null)
            {
                return this.BadRequest("No such song/artist can be found.");
            }

            this.data.Albums.Add(album);
            this.data.Savechanges();

            return this.Created(this.Url.ToString(), album);
        }
        private Album AddArtistsToAlbum(int[] artistIds, Album album)
        {
            album.Artists.Clear();

            foreach (var artistId in artistIds)
            {
                var artistToAdd = this.data.Artists.Find(artistId);

                if (artistToAdd == null)
                {
                    return null;
                }

                album.Artists.Add(artistToAdd);
            }

            return album;
        }