コード例 #1
0
ファイル: BlogController.cs プロジェクト: HyggeMail/DevHygge
        public ActionResult AddBlog()
        {
            var model = new AddBlogModel();

            ViewBag.SelectedTab = SelectedAdminTab.Blog;
            return(View(model));
        }
コード例 #2
0
        public async Task AddBlog_Return_BadRequest_NameSlug_Already_Taken()
        {
            // Arrange
            HttpResponseMessage expectedRespone = new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest);
            RubiconContext      db = _server.Services.GetService(typeof(RubiconContext)) as RubiconContext;
            Blog blog = db.Blogs.Take(1).First(); //get a random blog that is allready taken


            AddBlogModel addBlogModel = new AddBlogModel()
            {
                Body        = "ttttt",
                Description = "tttt",
                TagList     = new List <string>(),
                Title       = blog.Title
            };

            var Client  = new RestClient("http://localhost:57595/");
            var Request = new RestRequest("api/Posts").AddJsonBody(addBlogModel);


            //Act
            var response = await Client.ExecutePostAsync(Request);


            //Arrange
            Assert.Equal(expectedRespone.StatusCode, response.StatusCode);
        }
コード例 #3
0
        public async Task AddBlog_Return_Ok_With_Added_Blog()
        {
            // Arrange
            HttpResponseMessage expectedRespone = new HttpResponseMessage(System.Net.HttpStatusCode.OK);
            RubiconContext      db   = _server.Services.GetService(typeof(RubiconContext)) as RubiconContext;
            Tag            tag       = db.Tags.Take(1).First();
            DataGeneration generator = new DataGeneration();


            AddBlogModel addBlogModel = new AddBlogModel()
            {
                Body        = "ttttt",
                Description = "tttt",
                TagList     = new List <string>(),
                Title       = generator.GenerateStringRandomLenght(10, 30)
            };

            addBlogModel.TagList.Add(tag.Name);

            var Client  = new RestClient("http://localhost:57595/");
            var Request = new RestRequest("api/Posts").AddJsonBody(addBlogModel);


            //Act
            var response = await Client.ExecutePostAsync(Request);

            BlogModel blogsModel = new JsonDeserializer().Deserialize <BlogModel>(response);


            //Arrange
            Assert.Equal(expectedRespone.StatusCode, response.StatusCode);
            Assert.True(blogsModel != null);
        }
コード例 #4
0
ファイル: BlogController.cs プロジェクト: HyggeMail/DevHygge
        public ActionResult DisplayBlog(int blogID)
        {
            ViewBag.SelectedTab = SelectedAdminTab.Blog;
            var blogModel = new AddBlogModel();

            blogModel = _blogManager.GetBlogById(blogID);
            return(View(blogModel));
        }
コード例 #5
0
        private static void AddNewBlog()
        {
            Name  nameGenerator = new Name();
            Lorem textGenerator = new Lorem();

            string blogName        = textGenerator.Sentence();
            string blogDescription = textGenerator.Sentences(3);

            AddBlogModel addBlogModel = new AddBlogModel(blogName, blogDescription);

            var c = factory.CreateBlogController();

            c.AddBlogToUser(UserToSeed, addBlogModel);
        }
コード例 #6
0
        public async Task <BlogModel> AddBlog(AddBlogModel model)
        {
            Blog blog = mapper.Map <Blog>(model);

            blog.Slug = Slugefier.GetFriendlyTitle(model.Title);
            List <string> tagNames = model.TagList;

            //Make sure that the title isn't taken already
            var IsTaken = await db.Blogs.AsNoTracking().SingleOrDefaultAsync(x => x.Slug == blog.Slug);

            if (IsTaken != null)
            {
                return(null);
            }


            await db.Blogs.AddAsync(blog);

            await db.SaveChangesAsync();

            List <BlogTag> ValidBlogTags = new List <BlogTag>();
            List <Tag>     Tags          = await db.Tags.AsNoTracking().ToListAsync();

            foreach (var tag in tagNames)
            {
                //make sure each tag exists
                var exsists = Tags.FirstOrDefault(x => x.Name.ToLower().Trim() == tag.ToLower().Trim());

                //If it exists add it otherwise skip it
                if (exsists != null)
                {
                    ValidBlogTags.Add(new BlogTag()
                    {
                        TagId = exsists.Id, BlogSlug = blog.Slug
                    });
                }
            }

            await db.BlogTags.BulkInsertAsync(ValidBlogTags);

            await db.BulkSaveChangesAsync();


            //return the newly added blog with the updated navigation properties/tags
            Blog UpdatedBlog = await db.Blogs.AsNoTracking().Include(x => x.BlogTags).ThenInclude(x => x.Tag).FirstOrDefaultAsync(x => x.Slug == blog.Slug);

            return(mapper.Map <BlogModel>(UpdatedBlog));
        }
コード例 #7
0
        public async Task <IActionResult> AddBlog([FromBody] AddBlogModel model)
        {
            if (!TryValidateModel(model))
            {
                var errors = ModelState.Select(x => new { x.Key, x.Value }).ToArray();

                return(BadRequest(errors));
            }

            var result = await service.AddBlog(model);

            if (result == null)
            {
                return(BadRequest("Selected title already taken. Please change it to something else"));
            }

            return(Ok(result));
        }
コード例 #8
0
        public async Task AddBlog_Return_BadRequest_BadModel()
        {
            // Arrange
            HttpResponseMessage expectedRespone = new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest);

            AddBlogModel addBlogModel = new AddBlogModel()
            {
                Body        = "ttttt",
                Description = "tttt",
                TagList     = new List <string>(),
                Title       = null
            };

            var Client  = new RestClient("http://localhost:57595/");
            var Request = new RestRequest("api/Posts").AddJsonBody(addBlogModel);


            //Act
            var response = await Client.ExecutePostAsync(Request);


            //Arrange
            Assert.Equal(expectedRespone.StatusCode, response.StatusCode);
        }
コード例 #9
0
ファイル: BlogController.cs プロジェクト: HyggeMail/DevHygge
 public JsonResult UpdateBlogDetails(AddBlogModel model)
 {
     ViewBag.SelectedTab = SelectedAdminTab.Blog;
     return(Json(_blogManager.AddUpdateBlog(model), JsonRequestBehavior.AllowGet));
 }
コード例 #10
0
ファイル: BlogManager.cs プロジェクト: HyggeMail/DevHygge
        ActionOutput IBlogManager.AddUpdateBlog(AddBlogModel model)
        {
            try
            {
                if (model.ID > 0)
                {
                    var blog = Context.BlogDetails.Where(z => z.ID == model.ID && z.IsDeleted != true).FirstOrDefault();
                    if (blog != null)
                    {
                        blog.Title = model.Title;
                        if (model.Image == null)
                        {
                            blog.Image = model.ImageName;
                        }
                        else
                        {
                            blog.Image = Utilities.SaveImage(model.Image, AppDefaults.BlogPath, AppDefaults.BlogThumbPath);
                        }
                        blog.Description = model.Description;
                        blog.UpdatedOn   = DateTime.UtcNow;
                        Context.SaveChanges();
                        return(new ActionOutput
                        {
                            Status = ActionStatus.Successfull,
                            Message = "Sucessfully Updated."
                        });
                    }
                    else
                    {
                        return(new ActionOutput
                        {
                            Status = ActionStatus.Error,
                            Message = "No blog found."
                        });
                    }
                }
                else
                {
                    if (model.Image == null)
                    {
                        return new ActionOutput
                               {
                                   Status  = ActionStatus.Error,
                                   Message = "Please add the Blog image."
                               }
                    }
                    ;

                    var newBlog = new BlogDetail();

                    newBlog.Title             = model.Title;
                    newBlog.Description       = model.Description;
                    newBlog.IsActive          = model.IsActive;
                    newBlog.AddedOn           = DateTime.UtcNow;
                    newBlog.UpdatedOn         = DateTime.UtcNow;
                    newBlog.Image             = Utilities.SaveImage(model.Image, AppDefaults.BlogPath, AppDefaults.BlogThumbPath);
                    newBlog.IsDeleted         = model.IsDeleted;
                    newBlog.IsFeaturedArticle = model.IsFeaturedArticle;
                    Context.BlogDetails.Add(newBlog);
                    Context.SaveChanges();
                    return(new ActionOutput
                    {
                        Status = ActionStatus.Successfull,
                        Message = "Sucessfully Added."
                    });
                }
            }
            catch (Exception ex)
            {
                return(new ActionOutput
                {
                    Status = ActionStatus.Error,
                    Message = "Internal Server error."
                });
            }
        }