Beispiel #1
0
        public ForumInfoViewModel GetForumInfoViewModelById(int forumId)
        {
            var forumInfoViewModel = new ForumInfoViewModel();

            try
            {
                ForumsViewEntity forumViewEntity = _forumRepository.GetForumInfoById(forumId, _connectionFactory);
                forumInfoViewModel = Mapper.Map <ForumsViewEntity, ForumInfoViewModel>(forumViewEntity);
            }
            catch (Exception exception)
            {
                DemLogger.Current.Error(exception, $"{nameof(ForumReadService)}. Error in function {DemLogger.GetCallerInfo()}");
            }
            return(forumInfoViewModel);
        }
 public static MvcHtmlString TopicPagingForViewForum(this HtmlHelper helper, ForumInfoViewModel model,
                                                     string actionName, string controlName, object htmlDefaultBtnAttributes)
 {
     return(TopicPagingForViewForum(helper, model, actionName, controlName, htmlDefaultBtnAttributes, null));
 }
        public static MvcHtmlString TopicPagingForViewForum(this HtmlHelper helper, ForumInfoViewModel model,
                                                            string actionName, string controlName, object htmlDefaultBtnAttributes, object htmlSelectedBtnAttributes)
        {
            var mainDiv       = new TagBuilder("div");
            var stringBuilder = new StringBuilder();

            var spanInfo = new TagBuilder("span");

            spanInfo.SetInnerText($"Тем: {model.TopicsCount} • Страница {model.PageNumber} из {model.PagesCount} ");
            mainDiv.InnerHtml += spanInfo;

            if (model.PagesCount <= 10)
            {
                for (var i = 1; i <= model.PagesCount; i++)
                {
                    if (i == model.PageNumber)
                    {
                        var span = new TagBuilder("span");
                        span.MergeAttributes(new RouteValueDictionary(htmlSelectedBtnAttributes));
                        span.SetInnerText(i.ToString());
                        stringBuilder.Append(span);
                    }
                    else
                    {
                        var a = new TagBuilder("a");
                        a.MergeAttributes(new RouteValueDictionary(htmlDefaultBtnAttributes));
                        a.Attributes.Add("href", $"/{controlName}/{actionName}?forumId={model.ForumId}&page={i}");
                        a.InnerHtml = i.ToString();
                        stringBuilder.Append(a);
                    }
                }
            }
            else if (model.PageNumber >= 1 && model.PageNumber <= 6)
            {
                for (var i = 1; i <= 9; i++)
                {
                    if (i == model.PageNumber)
                    {
                        var span = new TagBuilder("span");
                        span.MergeAttributes(new RouteValueDictionary(htmlSelectedBtnAttributes));
                        span.SetInnerText(i.ToString());
                        stringBuilder.Append(span);
                    }
                    else
                    {
                        var a = new TagBuilder("a");
                        a.MergeAttributes(new RouteValueDictionary(htmlDefaultBtnAttributes));
                        a.Attributes.Add("href", $"/{controlName}/{actionName}?forumId={model.ForumId}&page={i}");
                        a.InnerHtml = i.ToString();
                        stringBuilder.Append(a);
                    }
                }

                var spanEllipsis = new TagBuilder("span");
                spanEllipsis.SetInnerText(" ... ");
                stringBuilder.Append(spanEllipsis);

                var aLast = new TagBuilder("a");
                aLast.MergeAttributes(new RouteValueDictionary(htmlDefaultBtnAttributes));
                aLast.Attributes.Add("href",
                                     $"/{controlName}/{actionName}?forumId={model.ForumId}&page={model.PagesCount}");
                aLast.InnerHtml += model.PagesCount.ToString();
                stringBuilder.Append(aLast);
            }
            else if (model.PageNumber >= 7 && model.PageNumber <= model.PagesCount - 6)
            {
                var aFirst = new TagBuilder("a");
                aFirst.MergeAttributes(new RouteValueDictionary(htmlDefaultBtnAttributes));
                aFirst.Attributes.Add("href", $"/{controlName}/{actionName}?forumId={model.ForumId}&page={1}");
                aFirst.InnerHtml += 1.ToString();
                stringBuilder.Append(aFirst);

                var spanEllipsis = new TagBuilder("span");
                spanEllipsis.SetInnerText(" ... ");
                stringBuilder.Append(spanEllipsis);

                for (var i = model.PageNumber - 3; i <= model.PageNumber + 3; i++)
                {
                    if (i == model.PageNumber)
                    {
                        var span = new TagBuilder("span");
                        span.MergeAttributes(new RouteValueDictionary(htmlSelectedBtnAttributes));
                        span.SetInnerText(i.ToString());
                        stringBuilder.Append(span);
                    }
                    else
                    {
                        var a = new TagBuilder("a");
                        a.MergeAttributes(new RouteValueDictionary(htmlDefaultBtnAttributes));
                        a.Attributes.Add("href", $"/{controlName}/{actionName}?forumId={model.ForumId}&page={i}");
                        a.InnerHtml = i.ToString();
                        stringBuilder.Append(a);
                    }
                }

                stringBuilder.Append(spanEllipsis);

                var aLast = new TagBuilder("a");
                aLast.MergeAttributes(new RouteValueDictionary(htmlDefaultBtnAttributes));
                aLast.Attributes.Add("href",
                                     $"/{controlName}/{actionName}?forumId={model.ForumId}&page={model.PagesCount}");
                aLast.InnerHtml += model.PagesCount.ToString();
                stringBuilder.Append(aLast);
            }
            else
            {
                var aFirst = new TagBuilder("a");
                aFirst.MergeAttributes(new RouteValueDictionary(htmlDefaultBtnAttributes));
                aFirst.Attributes.Add("href", $"/{controlName}/{actionName}?forumId={model.ForumId}&page={1}");
                aFirst.InnerHtml += 1.ToString();
                stringBuilder.Append(aFirst);

                var spanEllipsis = new TagBuilder("span");
                spanEllipsis.SetInnerText(" ... ");
                stringBuilder.Append(spanEllipsis);

                for (var i = model.PagesCount - 8; i <= model.PagesCount; i++)
                {
                    if (i == model.PageNumber)
                    {
                        var span = new TagBuilder("span");
                        span.MergeAttributes(new RouteValueDictionary(htmlSelectedBtnAttributes));
                        span.SetInnerText(i.ToString());
                        stringBuilder.Append(span);
                    }
                    else
                    {
                        var a = new TagBuilder("a");
                        a.MergeAttributes(new RouteValueDictionary(htmlDefaultBtnAttributes));
                        a.Attributes.Add("href", $"/{controlName}/{actionName}?forumId={model.ForumId}&page={i}");
                        a.InnerHtml = i.ToString();
                        stringBuilder.Append(a);
                    }
                }
            }
            mainDiv.InnerHtml += stringBuilder.ToString();
            return(MvcHtmlString.Create(mainDiv.ToString()));
        }
 public static MvcHtmlString TopicPagingForViewForum(this HtmlHelper helper, ForumInfoViewModel model,
                                                     string actionName, string controlName)
 {
     return(TopicPagingForViewForum(helper, model, actionName, controlName, null));
 }