// GET: MoviesReportAjax
        public ActionResult Index()
        {
            IQueryable <MovieReportLeftOuterJoinModel> leftOuterJoinQuery;
            List <MovieReportLeftOuterJoinModel>       leftOuterJoinList = null;

            leftOuterJoinQuery = movieReportService.GetLeftOuterJoinquery();

            leftOuterJoinList = leftOuterJoinQuery.ToList();

            List <SelectListItem> selects = new List <SelectListItem>();

            for (int year = DateTime.Now.Year + 1; year >= 1930; year--)
            {
                selects.Add(new SelectListItem()
                {
                    Value = year.ToString(),
                    Text  = year.ToString()
                });
            }

            MoviesReportAjaxIndexViewModel viewModel = new MoviesReportAjaxIndexViewModel()
            {
                LeftOuterJoinList             = leftOuterJoinList,
                ProductionYearMultiSelectList = new MultiSelectList(selects, "Value", "Text")
            };

            return(View(viewModel));
        }
        public ActionResult Index(MoviesReportAjaxIndexViewModel moviesReport)
        {
            IQueryable <MovieReportLeftOuterJoinModel> leftOuterJoinQuery;
            List <MovieReportLeftOuterJoinModel>       leftOuterJoinList = null;

            leftOuterJoinQuery = movieReportService.GetLeftOuterJoinquery();

            if (!string.IsNullOrWhiteSpace(moviesReport.MovieName))
            {
                leftOuterJoinQuery = leftOuterJoinQuery.Where(model => model.MovieName.ToUpper().Contains(moviesReport.MovieName.ToUpper().Trim()));
            }
            if (moviesReport.ProductionYears != null && moviesReport.ProductionYears.Count > 0)
            {
                leftOuterJoinQuery = leftOuterJoinQuery.Where(model => moviesReport.ProductionYears.Contains(model.MovieProductionYear));
            }
            double boxOfficeReturn1;
            double boxOfficeReturn2;

            if (!string.IsNullOrWhiteSpace(moviesReport.BoxOfficeReturn1))
            {
                if (double.TryParse(moviesReport.BoxOfficeReturn1.Trim().Replace(",", "."), NumberStyles.Any, new CultureInfo("en"), out boxOfficeReturn1))
                {
                    leftOuterJoinQuery = leftOuterJoinQuery.Where(model => model.MovieBoxOfficeReturnValue >= boxOfficeReturn1);
                }
            }
            if (!string.IsNullOrWhiteSpace(moviesReport.BoxOfficeReturn2))
            {
                if (double.TryParse(moviesReport.BoxOfficeReturn2.Trim().Replace(",", "."), NumberStyles.Any, new CultureInfo("en"), out boxOfficeReturn2))
                {
                    leftOuterJoinQuery = leftOuterJoinQuery.Where(model => model.MovieBoxOfficeReturnValue <= boxOfficeReturn2);
                }
            }
            DateTime reviewDate1;
            DateTime reviewDate2;

            if (!string.IsNullOrWhiteSpace(moviesReport.ReviewDate1))
            {
                reviewDate1        = DateTime.Parse(moviesReport.ReviewDate1, new CultureInfo("en"));
                leftOuterJoinQuery = leftOuterJoinQuery.Where(model => model.ReviewDateValue >= reviewDate1);
            }
            if (!string.IsNullOrWhiteSpace(moviesReport.ReviewDate2))
            {
                reviewDate2        = DateTime.Parse(moviesReport.ReviewDate2, new CultureInfo("en"));
                leftOuterJoinQuery = leftOuterJoinQuery.Where(model => model.ReviewDateValue <= reviewDate2);
            }

            leftOuterJoinList = leftOuterJoinQuery.ToList();

            moviesReport.LeftOuterJoinList = leftOuterJoinList;

            return(PartialView("_MoviesReportAjax", moviesReport));
        }