Example #1
0
        private Post[] PopulatePosts(BlogDbContext db, Models.Blog[] blogs, List <PostCategory> postCategories)
        {
            var posts   = new List <Post>();
            int counter = 0;

            foreach (var blog in blogs)
            {
                for (int i = 0; i < 20; i++)
                {
                    var categories = blog.PostCategories.ToList();
                    var title      = GetRandomSentence();
                    posts.Add(new Post
                    {
                        BlogId      = blog.Id,
                        Title       = title,
                        CategoryId  = categories[counter % categories.Count].Id,
                        Content     = GetRandomSentences(Rand.Next(10, 30)),
                        PublishDate = DateTime.Now.AddDays(Rand.Next(0, 3000) * -1),
                        UrlName     = ServerTools.GenerateUrlFriendlyString(title),
                        Published   = true
                    });
                    counter++;
                }
            }
            db.Posts.AddOrUpdate(posts.ToArray());
            db.SaveChanges();
            return(posts.ToArray());
        }
        public IHttpActionResult PostPostCategory(PostCategory postCategory)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            postCategory.BlogId  = CurrentBlogId.Value;
            postCategory.UrlSlug = ServerTools.GenerateUrlFriendlyString(postCategory.Name);
            Db.PostCategories.Add(postCategory);
            Db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = postCategory.Id }, postCategory));
        }
Example #3
0
        public IHttpActionResult PutPost(int id, CreatePost post)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != post.Id)
            {
                return(BadRequest());
            }

            var postDb = Db.Posts.FirstOrDefault(p => p.Id == post.Id && p.BlogId == CurrentBlogId);

            if (postDb == null)
            {
                return(BadRequest("Post not found"));
            }

            Mapper.Map(post, postDb);
            postDb.UrlName = ServerTools.GenerateUrlFriendlyString(postDb.Title);


            Db.Entry(postDb).State = EntityState.Modified;

            try
            {
                Db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PostExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Example #4
0
        public IHttpActionResult PostPost(CreatePost post)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            Models.Post postModel = Mapper.Map <Models.Post>(post);

            if (postModel.Published)
            {
                postModel.PublishDate = DateTime.Now;
            }

            postModel.BlogId  = (int)CurrentUser.CurrentBlogId;
            postModel.UrlName = ServerTools.GenerateUrlFriendlyString(postModel.Title);
            //todo create tags

            Db.Posts.Add(postModel);
            Db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = post.Id }, post));
        }
Example #5
0
        public bool CreateBlog(CreateBlogViewModel viewModel, string userId)
        {
            if (viewModel.UrlName.ToLower() != ServerTools.GenerateUrlFriendlyString(viewModel.UrlName))
            {
                _modelState.AddModelError("UrlName", "Url name may only consist of letters, numbers and dashes.");
            }

            if (!_modelState.IsValid ||
                (viewModel.MiniatureUrl != null && !ServerTools.Paths.TempFolderContains(viewModel.MiniatureUrl)))
            {
                return(false);
            }



            Models.Blog blog = Mapper.Map <Models.Blog>(viewModel);
            blog.UserId = userId;

            string blogFolderPath = CreateBlogFolder(blog.UrlName);

            if (viewModel.MiniatureUrl != null)
            {
                bool   invalidImage         = false;
                string tempImgPath          = Path.Combine(ServerTools.Paths.TempFolder, viewModel.MiniatureUrl);
                string imageDestinationPath = "";
                using (var img = Image.FromFile(tempImgPath))
                {
                    if (!ValidateImage(img))
                    {
                        invalidImage = true;
                    }
                    else
                    {
                        imageDestinationPath = ResizeAndSave(img, viewModel.MiniatureUrl, blogFolderPath);
                    }
                }
                File.Delete(tempImgPath);
                if (invalidImage)
                {
                    return(false);
                }
                blog.MiniatureUrl = ServerTools.RelativePath(imageDestinationPath);
            }
            else
            {
                blog.MiniatureUrl = "/MediaData/Default/miniature.jpg";
            }

            var layoutSettings = new LayoutSettings();

            /*_db.LayoutSettings.Add(layoutSettings);*/
            blog.LayoutSettings = layoutSettings;

            _db.Blogs.Add(blog);
            _db.SaveChanges();

            var postCategory = new PostCategory {
                Name = "General", UrlSlug = "general", BlogId = blog.Id
            };

            _db.PostCategories.Add(postCategory);

            var user = _db.Users.Find(userId);

            if (user.CurrentBlogId == null)
            {
                user.CurrentBlogId    = blog.Id;
                _db.Entry(user).State = EntityState.Modified;
            }
            _db.SaveChanges();

            return(true);
        }