public IHttpActionResult UpdateMusicAlbum([FromUri] int id, [FromBody] MusicAlbumBindingModel musicAlbum) { var existingMusicAlbum = this.Data.MusicAlbums.Find(id); if (existingMusicAlbum == null) { return(this.NotFound()); } var currentUser = this.Data.Users.Find(this.User.Identity.GetUserId()); if (currentUser.Id != existingMusicAlbum.AuthorId) { return(this.Unauthorized()); } if (musicAlbum == null) { return(this.BadRequest("Cannot create an empty music album model.")); } if (!this.ModelState.IsValid) { return(this.BadRequest(this.ModelState)); } existingMusicAlbum.Title = musicAlbum.Title; this.Data.SaveChanges(); var musicAlbumToReturn = Mapper.Map <MusicAlbumViewModel>(existingMusicAlbum); return(this.Ok(musicAlbumToReturn)); }
public IHttpActionResult AddMusicAlbum([FromBody] MusicAlbumBindingModel musicAlbum) { if (musicAlbum == null) { return(this.BadRequest("Cannot create an empty music album model.")); } if (!this.ModelState.IsValid) { return(this.BadRequest(this.ModelState)); } if (musicAlbum.CoverImageData != null && musicAlbum.CoverImageData.IndexOf(',') == -1) { musicAlbum.CoverImageData = string.Format("{0}{1}", "data:image/jpg;base64,", musicAlbum.CoverImageData); } var user = this.Data.Users.Find(this.User.Identity.GetUserId()); var newMusicAlbum = new MusicAlbum { Title = musicAlbum.Title, AuthorId = user.Id, IsPublic = musicAlbum.IsPublic, DateCreated = DateTime.Now, CoverImageData = musicAlbum.CoverImageData }; if ( this.Data.MusicAlbums.All() .Any(a => a.Title == newMusicAlbum.Title && a.AuthorId == newMusicAlbum.AuthorId)) { return(this.BadRequest("This music album already exists.")); } this.Data.MusicAlbums.Add(newMusicAlbum); this.Data.SaveChanges(); var userFollowers = user.FollowedBy.Select(u => u.Id); foreach (var userId in userFollowers) { var notification = new Notification() { MusicAlbumId = newMusicAlbum.Id, RecipientId = userId, NotificationType = NotificationType.CreatedMusicAlbum, DateCreated = DateTime.Now, Message = user.UserName + " created music album." }; this.Data.Notifications.Add(notification); } this.Data.SaveChanges(); var musicAlbumToReturn = Mapper.Map <MusicAlbumViewModel>(newMusicAlbum); return(this.Ok(musicAlbumToReturn)); }