Пример #1
0
 public BlogEntry GetSingleBlogEntryByLink(String blogGuid, String link, Boolean ignoreFooter, Boolean metaDataOnly)
 {
     using (DataContext db = new DataContext(ServiceConfiguration.ConnectionString))
     {
         //+ ensure blog entry exists
         BlogLINQ blogLinq;
         Validator.EnsureBlogExists(blogGuid, out blogLinq, db);
         //+
         BlogEntryLINQ blogEntryLinq = this.GetBlogEntryByUrlMapping(blogLinq.BlogId, link, db);
         if (blogEntryLinq != null)
         {
             return(new BlogEntry
             {
                 Title = blogEntryLinq.BlogEntryTitle,
                 Content = metaDataOnly ? String.Empty : CheckFooter(ignoreFooter, blogEntryLinq.BlogEntryText),
                 Guid = blogEntryLinq.BlogEntryGuid,
                 Status = blogEntryLinq.BlogEntryStatusId,
                 BlogEntryTypeGuid = blogEntryLinq.BlogEntryType.BlogEntryTypeGuid,
                 AllowCommentStatus = (AllowCommentStatus)blogEntryLinq.BlogEntryCommentAllowStatusId,
                 PostDateTime = blogEntryLinq.BlogEntryPostDateTime,
                 ModifyDateTime = blogEntryLinq.BlogEntryModifyDateTime,
                 MappingNameList = new List <String>(
                     blogEntryLinq.BlogEntryUrlMappings.Select(p => p.BlogEntryUrlMappingName)
                     ),
                 LabelList = new List <Label>(
                     blogEntryLinq.LabelBlogEntries.Select(p => new Label
                 {
                     Guid = p.Label.LabelGuid,
                     FriendlyTitle = p.Label.LabelFriendlyTitle,
                     Title = p.Label.LabelTitle
                 })
                     ),
                 AuthorList = new List <Author>(
                     blogEntryLinq.BlogEntryAuthors.Select(p => new Author
                 {
                     Name = p.Author.AuthorName,
                     Email = p.Author.AuthorEmail
                 })
                     ),
                 CommentList = metaDataOnly ? new List <Comment>() : new List <Comment>(
                     blogEntryLinq.Comments.Where(p => p.CommentModerated == false)
                     .Select(p => new Comment
                 {
                     Text = p.CommentText,
                     DateTime = p.CommentPostDate,
                     Website = p.CommentWebsite,
                     Guid = p.CommentGuid,
                     Email = p.CommentEmail,
                     Name = p.CommentAuthor
                 })
                     )
             });
         }
         //+
         return(null);
     }
 }
Пример #2
0
        internal static void EnsureBlogEntryExists(String blogEntryGuid, out BlogEntryLINQ blogEntryLinq, String message, MinimaServiceLINQDataContext db)
        {
            Func <BlogEntryLINQ, Boolean> blogEntryExists = x => x.BlogEntryGuid == blogEntryGuid;

            blogEntryLinq = (from p in db.BlogEntries where p.BlogEntryGuid == blogEntryGuid select p).FirstOrDefault();
            if (blogEntryLinq == null)
            {
                throw new ArgumentException(message);
            }
        }
Пример #3
0
        internal static void EnsureBlogExistsViaBlogEntryOrBlogGuid(String blogGuid, out BlogLINQ blogLinq, String message, MinimaServiceLINQDataContext db)
        {
            Func <BlogLINQ, Boolean> blogExists = x => x.BlogGuid == blogGuid;

            blogLinq = db.Blogs.SingleOrDefault(blogExists);
            if (blogLinq == null)
            {
                //+ perhaps this is actually a blog entry guid
                Func <BlogEntryLINQ, Boolean> blogEntryExists = x => x.BlogEntryGuid == blogGuid;
                BlogEntryLINQ blogEntryLinq = db.BlogEntries.SingleOrDefault(blogEntryExists);
                if (blogEntryLinq != null)
                {
                    blogLinq = blogEntryLinq.Blog;
                }
                else
                {
                    throw new ArgumentException(message);
                }
            }
        }
Пример #4
0
        public static String Build(BlogEntryLINQ blogEntryLinq, BlogLINQ blogLinq)
        {
            DateTime postDateTime = blogEntryLinq.BlogEntryPostDateTime;
            BlogEntryUrlMappingLINQ blogEntryUrlMappingLinq = blogEntryLinq.BlogEntryUrlMappings.FirstOrDefault();

            if (blogEntryUrlMappingLinq == null)
            {
                return(String.Empty);
            }
            String urlMapping  = blogEntryUrlMappingLinq.BlogEntryUrlMappingName;
            String baseBlogUrl = blogLinq.BlogPrimaryUrl;
            //+
            StringBuilder blogEntryPage = new StringBuilder();

            blogEntryPage.Append(postDateTime.Year);
            blogEntryPage.Append("/");
            String month = String.Empty;

            if (postDateTime.Month.ToString().Length < 2)
            {
                month = "0" + postDateTime.Month.ToString();
            }
            else
            {
                month = postDateTime.Month.ToString();
            }
            blogEntryPage.Append(String.Format("{0:00}/", postDateTime.Month));
            //+
            if (!String.IsNullOrEmpty(urlMapping))
            {
                blogEntryPage.Append(urlMapping);
            }
            else
            {
                throw new FormatException("BlogEntryPostURlMapping not set");
            }
            //+
            return(String.Format("{0}{1}", baseBlogUrl, blogEntryPage.ToString()));
        }
Пример #5
0
        public List <BlogEntry> GetNetBlogEntryList(String blogGuid, String label, String archive, String link, Int32 maxBlogEntryCount, Boolean ignoreFooter)
        {
            IQueryable <BlogEntryLINQ> blogEntryLinqList = null;

            using (DataContext db = new DataContext(ServiceConfiguration.ConnectionString))
            {
                //+ ensure blog exists
                BlogLINQ blogLinq;
                Validator.EnsureBlogExists(blogGuid, out blogLinq, db);
                //+
                Func <BlogEntryLINQ, BlogEntry> blogEntryTransformation = be => new BlogEntry
                {
                    Title              = be.BlogEntryTitle,
                    Content            = CheckFooter(ignoreFooter, be.BlogEntryText),
                    Guid               = be.BlogEntryGuid,
                    Status             = be.BlogEntryStatusId,
                    BlogEntryTypeGuid  = be.BlogEntryType.BlogEntryTypeGuid,
                    AllowCommentStatus = (AllowCommentStatus)be.BlogEntryCommentAllowStatusId,
                    PostDateTime       = be.BlogEntryPostDateTime,
                    ModifyDateTime     = be.BlogEntryModifyDateTime,
                    MappingNameList    = new List <String>(
                        be.BlogEntryUrlMappings.OrderBy(p => p.BlogEntryUrlMappingPrimary).Select(p => p.BlogEntryUrlMappingName)
                        ),
                    LabelList = new List <Label>(
                        be.LabelBlogEntries.Select(p => new Label
                    {
                        Guid          = p.Label.LabelGuid,
                        FriendlyTitle = p.Label.LabelFriendlyTitle,
                        Title         = p.Label.LabelTitle
                    })
                        ),
                    AuthorList = new List <Author>(
                        be.BlogEntryAuthors.Select(p => new Author
                    {
                        Name  = p.Author.AuthorName,
                        Email = p.Author.AuthorEmail
                    })
                        ),
                    CommentList = new List <Comment>(
                        be.Comments.Where(p => p.CommentModerated == false)
                        .Select(p => new Comment
                    {
                        Text     = p.CommentText,
                        DateTime = p.CommentPostDate,
                        Website  = p.CommentWebsite,
                        Guid     = p.CommentGuid,
                        Email    = p.CommentEmail,
                        Name     = p.CommentAuthor
                    })
                        )
                };
                //+ label?
                if (!String.IsNullOrEmpty(label))
                {
                    maxBlogEntryCount = 0;
                    blogEntryLinqList = (from be in db.BlogEntries
                                         join lbe in db.LabelBlogEntries on be.BlogEntryId equals lbe.BlogEntryId
                                         join l in db.Labels on lbe.LabelId equals l.LabelId
                                         where be.BlogId == blogLinq.BlogId && l.LabelNetTitle.ToLower() == label.ToLower() && (be.BlogEntryStatusId == 1 || be.BlogEntryStatusId == 4)
                                         select be);
                }
                //+ archive?
                if ((blogEntryLinqList == null || blogEntryLinqList.Count() == 0) && !String.IsNullOrEmpty(archive))
                {
                    maxBlogEntryCount = 0;
                    String[] parts = archive.Split("/".ToCharArray());
                    Int32    year  = Int32.Parse(parts[0]);
                    Int32    month = Int32.Parse(parts[1]);
                    blogEntryLinqList = db.BlogEntries.Where(p => p.BlogId == blogLinq.BlogId && p.BlogEntryPostDateTime.Month == month && p.BlogEntryPostDateTime.Year == year && p.BlogEntryStatusId == 1);
                }
                //+ link?
                if ((blogEntryLinqList == null || blogEntryLinqList.Count() == 0) && !String.IsNullOrEmpty(link))
                {
                    BlogEntryLINQ blogEntryLinq = this.GetBlogEntryByUrlMapping(blogLinq.BlogId, link, db);
                    if (blogEntryLinq != null)
                    {
                        return(new List <BlogEntry>(new BlogEntry[] { blogEntryTransformation.Invoke(blogEntryLinq) }));
                    }
                }
                //+ other?
                if (blogEntryLinqList == null || blogEntryLinqList.Count() == 0)
                {
                    blogEntryLinqList = db.BlogEntries.Where(p => p.BlogId == blogLinq.BlogId && p.BlogEntryStatusId == 1);
                }
                //+
                return(blogEntryLinqList
                       .Select(blogEntryTransformation)
                       .OrderByDescending(be => be.PostDateTime)
                       .Take(maxBlogEntryCount == 0 ? Int32.MaxValue : maxBlogEntryCount)
                       .ToList());
            }
        }
Пример #6
0
 public String PostBlogEntry(String blogGuid, List <Author> authorList, String title, String content, DateTime dateTime, String blogEntryTypeGuid, List <Label> labelList, Boolean publish)
 {
     using (DataContext db = new DataContext(ServiceConfiguration.ConnectionString))
     {
         //+ validate
         BlogLINQ blogLinq;
         Validator.EnsureBlogExists(blogGuid, out blogLinq, db);
         BlogEntryTypeLINQ blogEntryTypeLinq = null;
         if (!String.IsNullOrEmpty(blogEntryTypeGuid))
         {
             Validator.EnsureBlogEntryTypeExists(blogEntryTypeGuid, out blogEntryTypeLinq, db);
         }
         if (authorList == null)
         {
             authorList = new List <Author>();
         }
         List <AuthorLINQ> authorLinqList;
         Validator.EnsureEachAuthorExists(authorList, out authorLinqList, db);
         if (labelList == null)
         {
             labelList = new List <Label>();
         }
         List <LabelLINQ> labelLinqList;
         Validator.EnsureEachLabelExists(labelList, out labelLinqList, db);
         Validator.IsNotZero(authorLinqList.Count, "At least one author is required.");
         //+
         using (TransactionScope scope = new TransactionScope())
         {
             BlogEntryLINQ blogEntryLinq = new BlogEntryLINQ();
             blogEntryLinq.BlogId          = blogLinq.BlogId;
             blogEntryLinq.BlogEntryTitle  = title;
             blogEntryLinq.BlogEntryTypeId = 1;
             blogEntryLinq.BlogEntryText   = content;
             if (!String.IsNullOrEmpty(blogEntryTypeGuid))
             {
                 blogEntryLinq.BlogEntryTypeId = blogEntryTypeLinq.BlogEntryTypeId;
             }
             blogEntryLinq.BlogEntryStatus             = db.BlogEntryStatus.SingleOrDefault(p => p.BlogEntryStatusId == (publish ? 1 : 3));
             blogEntryLinq.BlogEntryCommentAllowStatus = db.BlogEntryCommentAllowStatus.SingleOrDefault(p => p.BlogEntryCommentAllowStatusId == 1);
             blogEntryLinq.BlogEntryGuid = Themelia.GuidCreator.GetNewGuid();
             if (dateTime.Year >= 1950)
             {
                 blogEntryLinq.BlogEntryPostDateTime = dateTime;
             }
             else
             {
                 blogEntryLinq.BlogEntryPostDateTime = DateTime.Now;
             }
             blogEntryLinq.BlogEntryModifyDateTime = DateTime.Now;
             //+
             db.BlogEntries.InsertOnSubmit(blogEntryLinq);
             db.SubmitChanges();
             //+
             BlogEntryUrlMappingLINQ blogEntryUrlMappingLinq = new BlogEntryUrlMappingLINQ();
             blogEntryUrlMappingLinq.BlogEntryId                = blogEntryLinq.BlogEntryId;
             blogEntryUrlMappingLinq.BlogEntryUrlMappingName    = BlogEntryHelper.BuildBlogEntryLink(blogEntryLinq.BlogEntryPostDateTime, CreateBlogEntryPostUrlMapping(title));
             blogEntryUrlMappingLinq.BlogEntryUrlMappingPrimary = true;
             db.BlogEntryUrlMappings.InsertOnSubmit(blogEntryUrlMappingLinq);
             //+
             db.SubmitChanges();
             //+ label
             foreach (LabelLINQ labelLinq in labelLinqList)
             {
                 LabelBlogEntryLINQ labelBlogEntryLinq = new LabelBlogEntryLINQ();
                 labelBlogEntryLinq.BlogEntryId = blogEntryLinq.BlogEntryId;
                 labelBlogEntryLinq.LabelId     = labelLinq.LabelId;
                 //+
                 db.LabelBlogEntries.InsertOnSubmit(labelBlogEntryLinq);
             }
             db.SubmitChanges();
             //+ author
             foreach (AuthorLINQ authorLinq in authorLinqList)
             {
                 BlogEntryAuthorLINQ blogEntryAuthorLinq = new BlogEntryAuthorLINQ();
                 blogEntryAuthorLinq.BlogEntryId = blogEntryLinq.BlogEntryId;
                 blogEntryAuthorLinq.AuthorId    = authorLinq.AuthorId;
                 //+
                 db.BlogEntryAuthors.InsertOnSubmit(blogEntryAuthorLinq);
             }
             db.SubmitChanges();
             //+
             scope.Complete();
             //+
             return(blogEntryLinq.BlogEntryGuid);
         }
     }
 }
Пример #7
0
 //- ~EnsureBlogEntryExists -//
 internal static void EnsureBlogEntryExists(String blogEntryGuid, out BlogEntryLINQ blogEntryLinq, MinimaServiceLINQDataContext db)
 {
     EnsureBlogEntryExists(blogEntryGuid, out blogEntryLinq, Message.InvalidBlogEntryGuid, db);
 }