Exemplo n.º 1
0
        /// <summary>
        /// List of post.
        /// </summary>
        /// <returns></returns>
        // GET: /<controller>/
        public async Task <IActionResult> Index(int skip, int take)
        {
            // Set page expiration...
            UpdateExpirationToNextDay();

            // Page metas...
            List <int> catList      = _SetViewBagAndGetCats();
            bool       excludeEvent = (AppContext?.Page?.GetPageFiltering() == PageFiltering.ExcludeEvent);
            // Post provider...
            PostProvider provider = new PostProvider(AppContext);

            ViewBag.pageMax = await provider?.Count(new Dictionary <string, object>
            {
                { QueryFilter.Categorie, catList },
                { QueryFilter.ExcludePostsEvent, excludeEvent },
            });

            ViewBag.Posts = await provider?.Get(new Dictionary <string, object>
            {
                { QueryFilter.Categorie, catList },
                { QueryFilter.ExcludePostsEvent, excludeEvent },
            }, skip, take);

            ViewBag.pageSkip = skip;
            ViewBag.pageTake = 20;

            //ViewData["Message"] = $"Posts: PageId={this.RouteData.Values[CRoute.PageIdTagName]}";
            return(View());
        }
Exemplo n.º 2
0
        /// <summary>
        /// Calendar.
        /// </summary>
        /// <returns></returns>
        // GET: /<controller>/
        public async Task <IActionResult> Calendar(int skip, int take)
        {
            // Set page expiration...
            UpdateExpirationToNextDay();

            DateTime dtFilter = DateTime.Now;
//#if DEBUG
//            dtFilter = new DateTime(2016, 01, 01);
//#endif
            // Post metas...
            List <int> catList = _SetViewBagAndGetCats();
            // Post provider...
            PostProvider provider = new PostProvider(AppContext);

            ViewBag.pageMax = await provider?.Count(new Dictionary <string, object>
            {
                { QueryFilter.Categorie, catList },
                { QueryFilter.EndDate, dtFilter }
            });

            ViewBag.Posts = await provider?.Get(new Dictionary <string, object>
            {
                { QueryFilter.Categorie, catList },
                { QueryFilter.EndDate, dtFilter }
            }, skip, take);

            ViewBag.pageSkip = skip;
            ViewBag.pageTake = 20;
            ViewBag.calendar = true;

            //ViewData["Message"] = $"Post: PageId={this.RouteData.Values[CRoute.PageIdTagName]}, PostId={this.RouteData.Values[CRoute.PostIdTagName]}";
            return(View("Index"));
        }
Exemplo n.º 3
0
        public async Task <JsonListPost> Get([FromBody] JsonListSettings settings)
        {
            try
            {
                // Initialisation...
                Dictionary <string, string> defaultFilters = settings?.DefaultFilters;
                if (settings == null || settings.Filters == null)
                {
                    settings = new JsonListSettings()
                    {
                        Count   = 0,
                        Skip    = 0,
                        Take    = 20,
                        Filters = new Dictionary <string, string>()
                        {
                            { QueryFilter.MineToo, "true" }
                        }
                    };
                    if ((AppContext.User?.HasRole(ClaimValueRole.Administrator) ?? false) == true ||
                        (AppContext.User?.HasRole(ClaimValueRole.Publicator) ?? false) == true)
                    {
                        settings.Filters.Add(QueryFilter.State, "-1");
                    }
                    else
                    {
                        settings.Filters.Add(QueryFilter.State, "1");
                    }
                    if (settings == null || settings.Filters == null)
                    {
                        _Log.LogCritical("Not enough memory to allocate a new JsonListSettings!");
                        return(null);
                    }
                }
                if (defaultFilters != null)
                {
                    foreach (KeyValuePair <string, string> kp in defaultFilters)
                    {
                        settings.Filters.Add(kp.Key, kp.Value);
                    }
                }
                // By default: Always add childs items of the categories...
                if (settings.Filters.ContainsKey(QueryFilter.ShowChildsCategoriesPosts) == false)
                {
                    settings.Filters.Add(QueryFilter.ShowChildsCategoriesPosts, "true");
                }
                // Get posts based on filter...
                PostProvider provider = new PostProvider(AppContext);
                Dictionary <string, object> filters = provider?.ConvertFilter(settings.Filters);
                IEnumerable <Post>          posts   = await provider?.Get(filters, settings.Skip, settings.Take);

                JsonListPost list = new JsonListPost(settings, posts?.Select(p => new JsonPost(AppContext, p)));
                if (settings.Skip == 0 && settings.Count == 0 &&
                    list != null)
                {
                    // Get posts total count...
                    list.Settings.Count = await provider?.Count(filters);
                }
                // Clean settings...
                if (defaultFilters != null)
                {
                    foreach (KeyValuePair <string, string> kp in defaultFilters)
                    {
                        settings.Filters.Remove(kp.Key);
                    }
                }
                return(list);
            }
            catch (Exception e)
            {
                AppContext?.Log?.LogError("Exception getting posts - HttpPost:/api/post/list: {0}", e.Message);
                return(null);
            }
        }