public async Task <ActionResult <LikedSongs> > PostLikedSongs(LikedSongs likedSongs)
        {
            _context.LikedSongs.Add(likedSongs);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetLikedSongs", new { id = likedSongs.Id }, likedSongs));
        }
Ejemplo n.º 2
0
        public IActionResult LikeSong(string trackId)
        {
            User currentUser = database.User.ToList().Find(u => u.Email == LoginController.UserEmail);

            LikedSongs song = ItunesDAL.SaveLike(trackId);

            currentUser.LikedSongs.Add(song);

            var saved = false;

            while (!saved)
            {
                try
                {
                    // Attempt to save changes to the database
                    database.User.Update(currentUser).State = EntityState.Modified;
                    database.SaveChanges();
                    saved = true;
                }
                catch (DbUpdateConcurrencyException ex)
                {
                    foreach (var entry in ex.Entries)
                    {
                        if (entry.Entity is User)
                        {
                            var proposedValues = entry.CurrentValues;
                            var databaseValues = entry.GetDatabaseValues();

                            foreach (var property in proposedValues.Properties)
                            {
                                var proposedValue = proposedValues[property];
                                var databaseValue = databaseValues[property];

                                // TODO: decide which value should be written to database
                                // proposedValues[property] = <value to be saved>;
                            }

                            // Refresh original values to bypass next concurrency check
                            entry.OriginalValues.SetValues(databaseValues);
                        }
                        else
                        {
                            throw new NotSupportedException(
                                      "Don't know how to handle concurrency conflicts for "
                                      + entry.Metadata.Name);
                        }
                    }
                }
            }
            return(RedirectToAction("HomePage"));
        }