Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }