public ActionResult Save(AlbumFormViewModel albumViewModel)
        {
            //If it is a new album create it
            if (albumViewModel.album.albumId == 0)
            {
                var   album = albumViewModel.album;
                Genre genre = _context.genres.SingleOrDefault(c => c.id == albumViewModel.genreChosen);
                album.genres.Add(genre);
                _context.albums.Add(albumViewModel.album);
                _context.SaveChanges();
            }
            else
            {
                //Update database album
                Album databaseAlbum = _context.albums.Single(c => c.albumId == albumViewModel.album.albumId);
                Album viewAlbum     = albumViewModel.album;
                databaseAlbum.albumName = viewAlbum.albumName;
                databaseAlbum.bandName  = viewAlbum.bandName;
                databaseAlbum.year      = viewAlbum.year;
                Genre genre = _context.genres.SingleOrDefault(c => c.id == albumViewModel.genreChosen);
                databaseAlbum.genres.Clear();
                databaseAlbum.genres.Add(genre);
            }

            _context.SaveChanges();
            //Send user to new album's info page.
            String redirect = "GetAlbum/" + albumViewModel.album.albumId;

            return(RedirectToAction(redirect, "Album"));
        }
예제 #2
0
        public IHttpActionResult UpdateAlbumRank(int id, double expected, int result)
        {
            var databaseAlbumRank = _context.userAlbumRanks.SingleOrDefault(c => c.id == id);

            if (databaseAlbumRank == null)
            {
                return(NotFound());
            }
            databaseAlbumRank.timesSeen++;

            int k = eloMethods.getKConstant(databaseAlbumRank.timesSeen, databaseAlbumRank.rank);

            databaseAlbumRank.rank = eloMethods.getNewRank(expected, result, k, databaseAlbumRank.rank);
            _context.SaveChanges();

            return(Ok());
        }
예제 #3
0
        public IHttpActionResult TrustUser(string email, string username)
        {
            var user = _context.Users.SingleOrDefault(x => x.Email == email && x.UserName == username);

            if (user == null)
            {
                return(NotFound());
            }
            var UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(_context));

            try
            {
                UserManager.AddToRole(user.Id, "Trusted");
                _context.SaveChanges();
                return(Ok());
            }
            catch
            {
                return(BadRequest());
            }
        }
        public IHttpActionResult CreateAlbum(AlbumDto albumDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            var album = Mapper.Map <AlbumDto, Album>(albumDto);

            _context.albums.Add(album);
            _context.SaveChanges();
            albumDto.albumId = album.albumId;
            return(Created(new Uri(Request.RequestUri + "/" + album.albumId), albumDto));
        }
예제 #5
0
        public AlbumRankerViewModel PickTwoAlbumRankerViewModels(string userId)
        {
            var dontChose    = _context.userAlbumRanks.Where(x => x.knowAlbum != true && x.userId == userId).Select(x => x.albumId).ToList();
            var albumsChosen = _context.albums.OrderBy(x => Guid.NewGuid()).Where(x => !dontChose.Contains(x.albumId)).Take(2).ToList();
            int album1Id     = albumsChosen[0].albumId;
            int album2Id     = albumsChosen[1].albumId;
            var albumRanks   = _context.userAlbumRanks.Where(x => x.userId.Equals(userId) && (x.albumId == album1Id || x.albumId == album2Id)).ToList();

            if (albumRanks.Count < 2)
            {
                if (albumRanks.Count == 0)
                {
                    foreach (var album in albumsChosen)
                    {
                        var toInput = createNewRank(album, userId);
                        albumRanks.Add(toInput);
                        _context.userAlbumRanks.Add(toInput);
                    }
                    ;
                }
                else
                {
                    if (albumRanks[0].albumId == albumsChosen[0].albumId)
                    {
                        var toInput = createNewRank(albumsChosen[1], userId);
                        albumRanks.Add(toInput);
                        _context.userAlbumRanks.Add(toInput);
                    }
                    else
                    {
                        var toInput = createNewRank(albumsChosen[0], userId);
                        albumRanks.Insert(0, toInput);
                        _context.userAlbumRanks.Add(toInput);
                    }
                }
                _context.SaveChanges();
            }
            ;
            var indexOfAlbum1Rank = -1;
            var indexOfAlbum2Rank = -1;

            if (albumRanks[0].albumId == album1Id)
            {
                indexOfAlbum1Rank = 0;
                indexOfAlbum2Rank = 1;
            }
            else
            {
                indexOfAlbum1Rank = 1;
                indexOfAlbum2Rank = 0;
            }

            var translatedAlbum1Rank = eloMethods.convertRank(albumRanks[indexOfAlbum1Rank].rank);
            var translatedAlbum2Rank = eloMethods.convertRank(albumRanks[indexOfAlbum2Rank].rank);
            var expecteds            = eloMethods.getExpectedScores(translatedAlbum1Rank, translatedAlbum2Rank);

            var albumRankerViewModel = new AlbumRankerViewModel()
            {
                album1         = albumsChosen[0],
                album2         = albumsChosen[1],
                album1Expected = expecteds.Item1,
                album2Expected = expecteds.Item2,
                albumRank1     = albumRanks[indexOfAlbum1Rank],
                albumRank2     = albumRanks[indexOfAlbum2Rank],
                userId         = userId,
                album1path     = getAlbumCoverPath(album1Id),
                album2path     = getAlbumCoverPath(album2Id)
            };

            return(albumRankerViewModel);
        }