public JsonResult GetNewsNavigationFilter([FromBody] NewsFilter filter) { if (ModelState.IsValid && filter != null) { var dateperiod = _configuration.GetSection("EditorialSettings:NewsDatePeriod").Value; var watchID = filter.WatchID; var countryID = filter.CountryID; var state = filter.State; var result = _context.NewsData .FromSql($"usp_GetNewsEntries_sel @watchID={watchID}, @dateperiod={dateperiod}, @countryID={countryID}, @state={state}, @articleID=0 ") .Select(pg => new NewsData { id = pg.id, fkItemID = pg.fkItemID, fkWatchID = pg.fkWatchID, fkCountryID = pg.fkCountryID, itemType = pg.itemType, State = pg.State, dateAdded = pg.dateAdded, WatchName = pg.WatchName, ArticleID = pg.ArticleID, ArticleTitle = pg.ArticleTitle, ArticleDescription = pg.ArticleDescription, ArticleURL = pg.ArticleURL, FeedID = pg.FeedID, FeedName = pg.FeedName, FeedURL = pg.FeedURL, LockedTo = pg.LockedTo }).ToList(); return(Json(result)); } return(Json("No Data")); }
public ActionResult Index(NewsFilter request) { request.SetDefaultPaging(); ViewBag.ParentCategories = GetParentCategoriesForFilter(); var model = GetCommand <GetNewsListCommand>().ExecuteCommand(request); return(View(model)); }
public static NewsFilterTable AsFilterTable(this NewsFilter filter) { return(new NewsFilterTable() { FilterTitle = filter.FilterTitle, //Input1 = filter.Inputs[0], //Input2 = filter.Inputs[1], //Input3 = filter.Inputs[2], IsFilterOn = filter.IsFilterOn }); }
public async Task <DataWithCount <IEnumerable <NewsPost> > > GetPaginatedPostListAsync( NewsFilter filter) { if (filter.IsActive != true) { VerifyManagementPermission(); } filter.SiteId = GetClaimId(ClaimType.SiteId); return(await _newsPostRepository.PageAsync(filter)); }
private async void SaveFilterAsync(NewsFilter filter) { this.RaiseCanExecuteChanged(); int i = await App.FilterDatabase.SaveItemAsync(filter.AsFilterTable()); App.FilterViewModel.NewsFilter.Add(filter); // await App.ViewModel.Favorites.AddAsync(await article.AsFavorite("Technology")); this.RaiseCanExecuteChanged(); }
public async Task <IActionResult> Index(string search, int?category, int page = 1) { var filter = new NewsFilter(page) { Search = search }; if (category.HasValue) { filter.CategoryIds = new List <int> { category.Value }; } var postList = await _newsService.GetPaginatedPostListAsync(filter); var paginateModel = new PaginateViewModel { ItemCount = postList.Count, CurrentPage = page, ItemsPerPage = filter.Take.Value }; if (paginateModel.PastMaxPage) { return(RedirectToRoute(new { page = paginateModel.LastPage ?? 1 })); } var viewModel = new PostListViewModel { Posts = postList.Data, PaginateModel = paginateModel, Search = search, CategoryId = category, CategoryList = await _newsService.GetAllCategoriesAsync() }; if (category.HasValue) { viewModel.Category = await _newsService.GetCategoryByIdAsync(category.Value); } return(View(viewModel)); }
public SearchableGridViewModel <NewsViewModel> Execute(NewsFilter request) { request.SetDefaultSortingOptions("Title"); var query = Repository .AsQueryable <Models.News>() .Select(t => new NewsViewModel { Id = t.Id, Version = t.Version, CategoryId = t.CategoryId, Title = t.Title, Title_en = t.Title_en, SortOrder = t.SortOrder, Image = t.Image != null && !t.Image.IsDeleted ? new ImageSelectorViewModel { ImageId = t.Image.Id, ImageUrl = fileUrlResolver.EnsureFullPathUrl(t.Image.PublicUrl), ThumbnailUrl = fileUrlResolver.EnsureFullPathUrl(t.Image.PublicThumbnailUrl), ImageTooltip = t.Image.Caption, FolderId = t.Image.Folder != null ? t.Image.Folder.Id : (Guid?)null } : null }); //search if (!string.IsNullOrWhiteSpace(request.SearchQuery)) { query = query.Where(t => t.Title.Contains(request.SearchQuery) || t.Title_en.Contains(request.SearchQuery)); } //filter if (request.CategoryId != null && request.CategoryId != Guid.Parse("99999999-9999-9999-9999-999999999999")) { query = query.Where(t => t.CategoryId == request.CategoryId); } //total count var count = query.ToRowCountFutureValue(); //sorting, paging query = query.AddSortingAndPaging(request); return(new SearchableGridViewModel <NewsViewModel>(query.ToList(), request, count.Value)); }
public async Task <DataWithCount <IEnumerable <NewsPost> > > PageAsync(NewsFilter filter) { var posts = DbSet .AsNoTracking() .Where(_ => _.Category.SiteId == filter.SiteId); if (filter.IsActive.HasValue) { posts = posts.Where(_ => _.PublishedAt.HasValue); } if (filter.CategoryIds?.Count > 0) { posts = posts.Where(_ => filter.CategoryIds.Contains(_.CategoryId)); } if (filter.DefaultCategory) { posts = posts.Where(_ => _.Category.IsDefault); } if (!string.IsNullOrWhiteSpace(filter.Search)) { posts = posts.Where(_ => _.Title.Contains(filter.Search)); } var count = await posts.CountAsync(); var data = await posts .OrderByDescending(_ => !_.PublishedAt.HasValue) .ThenByDescending(_ => _.PublishedAt) .ApplyPagination(filter) .ProjectTo <NewsPost>(_mapper.ConfigurationProvider) .ToListAsync(); return(new DataWithCount <IEnumerable <NewsPost> > { Data = data, Count = count }); }
public IActionResult Index(NewsFilter newsFilter = null) { try { var news = _newsRepository.getQueryable(); if (!string.IsNullOrWhiteSpace(newsFilter.title)) { news = news.Where(a => a.title.Contains(newsFilter.title)); } ViewBag.pagerInfo = _paginatedMetaService.GetMetaData(news.Count(), newsFilter.page, newsFilter.number_of_rows); news = news.Skip(newsFilter.number_of_rows * (newsFilter.page - 1)).Take(newsFilter.number_of_rows); var news1 = news.ToList(); var filesIndexVM = getViewModelFrom(news1); return(View(filesIndexVM)); } catch (Exception ex) { AlertHelper.setMessage(this, ex.Message, messageType.error); return(Redirect("index")); } }
/// <summary> /// Filtered results, right pane for the news feed page /// </summary> /// <param name="filter"></param> /// <param name="configuration"></param> /// <returns></returns> public object GetFilteredNewsNavigation(NewsFilter filter, IConfiguration configuration) { var dateperiod = configuration.GetSection("EditorialSettings:NewsDatePeriod").Value; var watchID = filter.WatchID; var countryID = filter.CountryID; var state = filter.State; var languageId = filter.LanguageID; var result = _context.NewsData .AsNoTracking() .FromSql("usp_GetNewsEntries_sel @watchID={0}, @dateperiod={1}, @countryID={2}, @state={3}, @articleID={4}, @languageID={5} " , watchID , dateperiod , countryID , state , 0 , languageId ) .Select(pg => new NewsData { Id = pg.Id, FkItemID = pg.FkItemID, FkWatchID = pg.FkWatchID, FkCountryID = pg.FkCountryID, ItemType = pg.ItemType, State = pg.State, DateAdded = pg.DateAdded, WatchName = pg.WatchName, ArticleID = pg.ArticleID, ArticleTitle = pg.ArticleTitle, ArticleDescription = pg.ArticleDescription, ArticleURL = pg.ArticleURL, FeedID = pg.FeedID, FeedName = pg.FeedName, FeedURL = pg.FeedURL, LockedTo = pg.LockedTo }).ToList(); return(result); }
public CreateFilterPage() { currentFilter = new NewsFilter(); this.BindingContext = currentFilter; InitializeComponent(); }
public List <NewsModel> Get([FromQuery] NewsFilter filter) { var newsList = _service.GetNews(filter); return(newsList); }
public List <NewsAbstract> Get([FromQuery] NewsFilter filterBase) { var newsList = _service.GetAbstracts(filterBase); return(newsList); }
public IActionResult GetNewsNavigationFilter([FromBody] NewsFilter filter) { object data = _repository.GetFilteredNewsNavigation(filter, _configuration); return(Helper.CheckResult(data)); }
public async Task <IActionResult> Index(int?category, int page = 1) { if (!AuthUser.Identity.IsAuthenticated) { return(RedirectToSignIn()); } if (!UserHasPermission(Permission.AccessMissionControl)) { // not authorized for Mission Control, redirect to authorization code return(RedirectToAction(nameof(AuthorizationCode))); } // change user to default language if (Culture.DefaultName != _userContextProvider.GetCurrentCulture().Name) { AlertInfo = $"Language changed to <strong>{Culture.DefaultCulture.DisplayName}</strong> for <strong>Mission Control</strong> <span class=\"fas fa-rocket\"></span>."; return(RedirectToAction(nameof(Index), new { culture = Culture.DefaultName })); } Site site = await GetCurrentSiteAsync(); var viewModel = new AtAGlanceViewModel { AtAGlanceReport = await GetAtAGlanceAsync(), ShowPosts = await _newsService.AnyPublishedPostsAsync() }; if (viewModel.ShowPosts) { var filter = new NewsFilter(page, PostsPerPage) { IsActive = true }; if (category.HasValue) { filter.CategoryIds = new List <int> { category.Value }; } else { filter.DefaultCategory = true; } var postList = await _newsService.GetPaginatedPostListAsync(filter); var paginateModel = new PaginateViewModel { ItemCount = postList.Count, CurrentPage = page, ItemsPerPage = filter.Take.Value }; if (paginateModel.PastMaxPage) { return(RedirectToRoute( new { page = paginateModel.LastPage ?? 1 })); } foreach (var post in postList.Data) { post.Content = CommonMark.CommonMarkConverter.Convert(post.Content); post.CreatedByName = await _userService.GetUsersNameByIdAsync(post.CreatedBy); } var user = await _userService.GetDetails(GetId(ClaimType.UserId)); viewModel.IsNewsSubscribed = user.IsNewsSubscribed; viewModel.NewsPosts = postList.Data; viewModel.NewsCategories = await _newsService.GetAllCategoriesAsync(); foreach (var item in viewModel.NewsCategories) { item.IsNew = _newsService.WithinTimeFrame(item.LastPostDate, 7); } viewModel.PaginateModel = paginateModel; viewModel.SiteAdministratorEmail = site.FromEmailAddress; } PageTitle = $"Mission Control: {site.Name}"; return(View(viewModel)); }
/// <summary>Возвращает данные, необходимые для показа списка новостей для текущего пользователя.</summary> /// <param name="source_ids">перечисленные через запятую иcточники новостей, новости от которых необходимо получить</param> /// <param name="filters">перечисленные через запятую названия списков новостей, которые необходимо получить</param> /// <param name="start_time">время, в формате unixtime, начиная с которого следует получить новости для текущего пользователя</param> /// <param name="end_time">время, в формате unixtime, до которого следует получить новости для текущего пользователя</param> /// <param name="offset">указывает, начиная с какого элемента в данном промежутке времени необходимо получить новости</param> /// <param name="from">значение, полученное в поле new_from при последней загруке новостей</param> /// <param name="count">указывает, какое максимальное число новостей следует возвращать, но не более 100</param> /// <param name="max_photos">Максимальное количество фотографий, информацию о которых необходимо вернуть</param> /// <returns>Ответ сервера в XML или JSON формате.</returns> public VKResponseBase Get(IdList source_ids = null, NewsFilter? filters = null, DateTime? start_time = null, DateTime? end_time = null, System.Int32? offset = null, string from = null, System.Int32? count = null, System.Int32? max_photos = null) { return get(source_ids, filters, start_time, end_time, offset, from, count, max_photos); }
/// <summary>Возвращает данные, необходимые для показа списка новостей для текущего пользователя.</summary> /// <param name="source_ids">перечисленные через запятую иcточники новостей, новости от которых необходимо получить</param> /// <param name="filters">перечисленные через запятую названия списков новостей, которые необходимо получить</param> /// <param name="start_time">время, в формате unixtime, начиная с которого следует получить новости для текущего пользователя</param> /// <param name="end_time">время, в формате unixtime, до которого следует получить новости для текущего пользователя</param> /// <param name="offset">указывает, начиная с какого элемента в данном промежутке времени необходимо получить новости</param> /// <param name="from">значение, полученное в поле new_from при последней загруке новостей</param> /// <param name="count">указывает, какое максимальное число новостей следует возвращать, но не более 100</param> /// <param name="max_photos">Максимальное количество фотографий, информацию о которых необходимо вернуть</param> /// <returns>Ответ сервера в XML или JSON формате.</returns> private VKResponseBase get(IdList source_ids, NewsFilter? filters, DateTime? start_time, DateTime? end_time, System.Int32? offset, string from, System.Int32? count, System.Int32? max_photos) { manager.AddValueByName("@source_ids", source_ids); manager.AddValueByName("@filters", filters); manager.AddValueByName("@start_time", start_time); manager.AddValueByName("@end_time", end_time); manager.AddValueByName("@offset", offset); manager.AddValueByName("@from", from); manager.AddValueByName("@count", count); manager.AddValueByName("@max_photos", max_photos); return new VKResponseBase(GetResponse("get"), IsXMLResponse); }