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; } //select list model.SeanceSelectList = GetSeanceSelectList(SessionHelper.CurrentUser.UserToken); model.SalonSelectList = GetSalonSelectList(SessionHelper.CurrentUser.UserToken); MoviesSearchFilter searchFilter = new MoviesSearchFilter(); 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_SeanceId = model.Filter.Filter_SeanceId; searchFilter.Filter_SalonId = model.Filter.Filter_SalonId; searchFilter.Filter_Name = model.Filter.Filter_Name; var apiResponseModel = _moviesService.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 <MoviesWithDetail>(new List <MoviesWithDetail>(), 0, model.CurrentPage.Value, model.PageSize.Value, model.SortOn, model.SortDirection); return(View(model)); } return(View(model)); }
public PaginatedList <MoviesWithDetail> GetAllPaginatedWithDetailBySearchFilter(MoviesSearchFilter searchFilter) { PaginatedList <MoviesWithDetail> resultList = new PaginatedList <MoviesWithDetail>(new List <MoviesWithDetail>(), 0, searchFilter.CurrentPage, searchFilter.PageSize, searchFilter.SortOn, searchFilter.SortDirection); using (AppDbContext dbContext = new AppDbContext()) { var query = from m in dbContext.Movies from mt in dbContext.MoviesType.Where(mt => mt.Id == m.TypeId && mt.IsDeleted == false).DefaultIfEmpty() from s in dbContext.Seance.Where(s => s.Id == m.SeanceId && s.IsDeleted == false).DefaultIfEmpty() from sa in dbContext.Salon.Where(sa => sa.Id == m.SalonId && sa.IsDeleted == false).DefaultIfEmpty() where m.IsDeleted == false select new MoviesWithDetail() { Id = m.Id, SeanceId = m.SeanceId, SalonId = m.SalonId, Name = m.Name, TypeId = m.TypeId, Director = m.Director, Banner = m.Banner, IsDeleted = m.IsDeleted, Type_Name = mt == null ? String.Empty : mt.Name, Seance_Name = s == null ? String.Empty : s.Name, Salon_Name = sa == null ? String.Empty : sa.Name, }; // filtering if (searchFilter.Filter_SeanceId.HasValue) { query = query.Where(r => r.SeanceId == searchFilter.Filter_SeanceId.Value); } if (searchFilter.Filter_SalonId.HasValue) { query = query.Where(r => r.SalonId == searchFilter.Filter_SalonId.Value); } 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 <MoviesWithDetail>( query.ToList(), totalCount, searchFilter.CurrentPage, searchFilter.PageSize, searchFilter.SortOn, searchFilter.SortDirection ); } return(resultList); }
public ApiResponseModel <PaginatedList <MoviesWithDetail> > GetAllPaginatedWithDetailBySearchFilter(string userToken, MoviesSearchFilter searchFilter) { ApiResponseModel <PaginatedList <MoviesWithDetail> > result = new ApiResponseModel <PaginatedList <MoviesWithDetail> >() { Data = new PaginatedList <MoviesWithDetail>(new List <MoviesWithDetail>(), 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; listFilter.Filter_SeanceId = searchFilter.Filter_SeanceId; listFilter.Filter_SalonId = searchFilter.Filter_SalonId; portalApiRequestModel.Filter = listFilter; HttpResponseMessage response = httpClient.PostAsJsonAsync(string.Format("Movies/GetAllPaginatedWithDetail"), portalApiRequestModel).Result; result = response.Content.ReadAsAsync <ApiResponseModel <PaginatedList <MoviesWithDetail> > >().Result; } return(result); }