Ejemplo n.º 1
0
        public IActionResult EditBlogPost(EditBlogPostViewModel model)
        {
            if (ModelState.IsValid)
            {
                var blogPost = _blogPostRepository.GetByTitle(model.OldTitle);

                blogPost.Title         = model.Title;
                blogPost.Body          = model.Body;
                blogPost.DatePublished = model.DatePublished;
                blogPost.IsPublished   = model.IsPublished;

                _blogPostRepository.ClearContentTags(blogPost.Id);

                foreach (var tagName in model.AvailableContentTags)
                {
                    var contentTag = _contentTagRepository.GetByName(tagName);

                    var blogtag = new BlogPostContentTag
                    {
                        BlogPost     = blogPost,
                        ContentTag   = contentTag,
                        BlogPostId   = blogPost.Id,
                        ContentTagId = contentTag.Id
                    };

                    blogPost.BlogPostsContentTags.Add(blogtag);
                }

                _blogPostRepository.Update(blogPost);
            }

            return(RedirectToAction("blogposts"));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> EditBlogPost(EditBlogPostViewModel mapBlogPost)
        {
            if (ModelState.IsValid)
            {
                BlogPost post = await _db.BlogPosts.
                                Where(x => x.Id == mapBlogPost.Id).
                                FirstOrDefaultAsync();

                if (post == null)
                {
                    return(NotFound());
                }

                post.Name      = mapBlogPost.Name;
                post.ShortDesc = mapBlogPost.ShortDesc;
                post.Desc      = mapBlogPost.Desc;
                post.DateEdit  = DateTime.Now.ToShortDateString();

                await _db.SaveChangesAsync();

                return(RedirectToAction("Index", "BlogPost"));
            }

            return(PartialView(mapBlogPost));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> EditPost(long id)
        {
            var post = await _qpa.ProcessAsync(new GetBlogPostByIdQuery { Id = id });

            EditBlogPostViewModel ebpvm = new EditBlogPostViewModel
            {
                Id             = id,
                Title          = post.Title,
                Content        = post.Content,
                Description    = post.Description,
                PublishOn      = post.PublishOn,
                Public         = post.Public,
                FeaturesList   = new List <FeaturesCheckBox>(),
                CategoriesList = new List <CategoriesCheckBox>()
            };

            var postHasCategories = await _qpa.ProcessAsync(new GetCategoriesForBlogPostByIdQuery { Id = id });

            foreach (var category in await _qpa.ProcessAsync(new GetCategoriesQuery()))
            {
                var categoryCheckBox = new CategoriesCheckBox()
                {
                    CategoryId = category.Id,
                    Name       = category.Name,
                    IsSelected = false
                };

                if (postHasCategories.Contains(category))
                {
                    categoryCheckBox.IsSelected = true;
                }

                ebpvm.CategoriesList.Add(categoryCheckBox);
            }

            var postHasFeatures = await _qpa.ProcessAsync(new GetFeaturesForBlogPostByIdQuery { Id = id });

            foreach (var feature in await _qpa.ProcessAsync(new GetFeaturesQuery()))
            {
                var featureCheckBox = new FeaturesCheckBox()
                {
                    FeatureId  = feature.Id,
                    Title      = feature.Title,
                    IsSelected = false
                };

                if (postHasFeatures.Contains(feature))
                {
                    featureCheckBox.IsSelected = true;
                }

                ebpvm.FeaturesList.Add(featureCheckBox);
            }

            return(View(ebpvm));
        }
Ejemplo n.º 4
0
        public ActionResult Create()
        {
            var viewModel = new EditBlogPostViewModel
            {
                BlogPost   = new Article(),
                EnableTags = _featureService.EnableTaggableContent.IsEnabledForUser(LoggedInUser)
            };

            return(View(viewModel));
        }
Ejemplo n.º 5
0
        public ActionResult Edit(int id)
        {
            var post      = _blogPostRepository.Get(id);
            var viewModel = new EditBlogPostViewModel
            {
                BlogPost   = Mapper.Map(post),
                EnableTags = _featureService.EnableTaggableContent.IsEnabledForUser(LoggedInUser)
            };

            return(View(viewModel));
        }
Ejemplo n.º 6
0
        public IActionResult EditBlogPost(int id)
        {
            var editBlogPostViewModel = new EditBlogPostViewModel();

            editBlogPostViewModel.BlogPost = (from b in _assignment2DataContext.BlogPosts where b.BlogPostId == id select b).FirstOrDefault();

            var photosToUpdate = (from p in _assignment2DataContext.Photos where editBlogPostViewModel.BlogPost.BlogPostId == p.BlogPostId select p).ToList();

            editBlogPostViewModel.Photos = photosToUpdate;

            return(View(editBlogPostViewModel));
        }
Ejemplo n.º 7
0
        public ActionResult Create(EditBlogPostViewModel blogPostModel)
        {
            var post = Mapper.Map(blogPostModel.BlogPost);

            if (blogPostModel.BlogPost.Image != null)
            {
                var imageHostClient = ImageHost.ServiceClient.ImageHostClient.GetFromConfig();
                post.ImageUrl = imageHostClient.UploadImage(blogPostModel.BlogPost.Image.ToByte(), blogPostModel.BlogPost.Image.FileName);
            }

            _blogPostRepository.Save(post);
            return(RedirectToAction("Index", "Admin"));
        }
Ejemplo n.º 8
0
        public ActionResult Create(EditBlogPostViewModel viewModel)
        {
            var subscribers = _newsletterSubscriberRepository.GetAll();
            var newsLetter  = new Newsletter(subscribers)
            {
                Title    = viewModel.BlogPost.Title,
                ImageUrl = viewModel.BlogPost.ImageUrl,
                Body     = viewModel.BlogPost.Body
            };

            new MailController(_blogRepository).SendNewsletter(newsLetter).Deliver();
            return(RedirectToAction("Index"));
        }
Ejemplo n.º 9
0
        public ActionResult Create(int blogpost = 0)
        {
            var viewModel = new EditBlogPostViewModel();

            if (blogpost > 0)
            {
                var blogPost = _blogPostRepository.Get(blogpost);
                viewModel.BlogPost = new Article
                {
                    Title    = blogPost.Title,
                    ImageUrl = blogPost.ImageUrl,
                    Body     = blogPost.Body
                };
            }
            return(View(viewModel));
        }
Ejemplo n.º 10
0
        public ActionResult Edit(EditBlogPostViewModel blogPostModel)
        {
            var post = _blogPostRepository.Get(blogPostModel.BlogPost.Id);

            post.Title = blogPostModel.BlogPost.Title;
            post.Body  = blogPostModel.BlogPost.Body;
            post.Tags  = !string.IsNullOrWhiteSpace(blogPostModel.BlogPost.Tags)
                            ? blogPostModel.BlogPost.Tags.Split(',').Select(o => o.Trim()).ToList()
                            : new List <string>();

            if (blogPostModel.BlogPost.Image != null)
            {
                var imageHostClient = ImageHost.ServiceClient.ImageHostClient.GetFromConfig();
                post.ImageUrl = imageHostClient.UploadImage(blogPostModel.BlogPost.Image.ToByte(), blogPostModel.BlogPost.Image.FileName);
            }

            _blogPostRepository.Save(post);
            return(RedirectToAction("Index", "Admin"));
        }
Ejemplo n.º 11
0
        public IActionResult EditBlogPost(int id)
        {
            EditBlogPostViewModel model = new EditBlogPostViewModel();

            // If not first time and logged in
            if (HttpContext.Session.GetInt32("userid") != null)
            {
                var user = (from u in dataContext.Users
                            where u.UserId == HttpContext.Session.GetInt32("userid")
                            select u).FirstOrDefault();
                var blog = (from bp in dataContext.BlogPosts where bp.BlogPostId == id select bp).First();
                model.User     = user;
                model.BlogPost = blog;
            }

            if (model.User != null && model.User.RoleId == 2)
            {
                return(View(model));
            }
            else
            {
                return(RedirectToAction("Index"));
            }
        }
Ejemplo n.º 12
0
        public async Task <IActionResult> EditPost(EditBlogPostViewModel model)
        {
            var post = await _qpa.ProcessAsync(new GetBlogPostByIdQuery { Id = model.Id });

            if (post != null && ModelState.IsValid)
            {
                var ubpc = new UpdateBlogPostCommand();

                if (post.Author == null)
                {
                    var curUser = await _userManager.GetUserAsync(User);

                    var author = await _qpa.ProcessAsync(new GetAuthorByAppUserIdQuery { Id = curUser.Id });

                    ubpc.NewAuthor = author;
                }
                else
                {
                    ubpc.NewAuthor = post.Author; // keep the same author
                }

                ubpc.Id             = model.Id;
                ubpc.NewTitle       = model.Title;
                ubpc.NewDescription = model.Description;
                ubpc.NewContent     = model.Content;
                ubpc.LastModifiedAt = DateTime.Now;
                ubpc.NewPublishOn   = model.PublishOn;
                ubpc.NewPublic      = model.Public;

                // update the post

                var ubpcResult = await _cp.ProcessAsync(ubpc);

                if (ubpcResult.Succeeded)
                {
                    // do nothing
                    _logger.LogInformation("Successfully updated BlogPost Id {0}", model.Id);
                }
                else
                {
                    _logger.LogWarning("Unable to update BlogPost {0}", model.Id);
                    // an error
                    return(NotFound());
                }

                List <long> topicIds = new List <long>();

                if (model.TopicsList != null)
                {
                    foreach (var topic in model.TopicsList)
                    {
                        if (topic.IsSelected)
                        {
                            topicIds.Add(topic.TopicId);
                        }
                    }

                    var addTopicsResult =
                        await _cp.ProcessAsync(new SetBlogPostTopicsCommand
                    {
                        BlogPostId = post.Id,
                        TopicIds   = topicIds
                    });

                    if (addTopicsResult.Succeeded)
                    {
                        // do nothing
                        _logger.LogInformation("Successfully set Topics for BlogPost {0}", model.Id);
                    }
                    else
                    {
                        // log the error
                        _logger.LogInformation("Unable to set Topics for BlogPost {0}", model.Id);

                        return(NotFound());
                    }
                }
                else
                {
                    model.TopicsList = new List <TopicsCheckBox>();
                }

                List <long> categoryIds = new List <long>();

                if (model.CategoriesList != null)
                {
                    foreach (var category in model.CategoriesList)
                    {
                        if (category.IsSelected)
                        {
                            categoryIds.Add(category.CategoryId);
                        }
                    }

                    var addCategoriesResult =
                        await _cp.ProcessAsync(new SetBlogPostCategoriesCommand
                    {
                        BlogPostId  = post.Id,
                        CategoryIds = categoryIds
                    });

                    if (addCategoriesResult.Succeeded)
                    {
                        // do nothing
                        _logger.LogInformation("Successfully set Categories for BlogPost {0}", model.Id);
                    }
                    else
                    {
                        // log the error
                        _logger.LogWarning("Unable to set Categories for BlogPost {0}", model.Id);
                        return(NotFound());
                    }
                }
                else
                {
                    model.CategoriesList = new List <CategoriesCheckBox>();
                }

                ViewData["SavedMessage"] = "Post saved.";

                return(View(model));
            }
            else
            {
                if (post == null)
                {
                    _logger.LogWarning("Post to EditPost for update invoked for a non-existant BlogPost Id {0}", model.Id);
                    return(NotFound());
                }

                // these are needed for rendering the view when there
                // are not categories or topics created in the engine
                if (model.CategoriesList == null)
                {
                    model.CategoriesList = new List <CategoriesCheckBox>();
                }
                if (model.TopicsList == null)
                {
                    model.TopicsList = new List <TopicsCheckBox>();
                }

                return(View(model));
            }
        }
Ejemplo n.º 13
0
        public async Task <IActionResult> EditPost(long id)
        {
            var post = await _qpa.ProcessAsync(new GetBlogPostByIdQuery { Id = id });

            if (post != null)
            {
                EditBlogPostViewModel ebpvm = new EditBlogPostViewModel
                {
                    Id             = id,
                    Title          = post.Title,
                    Content        = post.Content,
                    Description    = post.Description,
                    PublishOn      = post.PublishOn,
                    Public         = post.Public,
                    TopicsList     = new List <TopicsCheckBox>(),
                    CategoriesList = new List <CategoriesCheckBox>()
                };

                var postHasCategories = await _qpa.ProcessAsync(new GetCategoriesForBlogPostByIdQuery { Id = id });

                foreach (var category in await _qpa.ProcessAsync(new GetCategoriesQuery()))
                {
                    var categoryCheckBox = new CategoriesCheckBox()
                    {
                        CategoryId = category.Id,
                        Name       = category.Name,
                        IsSelected = false
                    };

                    if (postHasCategories.Contains(category))
                    {
                        categoryCheckBox.IsSelected = true;
                    }

                    ebpvm.CategoriesList.Add(categoryCheckBox);
                }

                var postHasTopics = await _qpa.ProcessAsync(new GetTopicsForBlogPostByIdQuery { Id = id });

                foreach (var topic in await _qpa.ProcessAsync(new GetTopicsQuery()))
                {
                    var topicCheckBox = new TopicsCheckBox()
                    {
                        TopicId    = topic.Id,
                        Title      = topic.Title,
                        IsSelected = false
                    };

                    if (postHasTopics.Contains(topic))
                    {
                        topicCheckBox.IsSelected = true;
                    }

                    ebpvm.TopicsList.Add(topicCheckBox);
                }

                return(View(ebpvm));
            }
            else
            {
                _logger.LogWarning("EditPost called for non-existant BlogPost {0}", id);

                return(NotFound());
            }
        }
Ejemplo n.º 14
0
        public async Task <IActionResult> EditPost(long id)
        {
            var post = await _context.BlogPosts.FindAsync(id);

            EditBlogPostViewModel ebpvm = new EditBlogPostViewModel
            {
                Id             = id,
                Title          = post.Title,
                Content        = post.Content,
                Description    = post.Description,
                PublishOn      = post.PublishOn,
                Public         = post.Public,
                FeaturesList   = new List <FeaturesCheckBox>(),
                CategoriesList = new List <CategoriesCheckBox>()
            };

            var postHasCategories = await(from bpc in _context.BlogPostCategory
                                          where bpc.BlogPostId == id
                                          join c in _context.Categories on bpc.CategoryId equals c.Id
                                          select c).ToListAsync();

            foreach (var category in _context.Categories)
            {
                var categoryCheckBox = new CategoriesCheckBox()
                {
                    CategoryId = category.Id,
                    Name       = category.Name,
                    IsSelected = false
                };

                if (postHasCategories.Contains(category))
                {
                    categoryCheckBox.IsSelected = true;
                }

                ebpvm.CategoriesList.Add(categoryCheckBox);
            }

            var postHasFeatures = await(from bpf in _context.BlogPostFeature
                                        where bpf.BlogPostId == id
                                        join f in _context.Features on bpf.FeatureId equals f.Id
                                        select f).ToListAsync();

            foreach (var feature in _context.Features)
            {
                var featureCheckBox = new FeaturesCheckBox()
                {
                    FeatureId  = feature.Id,
                    Title      = feature.Title,
                    IsSelected = false
                };

                if (postHasFeatures.Contains(feature))
                {
                    featureCheckBox.IsSelected = true;
                }

                ebpvm.FeaturesList.Add(featureCheckBox);
            }

            return(View(ebpvm));
        }
Ejemplo n.º 15
0
        public async Task <IActionResult> EditPost(EditBlogPostViewModel model)
        {
            //var post = await _context.BlogPosts.FindAsync(model.Id);

            // fix these queries, the query for author can select from the author table without the join

            var post    = _context.BlogPosts.Where(bp => bp.Id == model.Id).Include(bp => bp.Author).FirstOrDefault();
            var curUser = await _userManager.GetUserAsync(User);

            var author = await(from u in _userManager.Users
                               where u.Id == curUser.Id
                               join a in _context.Authors on u.Id equals a.ApplicationUserId
                               select a).FirstOrDefaultAsync();

            // An admin is taking ownership
            if (post.Author == null)
            {
                post.Author = author;
            }

            post.Title       = model.Title;
            post.Description = model.Description;
            post.Content     = model.Content;
            post.ModifiedAt  = DateTime.Now;
            post.PublishOn   = model.PublishOn;
            post.Public      = model.Public;

            var bpfts = from bpf in _context.BlogPostFeature
                        where bpf.BlogPostId == post.Id
                        select bpf;

            _context.BlogPostFeature.RemoveRange(bpfts);

            await _context.SaveChangesAsync();

            if (model.FeaturesList != null)
            {
                foreach (var feature in model.FeaturesList)
                {
                    if (feature.IsSelected)
                    {
                        //var f = await _context.Features.FindAsync(feature.FeatureId);
                        BlogPostFeature bpf = new BlogPostFeature()
                        {
                            //BlogPost = post,
                            BlogPostId = post.Id,
                            //Feature = f,
                            FeatureId = feature.FeatureId
                        };
                        _context.BlogPostFeature.Add(bpf);
                    }
                }
            }
            else
            {
                model.FeaturesList = new List <FeaturesCheckBox>();
            }
            var bpcts = from bpc in _context.BlogPostCategory
                        where bpc.BlogPostId == post.Id
                        select bpc;

            _context.BlogPostCategory.RemoveRange(bpcts);

            await _context.SaveChangesAsync();

            if (model.CategoriesList != null)
            {
                foreach (var category in model.CategoriesList)
                {
                    if (category.IsSelected)
                    {
                        //var cat = await _context.Categories.FindAsync(category.CategoryId);

                        BlogPostCategory bpc = new BlogPostCategory()
                        {
                            //BlogPost = post,
                            BlogPostId = post.Id,
                            //Category = cat,
                            CategoryId = category.CategoryId
                        };
                        _context.BlogPostCategory.Add(bpc);
                    }
                }
            }
            else
            {
                model.CategoriesList = new List <CategoriesCheckBox>();
            }

            await _context.SaveChangesAsync();

            //return RedirectToAction("ManagePosts");
            //return Redirect(Request.Headers["Referer"]);
            ViewData["SavedMessage"] = "Post saved.";

            return(View(model));
        }
Ejemplo n.º 16
0
        public async Task <IActionResult> EditPost(EditBlogPostViewModel model)
        {
            // fix these queries, the query for author can select from the author table without the join

            var post = await _qpa.ProcessAsync(new GetBlogPostByIdQuery { Id = model.Id });

            var ubpc = new UpdateBlogPostCommand();

            if (post.Author == null)
            {
                var curUser = await _userManager.GetUserAsync(User);

                var author = await _qpa.ProcessAsync(new GetAuthorByAppUserIdQuery { Id = curUser.Id });

                ubpc.NewAuthor = author;
            }
            else
            {
                ubpc.NewAuthor = post.Author; // keep the same author
            }

            ubpc.Id             = model.Id;
            ubpc.NewTitle       = model.Title;
            ubpc.NewDescription = model.Description;
            ubpc.NewContent     = model.Content;
            ubpc.LastModifiedAt = DateTime.Now;
            ubpc.NewPublishOn   = model.PublishOn;
            ubpc.NewPublic      = model.Public;

            // update the post

            var ubpcResult = await _cp.ProcessAsync(ubpc);

            if (ubpcResult.Succeeded)
            {
                // do nothing
            }
            else
            {
                // an error
                return(NotFound());
            }

            List <long> featureIds = new List <long>();

            if (model.FeaturesList != null)
            {
                foreach (var feature in model.FeaturesList)
                {
                    if (feature.IsSelected)
                    {
                        featureIds.Add(feature.FeatureId);
                    }
                }

                var addFeaturesResult =
                    await _cp.ProcessAsync(new SetBlogPostFeaturesCommand
                {
                    BlogPostId = post.Id,
                    FeatureIds = featureIds
                });

                if (addFeaturesResult.Succeeded)
                {
                    // do nothing
                }
                else
                {
                    // log the error
                    return(NotFound());
                }
            }
            else
            {
                model.FeaturesList = new List <FeaturesCheckBox>();
            }

            List <long> categoryIds = new List <long>();

            if (model.CategoriesList != null)
            {
                foreach (var category in model.CategoriesList)
                {
                    if (category.IsSelected)
                    {
                        categoryIds.Add(category.CategoryId);
                    }
                }

                var addCategoriesResult =
                    await _cp.ProcessAsync(new SetBlogPostCategoriesCommand
                {
                    BlogPostId  = post.Id,
                    CategoryIds = categoryIds
                });

                if (addCategoriesResult.Succeeded)
                {
                    // do nothing
                }
                else
                {
                    // log the error
                    return(NotFound());
                }
            }
            else
            {
                model.CategoriesList = new List <CategoriesCheckBox>();
            }

            ViewData["SavedMessage"] = "Post saved.";

            return(View(model));
        }
Ejemplo n.º 17
0
        public async Task <IActionResult> EditPost(long id)
        {
            var post = await _qpa.ProcessAsync(new GetBlogPostByIdQuery { Id = id });

            if (post != null)
            {
                var authResult = await _authService.AuthorizeAsync(User, post, "EditPolicy");

                if (!authResult.Succeeded &&
                    !User.IsInRole("Admins"))
                {
                    if (User.Identity.IsAuthenticated)
                    {
                        return(new ForbidResult());
                    }
                    else
                    {
                        return(new ChallengeResult());
                    }
                }

                var ebpvm = new EditBlogPostViewModel
                {
                    Id             = id,
                    Title          = post.Title,
                    Content        = post.Content,
                    Description    = post.Description,
                    PublishOn      = post.PublishOn,
                    Public         = post.Public,
                    TopicsList     = new List <TopicsCheckBox>(),
                    CategoriesList = new List <CategoriesCheckBox>()
                };

                var postHasCategories = await _qpa.ProcessAsync(new GetCategoriesForBlogPostByIdQuery { Id = id });

                foreach (var category in await _qpa.ProcessAsync(new GetCategoriesQuery()))
                {
                    var categoryCheckBox = new CategoriesCheckBox()
                    {
                        CategoryId = category.Id,
                        Name       = category.Name,
                        IsSelected = false
                    };

                    if (postHasCategories.Contains(category))
                    {
                        categoryCheckBox.IsSelected = true;
                    }

                    ebpvm.CategoriesList.Add(categoryCheckBox);
                }

                var postHasTopics = await _qpa.ProcessAsync(new GetTopicsForBlogPostByIdQuery { Id = id });

                foreach (var topic in await _qpa.ProcessAsync(new GetTopicsQuery()))
                {
                    var topicCheckBox = new TopicsCheckBox()
                    {
                        TopicId    = topic.Id,
                        Title      = topic.Title,
                        IsSelected = false
                    };

                    if (postHasTopics.Contains(topic))
                    {
                        topicCheckBox.IsSelected = true;
                    }

                    ebpvm.TopicsList.Add(topicCheckBox);
                }

                return(View(ebpvm));
            }
            else
            {
                _logger.LogWarning("EditPost called for non-existant BlogPost {0}", id);

                return(NotFound());
            }
        }