public async Task CreateFileSitemapAsync()
        {
            TextWriter writer = new StreamWriter(Server.MapPath("~/sitemap.xml"));

            try
            {
                List <url> listUrl = new List <url>();
                //заполняем статическимим ссылками

                listUrl.Add(new url
                {
                    changefreq = "daily",
                    loc        = "http://baeroff.com",
                    priority   = 1.0
                });

                listUrl.Add(new url
                {
                    changefreq = "monthly",
                    lastmod    = Helpers.Services.ConvertDateToW3CTime(new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1)),
                    loc        = "http://baeroff.com/home/register",
                    priority   = 1.0
                });

                //заполняем статьями
                using (EFArticleContext articleContext = new EFArticleContext())
                {
                    List <url> listArticle = await(from article in articleContext.Articles.AsQueryable()
                                                   where article.IsVisible == true
                                                   select new url
                    {
                        changefreq = "monthly",
                        lastmod    = article.DatePublish.ToString(),
                        loc        = "http://baeroff.com/articles/article/" + article.Link,
                        priority   = 0.8
                    }).ToListAsync();
                    foreach (var la in listArticle)
                    {
                        la.lastmod = Helpers.Services.ConvertDateToW3CTime(DateTime.Parse(la.lastmod));
                    }
                    listUrl.AddRange(listArticle);
                }

                urlset data = new urlset();
                data.urls = listUrl;

                XmlSerializer serializer = new XmlSerializer(typeof(urlset));
                serializer.Serialize(writer, data);
            }
            finally
            {
                writer.Close();
            }
        }
        public async Task <ActionResult> DeleteArticle(Guid ArticleId, int page = 1)
        {
            if (ModelState.IsValid && Request.IsAjaxRequest())
            {
                using (EFArticleContext articleContext = new EFArticleContext())
                {
                    await articleContext.DeleteArticleAsync(ArticleId);

                    //обновляем sitemap
                    await CreateFileSitemapAsync();
                }
            }
            return(PartialView("_ListArticle", GetListArticlesModel(page).Articles));
        }
        public async Task <ActionResult> EditArticle(Article article)
        {
            Guid id = Guid.Empty;

            if (ModelState.IsValid)
            {
                using (EFArticleContext articleContext = new EFArticleContext())
                {
                    article.Link = Regex.Replace(Regex.Replace(Helpers.Texts.Translit(article.Title).ToLower(), @"[^\d\w]", "-").Trim('-'), @"-+", "-");
                    id           = await articleContext.SaveArticleAsync(article);

                    //обновляем sitemap
                    await CreateFileSitemapAsync();
                }
                return(RedirectToAction("EditArticle/" + id.ToString()));
            }
            return(RedirectToAction("EditArticle/" + id.ToString()));
        }
 public ActionResult AboutCompanyArticles(int page = 1)
 {
     using (EFArticleContext articleContext = new EFArticleContext())
         using (EFCountViewContext countViewContext = new EFCountViewContext())
         {
             List <Article>         articles = articleContext.GetArticles(page, "aboutCompany");
             List <MainArticleView> model    = new List <MainArticleView>();
             foreach (Article a in articles)
             {
                 model.Add(new MainArticleView {
                     article = a, CountView = countViewContext.GetCountView(a.Id, Domain.Entities.ViewType.Article)
                 });
             }
             Session["ArticlesCount"]   = articleContext.GetArticlesCount("aboutCompany");
             Session["ArticleOnPage"]   = ConstantContext.GetConstant("Главная: количество публикаций") ?? "3";
             Session["ArticleMainPage"] = page;
             return(PartialView("_MainArticles", model));
         }
 }
        //[OutputCache(Duration = 600, VaryByParam = "none", Location = OutputCacheLocation.Downstream)]
        public async Task <ActionResult> Article(String link)
        {
            Article model = null;

            using (EFArticleContext articleContext = new EFArticleContext())
            {
                model = await articleContext.FindByLinkAsync(link);
            }
            if (model != null)
            {
                model.TextArticle = Server.HtmlDecode(model.TextArticle);
                model.TextMain    = Server.HtmlDecode(model.TextMain);

                //добавляем просмотр
                using (EFCountViewContext countViewContext = new EFCountViewContext())
                {
                    if (!User.IsInRole("Администратор") && !User.IsInRole("Редактор"))
                    {
                        await countViewContext.AppendViewAsync(model.Id, Domain.Entities.ViewType.Article);
                    }
                    ViewBag.CountView = await countViewContext.GetCountViewAsync(model.Id, Domain.Entities.ViewType.Article);
                }
                Session["Link"] = "/articles/article/" + model.Link;

                using (EFMenuSetContext menuSetContext = new EFMenuSetContext())
                {
                    Session["Group"] = await menuSetContext.GetGroupByLinkAsync("/articles/article/" + model.Link);
                }
            }
            else
            {
                return(HttpNotFound());
            }
            ViewBag.MyUrl = await ConstantContext.GetConstantAsync("Общие: URL сайта");

            ViewBag.MyDomain = await ConstantContext.GetConstantAsync("Общие: имя домена");

            ViewBag.RightPanel = await ConstantContext.GetConstantAsync("Публикации: показывать правую панель");

            return(View(model));
        }
 public ActionResult FixedArticle(string category)
 {
     using (EFArticleContext articleContext = new EFArticleContext())
         using (EFCountViewContext countViewContext = new EFCountViewContext())
         {
             Article a = articleContext.GetFixedArticle(category);
             if (a != null)
             {
                 MainArticleView model = new MainArticleView()
                 {
                     article   = a,
                     CountView = countViewContext.GetCountView(a.Id, Domain.Entities.ViewType.Article)
                 };
                 return(PartialView("_FixedArticle", model));
             }
             else
             {
                 return(PartialView("_FixedArticle", null));
             }
         }
 }
        public async Task <ActionResult> EditArticle(Guid Id)
        {
            Article model = null;

            using (EFArticleContext articleContext = new EFArticleContext())
            {
                model = await articleContext.FindByIdAsync(Id);
            }
            if (model != null)
            {
                model.TextArticle = Server.HtmlDecode(model.TextArticle);
                model.TextMain    = Server.HtmlDecode(model.TextMain);
            }
            else
            {
                model             = new Domain.Entities.Article();
                model.IsVisible   = true;
                model.DatePublish = DateTime.Now;
            }
            return(View(model));
        }
        private ArticlesView GetListArticlesModel(int page)
        {
            using (EFArticleContext articleContext = new EFArticleContext())
            {
                int tp = (Int32)Math.Ceiling((decimal)articleContext.Articles.Count() / PageSize);
                page = page <0 ? 1 : page> tp ? tp : page;

                ArticlesView model = new ArticlesView
                {
                    Articles = articleContext.Articles.Count() == 0 ? articleContext.Articles.ToList() :
                               articleContext.Articles.OrderByDescending(a => a.DatePublish).Skip((page - 1) * PageSize).Take(PageSize).ToList(),
                    PagingInfo = new PagingInfo
                    {
                        CurrentPage = page,
                        ItemPerPage = PageSize,
                        TotalItems  = articleContext.Articles.Count()
                    }
                };
                return(model);
            }
        }
Пример #9
0
        public static async Task SendNews(string[] _params)
        {
            using (EFArticleContext articleContext = new EFArticleContext())
                using (EFMailArticleContext mailArticleContext = new EFMailArticleContext())
                    using (EFSubscriberContext subscriberContext = new EFSubscriberContext())
                        using (EFConstantContext constantContext = new EFConstantContext())
                        {
                            List <Article> forMailing = await articleContext.ArticlesForMailingAsync();

                            if (forMailing.Count() == 0)
                            {
                                return;
                            }

                            string siteUrl = constantContext.GetConstant("Общие: URL сайта");

                            StringBuilder news    = new StringBuilder();
                            string        message = String.Empty;
                            foreach (Article a in forMailing)
                            {
                                news.Append("<a style=\"color: #FF5200 !important; border-bottom: 2px solid #FF5200; display: block; padding: 10px; font-size: 18px; background-color: #f7f7f7; text-decoration: none; margin-top: 15px;\" href=" + siteUrl + "/articles/article/" + a.Link + ">" + a.Title + "</a>");
                                news.Append(System.Net.WebUtility.HtmlDecode(a.TextMain));
                                news.Append("<span style=\"display:block;text-align:right;\"><a style=\"display: inline-block; padding: 5px 10px; background-color: #f3f3f3; text-decoration: none !important; font-size: 12px;\" href=" + siteUrl + "/articles/article/" + a.Link + ">Читать полностью</a></span>");
                            }
                            ;
                            news.Append("<hr/>");

                            //string path = "e:\\vs\\baerova\\WebUI\\Content\\Delivery\\LetterNews.html";

                            //string file = "~/Content/Delivery/LetterNews.html";
                            string file = constantContext.GetConstant("Рассылки: шаблон для новостей");
                            string path = HostingEnvironment.MapPath(file);
                            //string path = "e:\\VS\\Baerova\\WebUI\\Content\\Delivery\\LetterNews.html";

                            if (System.IO.File.Exists(path))
                            {
                                string[] lines = System.IO.File.ReadAllLines(path);
                                message = String.Join(" ", lines).Replace("{0}", news.ToString());
                            }

                            //отбираем получателей и отправляем письмо пачками по 20 получателей и что останется
                            if (subscriberContext.Subscribers.Count() == 0)
                            {
                                return;
                            }

                            //string messageTo = String.Empty;
                            //string messageCC = String.Empty;
                            int count            = 1;
                            int countSubscribers = subscriberContext.Subscribers.Count();
                            foreach (var s in subscriberContext.Subscribers.Where(s => s.IsActive == true))
                            {
                                //отправляем письмо каждому по-отдельности

                                string unsubscr = siteUrl + "/home/unsubscribe/" + s.Id.ToString();
                                //Команда tianDe™ Баеровых Татьяны и Олега
                                Services.SendMessage(_params, "Команда tianDe™ Баеровых Татьяны и Олега – Рассылка новостей от " + DateTime.Now.ToShortDateString(),
                                                     message.ToString().Replace("/Content", siteUrl + "/Content").Replace("{1}", unsubscr), s.EMail);

                                //if (count == 1 || count % 21 == 0)
                                //{
                                //    messageTo = s.EMail;
                                //}
                                //else
                                //{
                                //    messageCC += s.EMail + (count == countSubscribers || count % 20 == 0 ? "" : ",");
                                //}
                                //if (count % 20 == 0)
                                //{
                                //    Services.SendMessage(_params, "Baeroff.com – Рассылка новостей от " + DateTime.Now.ToShortDateString(),
                                //        message.ToString().Replace("/Content", siteUrl + "/Content"), messageTo, messageCC);
                                //    messageTo = messageCC = "";
                                //}
                                count++;
                            }
                            //if (count % 20 != 0)
                            //{
                            //    Services.SendMessage(_params, "Baeroff.com – Рассылка новостей от " + DateTime.Now.ToShortDateString(),
                            //        message.ToString().Replace("/Content", siteUrl + "/Content"), messageTo, messageCC);
                            //    messageTo = messageCC = "";
                            //}

                            //сохраняем в отправленных
                            foreach (Article a in forMailing)
                            {
                                mailArticleContext.SaveMailArticle(new MailArticle {
                                    Id = Guid.NewGuid(), ArticleId = a.Id, DateMailing = DateTime.Now, CountRecipient = count - 1
                                });
                            }
                        }
        }