public ActionResult GetMovies(ReportMoviesViewModel reportModel)
 {
     GetModel(reportModel);
     return(PartialView("_Movies", reportModel));
 }
        public void GetModel(ReportMoviesViewModel reportModel)
        {
            var movieQuery         = db.Movies.AsQueryable();
            var directorQuery      = db.Directors.AsQueryable();
            var movieDirectorQuery = db.MovieDirectors.AsQueryable();
            var reviewQuery        = db.Reviews.AsQueryable();

            var query = from m in movieQuery
                        join md in movieDirectorQuery
                        on m.Id equals md.MovieId
                        into movie_MovieDirector
                        from subMovieMovieDirector in movie_MovieDirector.DefaultIfEmpty()
                        join d in directorQuery
                        on subMovieMovieDirector.DirectorId equals d.Id
                        into MovieDirector_Director
                        from subMovieDirector_Director in MovieDirector_Director.DefaultIfEmpty()
                        join r in reviewQuery
                        on subMovieMovieDirector.MovieId equals r.MovieId
                        into movie_review
                        from subMovieReview in movie_review.DefaultIfEmpty()

                        select new ReportMoviesModel()
            {
                MovieId               = m.Id,
                MovieName             = m.Name,
                _MovieBoxOfficeReturn = m.BoxOfficeReturn,
                MovieProductionYear   = m.ProductionYear,
                DirectorFullName      = subMovieDirector_Director.Name + " " + subMovieDirector_Director.Surname,
                _DirectorRetired      = subMovieDirector_Director.Retired,
                ReviewContent         = subMovieReview.Content,
                ReviewRating          = subMovieReview.Rating,
                ReviewReviewer        = subMovieReview.Reviewer
            };

            var recordCount = query.Count();

            reportModel.RecordsPerPageCount = Convert.ToInt32(ConfigurationManager.AppSettings["MovieReportRecordsPerPage"]);

            query = query.OrderBy(e => e.MovieId).Skip((reportModel.PageNumber - 1) * reportModel.RecordsPerPageCount)
                    .Take(reportModel.RecordsPerPageCount);


            var list = query.ToList().Select(e => new ReportMoviesModel()
            {
                MovieId              = e.MovieId,
                MovieName            = e.MovieName,
                MovieBoxOfficeReturn = e._MovieBoxOfficeReturn.HasValue ? e._MovieBoxOfficeReturn.Value.ToString("C", new CultureInfo("tr")) : "",
                MovieProductionYear  = e.MovieProductionYear,
                DirectorFullName     = e.DirectorFullName,
                DirectorRetired      = e._DirectorRetired.HasValue ? (e._DirectorRetired.Value ? "Yes" : "No") : "unknown",

                ReviewContent  = e.ReviewContent,
                ReviewRating   = e.ReviewRating,
                ReviewReviewer = e.ReviewReviewer
            }).ToList();


            reportModel.ReportMoviesModels = list;
            reportModel.RecordCount        = recordCount;
            int numberofPages =
                Convert.ToInt32(Math.Ceiling((decimal)reportModel.RecordCount / (decimal)reportModel.RecordsPerPageCount));
            List <SelectListItem> pageList = new List <SelectListItem>();
            SelectListItem        pageItem;

            for (int i = 1; i <= numberofPages; i++)
            {
                pageItem = new SelectListItem()
                {
                    Value = i.ToString(),
                    Text  = i.ToString()
                };
                pageList.Add(pageItem);
            }
            reportModel.PageNumbers = new SelectList(pageList, "Value", "Text", reportModel.PageNumber);
        }
 // GET: Reports
 public ActionResult Movies(ReportMoviesViewModel reportModel)
 {
     GetModel(reportModel);
     return(View(reportModel));
 }