public ActionResult _Fav(string ID)
        {
            List <string> errors = new List <string>(); // You might want to return an error if something wrong happened

            FavouriteMovie favMovieData = new FavouriteMovie();

            favMovieData.MovieId = ID;
            favMovieData.UserId  = User.Identity.GetUserId();

            try
            {
                int movieID = int.Parse(ID);

                TMDbClient client = new TMDbClient("a331c3f9e48b75412c7c99a04a4aba78");
                client = MovieDatabase.FetchConfig(client);
                Movie  movie        = client.GetMovieAsync(movieID, MovieMethods.Videos).Result;
                string xmlMovieInfo = MovieDatabase.GetXMLFromObject(movie);
                var    xmlData      = XElement.Parse(xmlMovieInfo);
                favMovieData.MovieInfo = xmlData;
            }
            catch (Exception ex)
            {
                errors.Add(ex.ToString());
            }

            db.FavouriteMovies.Add(favMovieData);
            db.SaveChanges();

            return(Json(errors, JsonRequestBehavior.AllowGet));
        }
Пример #2
0
        public IActionResult OnPost(MovieVM testMovie, string returnUrl = null, string favUrl = null)
        {
            int?   favouriteId = HttpContext.Session.GetInt32("favouriteId");
            bool   isUser      = _signInManager.IsSignedIn(User);
            string userId      = null;

            returnUrl = returnUrl ?? Url.Content("/Identity/Account/Login");
            favUrl    = favUrl ?? Url.Content("/MovieFavourites/MovieFavourites");

            if (isUser)
            {
                userId = _userManager.FindByNameAsync(User.Identity.Name).Result.Id;
            }
            else
            {
                return(LocalRedirect(returnUrl));
            }

            Favourite fav;

            if (favouriteId == null)
            {
                fav = new Favourite(userId, DateTime.Now);
                _db.Favourites.Add(fav);
                _db.SaveChanges();
                favouriteId = fav.Id;
            }
            else
            {
                Favourite = _db.Favourites
                            .Include(f => f.FavouriteMovies)
                            .ThenInclude(fm => fm.Movie)
                            .Where(f => f.Id == (int)HttpContext.Session.GetInt32("favouriteId"))
                            .FirstOrDefault();

                if (Favourite.UserId != userId)
                {
                    fav = new Favourite(userId, DateTime.Now);
                    _db.Favourites.Add(fav);
                    _db.SaveChanges();
                    favouriteId = fav.Id;
                }
            }

            FavouriteMovie fm;

            fm = _db.FavouriteMovies.Where(fm => fm.FavouriteId == favouriteId && fm.MovieId == testMovie.Id).FirstOrDefault();

            if (fm == null)
            {
                fm = new FavouriteMovie((int)favouriteId, testMovie.Id);
                _db.FavouriteMovies.Add(fm);
            }

            _db.SaveChanges();
            HttpContext.Session.SetInt32("favouriteId", (int)favouriteId);

            return(LocalRedirect(favUrl));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            FavouriteMovie FavouriteMovie = db.FavouriteMovies.Find(id);

            db.FavouriteMovies.Remove(FavouriteMovie);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "ID,UserId,MovieId,movieInfo,UserHasWatched")] FavouriteMovie FavouriteMovie)
 {
     if (ModelState.IsValid)
     {
         db.Entry(FavouriteMovie).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(FavouriteMovie));
 }
        public ActionResult Create([Bind(Include = "ID,UserId,MovieId,movieInfo,UserHasWatched")] FavouriteMovie FavouriteMovie)
        {
            if (ModelState.IsValid)
            {
                db.FavouriteMovies.Add(FavouriteMovie);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(FavouriteMovie));
        }
Пример #6
0
        private async void DeleteFavourite(int id)
        {
            var selectedItem = FavouriteMovie.FirstOrDefault(m => m.Id == id);

            if (selectedItem != null)
            {
                selectedItem.IsFavorited = !selectedItem.IsFavorited;
                await MovieRepository.UpdateMovie(selectedItem);

                FavouriteMovie.Remove(selectedItem);
            }
        }
Пример #7
0
        public async Task <ResultDto <BaseDto> > AddFavouriteMovie(ClaimsPrincipal user, int movieId)
        {
            var result = new ResultDto <BaseDto>()
            {
                Error = null
            };

            try
            {
                string userId = await _userManager.GetId(user);

                if (string.IsNullOrEmpty(userId))
                {
                    result.Error = "Nie znaleziono u¿ytkownika";

                    return(result);
                }

                var movieExists = await _repo.Exists(x => x.Id == movieId);

                if (!movieExists)
                {
                    result.Error = "Nie znaleziono filmu";

                    return(result);
                }

                var favouriteMovieAlreadyExists = await _favouriteMovieRepo.Exists(x => x.UserId == userId && x.MovieId == movieId);

                if (favouriteMovieAlreadyExists)
                {
                    result.Error = "Ten film zosta³ ju¿ dodany jako ulubiony";

                    return(result);
                }

                var favouriteMovie = new FavouriteMovie()
                {
                    MovieId = movieId,
                    UserId  = userId
                };

                await _favouriteMovieRepo.Add(favouriteMovie);

                return(result);
            }
            catch (Exception)
            {
                result.Error = "Wyst¹pi³ b³¹d";

                return(result);
            }
        }
        // GET: FavouriteMovies/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            FavouriteMovie FavouriteMovie = db.FavouriteMovies.Find(id);

            if (FavouriteMovie == null)
            {
                return(HttpNotFound());
            }
            return(View(FavouriteMovie));
        }
        public ActionResult _UnFav(string ID)
        {
            List <string> errors = new List <string>(); // You might want to return an error if something wrong happened

            try
            {
                string         userId         = User.Identity.GetUserId();
                FavouriteMovie FavouriteMovie = db.FavouriteMovies.Where(x => x.UserId == userId && x.MovieId == ID).FirstOrDefault();
                db.FavouriteMovies.Remove(FavouriteMovie);
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                errors.Add(ex.ToString());
            }

            return(Json(errors, JsonRequestBehavior.AllowGet));
        }
Пример #10
0
        public async void ShouldDeleteMovieFromFavouritesIfTheresNoErrors()
        {
            var    movieId  = 1;
            string email    = "*****@*****.**";
            string username = "******";
            string role     = "user";
            string userId   = Guid.NewGuid().ToString();

            var userDb = new User()
            {
                Id    = "id",
                Email = ""
            };

            var favouriteMovie = new FavouriteMovie()
            {
                MovieId = movieId,
                UserId  = "id"
            };

            var user = GetUserMock(email, username, role);

            var repo               = new Mock <IRepository <Movie> >();
            var reviewRepo         = new Mock <IRepository <Review> >();
            var favouriteMovieRepo = new Mock <IRepository <FavouriteMovie> >();
            var hostingEnvironment = new Mock <IHostingEnvironment>();

            var store       = new Mock <IUserStore <User> >();
            var userManager = new Mock <UserManager <User> >(store.Object, null, null, null, null, null, null, null, null);

            List <Review> reviews = new List <Review>();

            userManager.Setup(x => x.FindByEmailAsync(It.IsAny <string>())).Returns(Task.FromResult(userDb));
            repo.Setup(x => x.Exists(It.IsAny <Expression <Func <Movie, bool> > >())).Returns(Task.FromResult(true));
            favouriteMovieRepo.Setup(x => x.GetEntity(It.IsAny <Expression <Func <FavouriteMovie, bool> > >())).Returns(Task.FromResult(favouriteMovie));

            var movieService = new MovieService(repo.Object, reviewRepo.Object, userManager.Object, hostingEnvironment.Object, favouriteMovieRepo.Object);

            var result = await movieService.DeleteFavouriteMovie(user, movieId);

            Assert.Null(result.Error);
        }
Пример #11
0
        public async void ShouldNotDeleteMovieFromFavouritesIfNotFavourite()
        {
            var    movieId  = 1;
            string email    = "*****@*****.**";
            string username = "******";
            string role     = "user";

            var userDb = new User()
            {
                Id    = "id",
                Email = ""
            };

            FavouriteMovie favouriteMovie = null;

            var user = GetUserMock(email, username, role);

            var repo               = new Mock <IRepository <Movie> >();
            var reviewRepo         = new Mock <IRepository <Review> >();
            var favouriteMovieRepo = new Mock <IRepository <FavouriteMovie> >();
            var hostingEnvironment = new Mock <IHostingEnvironment>();

            var store       = new Mock <IUserStore <User> >();
            var userManager = new Mock <UserManager <User> >(store.Object, null, null, null, null, null, null, null, null);

            List <Review> reviews = new List <Review>();

            userManager.Setup(x => x.FindByEmailAsync(It.IsAny <string>())).Returns(Task.FromResult(userDb));
            repo.Setup(x => x.Exists(It.IsAny <Expression <Func <Movie, bool> > >())).Returns(Task.FromResult(true));
            favouriteMovieRepo.Setup(x => x.GetEntity(It.IsAny <Expression <Func <FavouriteMovie, bool> > >())).Returns(Task.FromResult(favouriteMovie));

            var movieService = new MovieService(repo.Object, reviewRepo.Object, userManager.Object, hostingEnvironment.Object, favouriteMovieRepo.Object);

            var result = await movieService.DeleteFavouriteMovie(user, movieId);

            var error = "Ten film nie jest dodany jako ulubiony";

            Assert.Contains(error, result.Error);
        }