示例#1
0
        public HttpResponseMessage CreateSong([FromBody] SongModel songModel)
        {
            if (songModel.Artists.Count == 0)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, "Phải có ít nhất 1 nghệ sĩ"));
            }
            using (var db = new OnlineMusicEntities())
            {
                var user = (from u in db.Users where u.Id == songModel.AuthorId select u).FirstOrDefault();
                if (user == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Không tìm thấy user id=" + songModel.AuthorId));
                }
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        var song  = new Song();
                        var query = dto.GetSongQuery(db);

                        // Update artists of song
                        foreach (var artist in songModel.Artists)
                        {
                            var art = (from a in db.Artists
                                       where a.Id == artist.Id
                                       select a).FirstOrDefault();
                            if (art == null)
                            {
                                art = new Artist()
                                {
                                    FullName = artist.FullName, GenreId = artist.GenreId > 0 ? artist.GenreId : 1,
                                    Gender   = 0, DateOfBirth = null, Photo = GoogleDriveServices.DEFAULT_ARTIST, Verified = false
                                };
                                db.Artists.Add(art);
                                db.SaveChanges();
                            }
                            song.Artists.Add(art);
                        }

                        songModel.UpdateEntity(song);
                        song.UploadedDate = DateTime.Now;
                        song.Privacy      = song.Verified = song.Official = false;
                        db.Songs.Add(song);
                        db.SaveChanges();
                        transaction.Commit();
                        db.Entry(song).Reference(s => s.Genre).Load();
                        db.Entry(song).Reference(s => s.User).Load();
                        db.Entry(song).Collection(s => s.Artists).Load();

                        songModel = dto.GetSongQuery(db, s => s.Id == song.Id).FirstOrDefault();
                        return(Request.CreateResponse(HttpStatusCode.Created, songModel));
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message));
                    }
                }
            }
        }
示例#2
0
        public HttpResponseMessage UpdateSong([FromBody] SongModel songModel)
        {
            using (var db = new OnlineMusicEntities())
            {
                var song = (from a in db.Songs
                            where a.Id == songModel.Id
                            select a).FirstOrDefault();
                if (song == null)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Không tìm thấy nghệ sĩ id=" + songModel.Id));
                }

                // Update junction data
                if (songModel.Artists.Count > 0)
                {
                    song.Artists.Clear();
                    foreach (var artist in songModel.Artists)
                    {
                        var art = (from a in db.Artists
                                   where a.Id == artist.Id
                                   select a).FirstOrDefault();
                        if (art == null)
                        {
                            art = new Artist()
                            {
                                FullName    = artist.FullName, GenreId = artist.GenreId > 0 ? artist.GenreId : 1, Gender = 0,
                                DateOfBirth = null, Photo = GoogleDriveServices.DEFAULT_ARTIST, Verified = false
                            };
                        }
                        song.Artists.Add(art);
                    }
                }
                songModel.UpdateEntity(song);
                db.SaveChanges();
                songModel = dto.GetSongQuery(db, s => s.Id == song.Id).FirstOrDefault();
                return(Request.CreateResponse(HttpStatusCode.OK, songModel));
            }
        }