Exemplo n.º 1
0
        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"));
        }
Exemplo n.º 2
0
        public ActionResult Index(NewsFilter request)
        {
            request.SetDefaultPaging();
            ViewBag.ParentCategories = GetParentCategoriesForFilter();
            var model = GetCommand <GetNewsListCommand>().ExecuteCommand(request);

            return(View(model));
        }
Exemplo n.º 3
0
 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));
        }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
        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));
        }
Exemplo n.º 7
0
        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));
        }
Exemplo n.º 8
0
        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
            });
        }
Exemplo n.º 9
0
 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"));
     }
 }
Exemplo n.º 10
0
        /// <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);
        }
Exemplo n.º 11
0
 public CreateFilterPage()
 {
     currentFilter       = new NewsFilter();
     this.BindingContext = currentFilter;
     InitializeComponent();
 }
Exemplo n.º 12
0
        public List <NewsModel> Get([FromQuery] NewsFilter filter)
        {
            var newsList = _service.GetNews(filter);

            return(newsList);
        }
Exemplo n.º 13
0
        public List <NewsAbstract> Get([FromQuery] NewsFilter filterBase)
        {
            var newsList = _service.GetAbstracts(filterBase);

            return(newsList);
        }
Exemplo n.º 14
0
        public IActionResult GetNewsNavigationFilter([FromBody] NewsFilter filter)
        {
            object data = _repository.GetFilteredNewsNavigation(filter, _configuration);

            return(Helper.CheckResult(data));
        }
Exemplo n.º 15
0
        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);
 }