예제 #1
0
        public void SeedBlogs()
        {
            var bob = new Blog {
                Title = "Bog's blog", Description = "This is bob's blog", AuthorId = "Bob", AuthorEmail = "bob@us", AuthorName = "Mr. Bob"
            };
            var sam = new Blog {
                Title = "Sam's blog", Description = "This is sam's blog", AuthorId = "Sam", AuthorEmail = "sam@us", AuthorName = "Mr. Sam"
            };

            using (var db = new BlogiFireContext())
            {
                if (db.Blogs.Where(b => b.AuthorId == "Bob").FirstOrDefault() == null)
                {
                    var b1 = db.Blogs.Add(bob);
                    db.SaveChanges();
                    SeedPosts(b1);
                }
                if (db.Blogs.Where(b => b.AuthorId == "Sam").FirstOrDefault() == null)
                {
                    var b2 = db.Blogs.Add(sam);
                    db.SaveChanges();
                    SeedPosts(b2);
                }
            }
        }
예제 #2
0
 public async Task <List <Post> > GetBlogPosts(string author)
 {
     using (var context = new BlogiFireContext())
     {
         var blogId = context.Blogs.Where(b => b.AuthorId == author).FirstOrDefault().Id;
         return(await context.Posts.Where(p => p.BlogId == blogId).ToListAsync());
     }
 }
예제 #3
0
 public async Task <List <Comment> > GetPostComments(string slug)
 {
     using (var context = new BlogiFireContext())
     {
         var postId = context.Posts.Where(p => p.Slug == slug).FirstOrDefault().Id;
         return(await context.Comments.Where(c => c.PostId == postId).ToListAsync());
     }
 }
예제 #4
0
        public async Task Add(Post item)
        {
            using (var context = new BlogiFireContext())
            {
                await context.Posts.AddAsync(item);

                await context.SaveChangesAsync();
            }
        }
예제 #5
0
        public async Task Delete(int id)
        {
            using (var context = new BlogiFireContext())
            {
                var item = await context.Posts.FirstOrDefaultAsync(i => i.Id == id);

                context.Posts.Remove(item);
                await context.SaveChangesAsync();
            }
        }
예제 #6
0
        public async Task Add(Comment item)
        {
            using (var context = new BlogiFireContext())
            {
                await context.Comments.AddAsync(item);

                // update comment count
                if (item.PostId > 0)
                {
                    var post = context.Posts.Where(p => p.Id == item.PostId).FirstOrDefault();
                    post.Comments++;
                    await context.Posts.UpdateAsync(post);
                }
                await context.SaveChangesAsync();
            }
        }
예제 #7
0
        public async Task Update(Post item)
        {
            using (var context = new BlogiFireContext())
            {
                var itemToUpdate = await context.Posts.FirstOrDefaultAsync(i => i.Id == item.Id);

                itemToUpdate.Saved     = DateTime.UtcNow;
                itemToUpdate.Title     = item.Title;
                itemToUpdate.Content   = item.Content;
                itemToUpdate.Tags      = item.Tags;
                itemToUpdate.Published = item.Published;

                await context.Posts.UpdateAsync(itemToUpdate);

                await context.SaveChangesAsync();
            }
        }
예제 #8
0
        public async Task Delete(int id)
        {
            using (var context = new BlogiFireContext())
            {
                var item = await context.Comments.FirstOrDefaultAsync(i => i.Id == id);

                context.Comments.Remove(item);

                // update comment count
                if (item.PostId > 0)
                {
                    var post = context.Posts.Where(p => p.Id == item.PostId).FirstOrDefault();
                    post.Comments--;
                    await context.Posts.UpdateAsync(post);
                }
                await context.SaveChangesAsync();
            }
        }
예제 #9
0
        public async Task Update(Comment item)
        {
            using (var context = new BlogiFireContext())
            {
                var itemToUpdate = await context.Comments.FirstOrDefaultAsync(i => i.Id == item.Id);

                itemToUpdate.Author     = item.Author;
                itemToUpdate.Content    = item.Content;
                itemToUpdate.Ip         = item.Ip;
                itemToUpdate.Website    = item.Website;
                itemToUpdate.UserAgent  = item.UserAgent;
                itemToUpdate.Published  = item.Published;
                itemToUpdate.IsApproved = item.IsApproved;

                await context.Comments.UpdateAsync(itemToUpdate);

                await context.SaveChangesAsync();
            }
        }
예제 #10
0
        public void SeedPosts(Blog blog)
        {
            using (var db = new BlogiFireContext())
            {
                for (int i = 1; i <= 25; i++)
                {
                    var post        = new Post();
                    var blogContent = GetContent();

                    post.BlogId     = blog.Id;
                    post.AuthorName = blog.AuthorName;
                    post.Title      = string.Format("Post title{0} from {1}", i, blog.AuthorId);
                    post.Slug       = string.Format("post-title{0}-{1}", i, blog.AuthorId);
                    post.Content    = string.Format("This is content of the post {0} written by {1}. {2}", i, blog.AuthorName, blogContent);
                    post.Published  = DateTime.UtcNow.AddHours((i - 26) * 5 * blog.Id);
                    post.Saved      = post.Published;

                    db.Posts.Add(post);
                    db.SaveChanges();

                    // add comments to every third post
                    if (i % 3 == 0)
                    {
                        var comments = GetComments();
                        foreach (var com in comments)
                        {
                            var c = new Comment
                            {
                                Author     = "visitor" + i.ToString(),
                                Email      = "visitor" + i.ToString() + "@us.com",
                                Content    = com,
                                PostId     = post.Id,
                                IsApproved = true,
                                Published  = DateTime.UtcNow.AddHours((i - 15) * 5 * blog.Id)
                            };
                            db.Comments.Add(c);
                            post.Comments++;
                        }
                        db.SaveChanges();
                    }
                }
            }
        }
예제 #11
0
 public PostRepository()
 {
     _db = new BlogiFireContext();
 }
예제 #12
0
 public CommentRepository()
 {
     _db = new BlogiFireContext();
 }