public async Task <QueryResultDto <MovieDto> > GetMovieWithGenreForDataTable(
            MovieDataTableSettings settings)
        {
            try
            {
                var query        = Context.Movies.AsQueryable();
                var totalRecords = await query.CountAsync();

                if (!string.IsNullOrEmpty(settings.Search))
                {
                    query        = SearchMovie(settings.Search, query);
                    totalRecords = await query.CountAsync();
                }

                var columnsMap = GetColumnsMap();


                if (settings.GenreId.HasValue)
                {
                    query        = query.Where(m => m.GenreId == settings.GenreId);
                    totalRecords = await query.CountAsync();
                }

                query = query
                        .Include(m => m.Genre)
                        .ApplyOrdering(settings, columnsMap);

                query = query.ApplyPaging(settings);

                var resultDto = (await query.ToListAsync()).Select(_mapper.Map <Movie, MovieDto>);


                return(new QueryResultDto <MovieDto>
                {
                    Items = resultDto.ToList(),
                    TotalItems = totalRecords
                });
            }
            catch (Exception ex)
            {
                _logger.LogError("DataBase error", ex);
                throw new BusinessLogicException("Could not fetch data!", ex);
            }
        }
 public async Task <QueryResultDto <MovieDto> > GetMoviesAsync([FromQuery] MovieDataTableSettings model)
 {
     return(await
            _movieService.GetMovieWithGenreForDataTable(model));
 }