Exemple #1
0
        public async Task <ActionResult <GetFavoriteModel> > PostFavorite(PostFavoriteModel postFavoriteModel)
        {
            try
            {
                GetFavoriteModel favorite = await _favoriteRepository.PostFavorite(postFavoriteModel);

                return(CreatedAtAction(nameof(GetFavorite), new { id = favorite.Id }, favorite));
            }
            catch (DatabaseException e)
            {
                return(BadRequest(e.MovieMindError));
            }
        }
        public async Task <IActionResult> AddFavorite(string movieId)
        {
            try
            {
                var userId = HttpContext.Session.GetString("_Id");
                var user   = await _moviemindAPIService.GetModel <GetUserModel>(userId, "users");

                PostFavoriteModel postFavoriteModel = new PostFavoriteModel
                {
                    UserId  = user.Id,
                    MovieId = Guid.Parse(movieId)
                };

                GetFavoriteModel getFavoriteModel = await _moviemindAPIService.PostModel <PostFavoriteModel, GetFavoriteModel>(postFavoriteModel, "Favorites");

                return(Redirect("/Movies/Details/" + movieId));
            }
            catch (MovieMindException e)
            {
                return(ErrorHelper.HandleError(e));
            }
        }
        public async Task <GetFavoriteModel> PostFavorite(PostFavoriteModel postFavoriteModel)
        {
            User user = await _context.Users.FirstOrDefaultAsync(x => x.Id == postFavoriteModel.UserId);

            if (user == null)
            {
                throw new EntityException("User not found", this.GetType().Name, "PostFavorite", "404");
            }

            Movie movie = await _context.Movies.FirstOrDefaultAsync(x => x.Id == postFavoriteModel.MovieId);

            if (movie == null)
            {
                throw new EntityException("Movie not found", this.GetType().Name, "PostFavorite", "404");
            }

            try
            {
                EntityEntry <Favorite> result = await _context.Favorites.AddAsync(new Favorite
                {
                    UserId  = postFavoriteModel.UserId,
                    User    = user,
                    MovieId = postFavoriteModel.MovieId,
                    Movie   = movie
                });

                await _context.SaveChangesAsync();

                return(await GetFavorite(result.Entity.Id.ToString()));
            }
            catch (MovieMindException)
            {
                throw;
            }
            catch (Exception e)
            {
                throw new DatabaseException(e.InnerException.Message, this.GetType().Name, "PostFavorite", "400");
            }
        }