Exemplo n.º 1
0
        public async Task ManageUserMovieAsync(ManageUserMovieDTO manageUserMovieDTO, ClaimsPrincipal sessionUser)
        {
            var assignedMovie = await GetUserMovieByUserIdAsync(manageUserMovieDTO.MovieId, sessionUser);

            if (assignedMovie == null)
            {
                throw new FlowException("User does not have this movie!");
            }

            ManageUserMovieCases(manageUserMovieDTO, assignedMovie);

            _userMovieRepository.Update(assignedMovie);
            await _userMovieRepository.SaveEntitiesAsync();
        }
Exemplo n.º 2
0
        public IHttpActionResult Put(UserMovieModel data)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Invalid Data"));
            }

            if (data.UserId < 0)
            {
                return(BadRequest("Invalid UserId"));
            }

            if (data.MovieId < 0)
            {
                return(BadRequest("Invalid MovieId"));
            }

            if (data.UserRating < 0)
            {
                return(BadRequest("Invalid Rating"));
            }

            DbResult <UserMovie> res = _userMovieRep.GetSingle(data.UserId, data.MovieId);

            if (!res.IsSuccess)
            {
                DbResult <UserMovie> resIns = _userMovieRep.Insert(new UserMovie
                {
                    MovieId    = data.MovieId,
                    UserId     = data.UserId,
                    UserRating = data.UserRating
                });
                if (!resIns.IsSuccess)
                {
                    return(BadRequest("UserId or MovieId does not exist in the system"));
                }
            }
            else
            {
                DbResult <int> resUpd = _userMovieRep.Update(new UserMovie
                {
                    MovieId    = data.MovieId,
                    UserId     = data.UserId,
                    UserRating = data.UserRating
                });
                if (!resUpd.IsSuccess)
                {
                    return(InternalServerError(new System.Exception(resUpd.Message)));
                }
            }

            var     ratings     = _userMovieRep.GetAllByMovieId(data.MovieId).Result;
            decimal totalrating = 0;

            foreach (var item in ratings)
            {
                if (item.UserRating.HasValue)
                {
                    totalrating += item.UserRating.Value;
                }
            }
            decimal average = totalrating / ratings.Count;

            Movie entMovie = _movieRep.GetSingle(data.MovieId).Result;

            entMovie.AverageRating = average;
            DbResult <int> resMov = _movieRep.Update(entMovie);

            if (!resMov.IsSuccess)
            {
                return(InternalServerError(new System.Exception(resMov.Message)));
            }

            var returnValue = new MovieApiModel
            {
                id            = entMovie.MovieId,
                title         = entMovie.Title,
                yearOfRelease = entMovie.YearOfRelease,
                runningTime   = entMovie.RunningTime,
                genres        = entMovie.Genres,
                averageRating = Math.Round(average * 2, MidpointRounding.AwayFromZero) / 2
            };

            return(Ok(returnValue));
        }