示例#1
0
        public PaginatedList <MoviesType> GetAllPaginatedBySearchFilter(MoviesTypeSearchFilter searchFilter)
        {
            PaginatedList <MoviesType> resultList = new PaginatedList <MoviesType>(new List <MoviesType>(), 0, searchFilter.CurrentPage, searchFilter.PageSize, searchFilter.SortOn, searchFilter.SortDirection);

            using (AppDbContext dbContext = new AppDbContext())
            {
                var query = dbContext.MoviesType.Where(mt => mt.IsDeleted == false).AsNoTracking();

                // filtering
                if (!string.IsNullOrEmpty(searchFilter.Filter_Name))
                {
                    query = query.Where(r => r.Name.Contains(searchFilter.Filter_Name));
                }

                // asnotracking
                query = query.AsNoTracking();

                //total count
                var totalCount = query.Count();

                //sorting
                if (!string.IsNullOrEmpty(searchFilter.SortOn))
                {
                    // System.Linq.Dynamic nuget paketi ve namespace eklenmelidir, dynamic order by yapmak icindir
                    query = query.OrderBy(searchFilter.SortOn + " " + searchFilter.SortDirection.ToUpper());
                }
                else
                {
                    // deefault sıralama vermek gerekiyor yoksa skip metodu hata veriyor ef 6'da
                    // https://stackoverflow.com/questions/3437178/the-method-skip-is-only-supported-for-sorted-input-in-linq-to-entities
                    query = query.OrderBy(r => r.Id);
                }

                //paging
                query = query.Skip((searchFilter.CurrentPage - 1) * searchFilter.PageSize).Take(searchFilter.PageSize);

                resultList = new PaginatedList <MoviesType>(
                    query.ToList(),
                    totalCount,
                    searchFilter.CurrentPage,
                    searchFilter.PageSize,
                    searchFilter.SortOn,
                    searchFilter.SortDirection
                    );
            }
            return(resultList);
        }
示例#2
0
        public ActionResult List(ListViewModel model)
        {
            if (model.Filter == null)
            {
                model.Filter = new ListFilterViewModel();
            }

            if (!model.CurrentPage.HasValue)
            {
                model.CurrentPage = 1;
            }

            if (!model.PageSize.HasValue)
            {
                model.PageSize = 10;
            }

            MoviesTypeSearchFilter searchFilter = new MoviesTypeSearchFilter();

            searchFilter.CurrentPage   = model.CurrentPage.HasValue ? model.CurrentPage.Value : 1;
            searchFilter.PageSize      = model.PageSize.HasValue ? model.PageSize.Value : 10;
            searchFilter.SortOn        = model.SortOn;
            searchFilter.SortDirection = model.SortDirection;
            searchFilter.Filter_Name   = model.Filter.Filter_Name;

            var apiResponseModel = _moviesTypeService.GetAllPaginatedWithDetailBySearchFilter(SessionHelper.CurrentUser.UserToken, searchFilter);

            if (apiResponseModel.ResultStatusCode == ResultStatusCodeStatic.Success)
            {
                model.DataList = apiResponseModel.Data;
            }
            else
            {
                ViewBag.ErrorMessage = apiResponseModel.ResultStatusMessage;
                model.DataList       = new Business.Models.PaginatedList <MoviesType>(new List <MoviesType>(), 0, model.CurrentPage.Value, model.PageSize.Value, model.SortOn, model.SortDirection);
                return(View(model));
            }

            // select lists
            return(View(model));
        }
示例#3
0
        public ApiResponseModel <PaginatedList <MoviesType> > GetAllPaginatedWithDetailBySearchFilter(string userToken, MoviesTypeSearchFilter searchFilter)
        {
            ApiResponseModel <PaginatedList <MoviesType> > result = new ApiResponseModel <PaginatedList <MoviesType> >()
            {
                Data = new PaginatedList <MoviesType>(new List <MoviesType>(), 0, searchFilter.CurrentPage, searchFilter.PageSize, searchFilter.SortOn, searchFilter.SortDirection)
            };

            using (HttpClient httpClient = new HttpClient())
            {
                httpClient.BaseAddress = new Uri(ConfigHelper.ApiUrl);
                httpClient.DefaultRequestHeaders.Accept.Clear();
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", userToken);
                var portalApiRequestModel = new GetAllPaginatedRequestModel();
                portalApiRequestModel.UserToken     = userToken;
                portalApiRequestModel.CurrentPage   = searchFilter.CurrentPage;
                portalApiRequestModel.PageSize      = searchFilter.PageSize;
                portalApiRequestModel.SortOn        = searchFilter.SortOn;
                portalApiRequestModel.SortDirection = searchFilter.SortDirection;
                ListFilterRequestModel listFilter = new ListFilterRequestModel();
                listFilter.Filter_Name       = searchFilter.Filter_Name;
                portalApiRequestModel.Filter = listFilter;
                HttpResponseMessage response = httpClient.PostAsJsonAsync(string.Format(" MoviesType/GetAllPaginatedWithDetail"), portalApiRequestModel).Result;
                result = response.Content.ReadAsAsync <ApiResponseModel <PaginatedList <MoviesType> > >().Result;
            }
            return(result);
        }