public IEnumerable <MovieLocation> GetMovieLocationsAsync(MovieLocationsDto movieLocationsDto)
        {
            List <MovieLocation> resultCollections = null;

            try
            {
                resultCollections = new List <MovieLocation>();
                List <GridHelper.Filter> filters    = new List <GridHelper.Filter>();
                GridHelper.Filter        gridHelper = new GridHelper.Filter();
                gridHelper.PropertyName = movieLocationsDto.SearchBy;
                gridHelper.Value        = movieLocationsDto.SearchByValue;
                if (!string.IsNullOrEmpty(movieLocationsDto.SearchByFilter))
                {
                    gridHelper.Operator = GridHelper.Operator.Contains;   //set it only for Single Contain to work
                }
                filters.Add(gridHelper);
                var filterExpression = ExpressionBuilder.GetExpression <MovieLocation>(filters);
                resultCollections = _db.ListsMovieLocations.Where(filterExpression).ToList();
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine("Error occuered:" + ex.Message.ToString());
            }
            return(resultCollections);
        }
        public IActionResult GetMovieLocations(MovieLocationsDto movieLocationRequest)
        {
            SeedAndCacheDataWhenFirstRequestComes();  // need to go infracture Layer
                                                      //seed should be place in separate class,insert data whne invoke soultion
            //Refeactoring After UI Changes
            IEnumerable <MovieLocation> results = null;

            if (ModelState.IsValid)
            {
                results = _movieLocationsQueries.GetMovieLocationsAsync(movieLocationRequest);
            }
            else
            {
                return(BadRequest(ModelState));
            }
            return(results == null ? (IActionResult)NotFound() : Ok(results));

            #region  Moved code to Application Layer  as per refactorization

            // List<MovieLocation> resultCollections = null;
            //resultCollections = new List<MovieLocation>();
            //List<GridHelper.Filter> filters = new List<GridHelper.Filter>();
            //GridHelper.Filter gridHelper = new GridHelper.Filter();
            //gridHelper.PropertyName = movieLocationRequest.SearchBy;
            //gridHelper.Value = movieLocationRequest.SearchByValue;
            //if (!string.IsNullOrEmpty(movieLocationRequest.SearchByFilter))
            //    gridHelper.Operator = GridHelper.Operator.Contains;   //set it only for Single Contain to work
            //filters.Add(gridHelper);
            //var filterExpression = ExpressionBuilder.GetExpression<MovieLocation>(filters);
            //resultCollections = _context.ListsMovieLocations.Where(filterExpression).ToList();
            //return Ok(resultCollections);

            #endregion
        }
 private IQueryable <MovieLocation> GetQueryableLibraries(MovieLocationsDto movieLocationsDto)
 {
     return((from lst in _db.ListsMovieLocations
             select new MovieLocation
     {
         Id = lst.Id,
         Title = lst.Title,
         ReleaseYear = lst.ReleaseYear,
         Locations = lst.Locations,
         Director = lst.Director
     })
            .OrderBy(x => x.ReleaseYear));
 }