public List <UserMovieModel> GetMoviesInCatalog(string catalogId)
        {
            var catalog    = _MongoDBRepo.GetById <CatalogModel>("catalog", catalogId);
            var movieViews = new List <UserMovieModel>();

            foreach (var movieId in catalog.Movies)
            {
                var movie = _MongoDBRepo.GetById <MovieModel>("movies", movieId);
                if (movie == null)
                {
                    return(null);
                }
                var userdata = _MongoDBRepo.GetById <UserMoviedataModel>("usermoviedata", movieId);
                if (userdata != null)
                {
                    var movieview = new UserMovieModel(movie, userdata);
                    movieViews.Add(movieview);
                }
                else
                {
                    var movieview = new UserMovieModel(movie);
                    movieViews.Add(movieview);
                }
            }
            return(movieViews);
        }
Example #2
0
        // /api​/Catalog​/MovieIsInAnyUserCatalog GET
        public bool MovieIsInAnyUserCatalog(IEnumerable <CatalogModel> catalogs, UserMovieModel movie)
        {
            //var requestString = BaseUri + $"Catalog/MovieIsInAnyUserCatalog?userId={userId}&MovieId={MovieId}";

            //var client = _ClientFactory.CreateClient();
            //try
            //{
            //    var response = await client.GetStringAsync(requestString).ConfigureAwait(false);
            //    Debug.WriteLine(response);
            //    return bool.Parse(response);
            //}
            //catch (Exception e)
            //{
            //    Debug.WriteLine(e);
            //}
            if (catalogs != null)
            {
                foreach (var catalog in catalogs)
                {
                    if (MovieIsInCatalog(catalog, movie))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
        public void HandleMovieUpdatedFromModal(UserMovieModel movie)
        {
            var i = Movies.FindIndex(m => m.MovieData.ImdbId == movie.MovieData.ImdbId);

            Movies[i]     = movie;
            SelectedMovie = movie;
            StateHasChanged();
        }
Example #4
0
        // /api/Catalog/MovieIsInCatalog GET
        public bool MovieIsInCatalog(CatalogModel catalog, UserMovieModel movie)
        {
            //var requestString = BaseUri + $"Catalog/MovieIsInCatalog?catalogId={catalogId}&movieId={movieId}";

            //var client = _ClientFactory.CreateClient();
            //try
            //{
            //    var response = await client.GetStringAsync(requestString).ConfigureAwait(false);
            //    return bool.Parse(response);
            //}
            //catch (Exception e)
            //{
            //    Debug.WriteLine(e);
            //}
            var result = catalog.Movies.Contains(movie.MovieData.ImdbId);

            return(result);
        }
        public List <UserMovieModel> CreateMovieViews(int userId, FilterModel filters, int resultLimit, int offset)
        {
            var ratingFilter = Builders <MovieModel> .Filter.Gt(x => x.Rating, filters.MinRating);

            var runtimeFilter = Builders <MovieModel> .Filter.Lt(x => x.RunTime, filters.MaxRuntime);

            var filter = Builders <MovieModel> .Filter.And(ratingFilter, runtimeFilter);

            if (filters.Keyword != null && filters.Keyword.Length > 0)
            {
                var keyWordFilter = Builders <MovieModel> .Filter.Regex(x => x.Title, new BsonRegularExpression($".*{filters.Keyword}.*", "i"));

                filter = Builders <MovieModel> .Filter.And(filter, keyWordFilter);
            }

            if (filters.Genres.Count() > 0)
            {
                var genreFilter = Builders <MovieModel> .Filter.AnyIn(x => x.Genres, filters.Genres.Select(g => g.ToString()));

                filter = Builders <MovieModel> .Filter.And(filter, genreFilter);
            }
            var movies = _MongoDBRepo.Query("movies", filter);

            var movieViews = new List <UserMovieModel>();

            foreach (var movie in movies.Skip(offset).Take(resultLimit))
            {
                var userdata = _MongoDBRepo.GetById <UserMoviedataModel>("usermoviedata", movie.ImdbId);
                if (userdata != null)
                {
                    var movieview = new UserMovieModel(movie, userdata);
                    movieViews.Add(movieview);
                }
                else
                {
                    var movieview = new UserMovieModel(movie);
                    movieViews.Add(movieview);
                }
            }
            return(movieViews);
        }
        public void HandleMovieClicked(UserMovieModel movie)
        {
            var i = Movies.FindIndex(m => m.MovieData.ImdbId == movie.MovieData.ImdbId);

            SelectedMovie = Movies[i];
        }
        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));
        }
Example #8
0
 // TODO: /api/Movie/GetMovie
 public async Task <UserMovieModel> GetUpdatedMovie(int userId, UserMovieModel movie)
 {
     //TODO create an actual get movie endpoint
     return((await GetAndUpdateMovieList(userId, 1, movie.MovieData.Title)).First());
 }