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); } }
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 }); } } }