public IActionResult Create(PostEditViewModel model, [FromServices] LinkGenerator linkGenerator, [FromServices] IPingbackSender pingbackSender) { try { if (ModelState.IsValid) { // get tags string[] tagList = string.IsNullOrWhiteSpace(model.Tags) ? new string[] { } : model.Tags.Split(',').ToArray(); var request = new CreatePostRequest { Title = model.Title.Trim(), Slug = model.Slug.Trim(), HtmlContent = model.HtmlContent, EnableComment = model.EnableComment, ExposedToSiteMap = model.ExposedToSiteMap, IsFeedIncluded = model.FeedIncluded, ContentLanguageCode = model.ContentLanguageCode, IsPublished = model.IsPublished, Tags = tagList, CategoryIds = model.SelectedCategoryIds, RequestIp = HttpContext.Connection.RemoteIpAddress.ToString() }; var response = _postService.CreateNewPost(request); if (response.IsSuccess) { if (!model.IsPublished) { return(RedirectToAction(nameof(Manage))); } var pubDate = response.Item.PostPublish.PubDateUtc.GetValueOrDefault(); var link = GetPostUrl(linkGenerator, pubDate, response.Item.Slug); if (AppSettings.EnablePingBackSend) { Task.Run(async() => { await pingbackSender.TrySendPingAsync(link, response.Item.PostContent); }); } return(RedirectToAction(nameof(Manage))); } ModelState.AddModelError("", response.Message); return(View("CreateOrEdit", model)); } return(View("CreateOrEdit", model)); } catch (Exception ex) { Logger.LogError(ex, "Error Creating New Post."); ModelState.AddModelError("", ex.Message); return(View("CreateOrEdit", model)); } }
public PostController( IMediator mediator, IBlogConfig blogConfig, ITimeZoneResolver timeZoneResolver, IPingbackSender pingbackSender, ILogger <PostController> logger) { _mediator = mediator; _blogConfig = blogConfig; _timeZoneResolver = timeZoneResolver; _pingbackSender = pingbackSender; _logger = logger; }
public PostManageController( IPostService postService, IBlogConfig blogConfig, ITZoneResolver tZoneResolver, IPingbackSender pingbackSender, ILogger <PostManageController> logger) { _postService = postService; _blogConfig = blogConfig; _tZoneResolver = tZoneResolver; _pingbackSender = pingbackSender; _logger = logger; }
public PostController( ILogger <PostController> logger, IOptions <AppSettings> settings, PostService postService, CategoryService categoryService, IPingbackSender pingbackSender, LinkGenerator linkGenerator) : base(logger, settings) { _postService = postService; _categoryService = categoryService; _pingbackSender = pingbackSender; _linkGenerator = linkGenerator; }
public IActionResult Edit(PostEditViewModel model, [FromServices] LinkGenerator linkGenerator, [FromServices] IPingbackSender pingbackSender) { if (ModelState.IsValid) { string[] tagList = string.IsNullOrWhiteSpace(model.Tags) ? new string[] { } : model.Tags.Split(',').ToArray(); var request = new EditPostRequest(model.PostId) { Title = model.Title.Trim(), Slug = model.Slug.Trim(), HtmlContent = model.HtmlContent, EnableComment = model.EnableComment, ExposedToSiteMap = model.ExposedToSiteMap, IsFeedIncluded = model.FeedIncluded, ContentLanguageCode = model.ContentLanguageCode, IsPublished = model.IsPublished, Tags = tagList, CategoryIds = model.SelectedCategoryIds }; var response = _postService.EditPost(request); if (response.IsSuccess) { if (model.IsPublished) { Logger.LogInformation($"Trying to Ping URL for post: {response.Item.Id}"); var pubDate = response.Item.PostPublish.PubDateUtc.GetValueOrDefault(); var link = GetPostUrl(linkGenerator, pubDate, response.Item.Slug); if (AppSettings.EnablePingBackSend) { Task.Run(async() => { await pingbackSender.TrySendPingAsync(link, response.Item.PostContent); }); } } return(RedirectToAction(nameof(Manage))); } ModelState.AddModelError("", response.Message); return(View("CreateOrEdit", model)); } return(View("CreateOrEdit", model)); }
public async Task <IActionResult> CreateOrEdit(PostEditViewModel model, [FromServices] LinkGenerator linkGenerator, [FromServices] IPingbackSender pingbackSender) { try { if (!ModelState.IsValid) { return(Conflict(ModelState)); } var tags = string.IsNullOrWhiteSpace(model.Tags) ? Array.Empty <string>() : model.Tags.Split(',').ToArray(); var request = new EditPostRequest(model.PostId) { Title = model.Title.Trim(), Slug = model.Slug.Trim(), EditorContent = model.EditorContent, EnableComment = model.EnableComment, ExposedToSiteMap = model.ExposedToSiteMap, IsFeedIncluded = model.FeedIncluded, ContentLanguageCode = model.ContentLanguageCode, IsPublished = model.IsPublished, Tags = tags, CategoryIds = model.SelectedCategoryIds }; var tzDate = _dateTimeResolver.NowOfTimeZone; if (model.ChangePublishDate && model.PublishDate.HasValue && model.PublishDate <= tzDate && model.PublishDate.GetValueOrDefault().Year >= 1975) { request.PublishDate = model.PublishDate; } var postEntity = model.PostId == Guid.Empty ? await _postService.CreateAsync(request) : await _postService.UpdateAsync(request); if (model.IsPublished) { _logger.LogInformation($"Trying to Ping URL for post: {postEntity.Id}"); var pubDate = postEntity.PubDateUtc.GetValueOrDefault(); var link = linkGenerator.GetUriByAction(HttpContext, "Slug", "Post", new { year = pubDate.Year, month = pubDate.Month, day = pubDate.Day, postEntity.Slug }); if (_blogConfig.AdvancedSettings.EnablePingBackSend) { _ = Task.Run(async() => { await pingbackSender.TrySendPingAsync(link, postEntity.PostContent); }); } } return(Json(new { PostId = postEntity.Id })); } catch (Exception ex) { _logger.LogError(ex, "Error Creating New Post."); Response.StatusCode = (int)HttpStatusCode.InternalServerError; return(Json(ex.Message)); } }
public async Task <IActionResult> CreateOrEdit(PostEditViewModel model, [FromServices] LinkGenerator linkGenerator, [FromServices] IPingbackSender pingbackSender) { try { if (ModelState.IsValid) { var tagList = string.IsNullOrWhiteSpace(model.Tags) ? new string[] { } : model.Tags.Split(',').ToArray(); var request = new EditPostRequest(model.PostId) { Title = model.Title.Trim(), Slug = model.Slug.Trim(), EditorContent = model.EditorContent, EnableComment = model.EnableComment, ExposedToSiteMap = model.ExposedToSiteMap, IsFeedIncluded = model.FeedIncluded, ContentLanguageCode = model.ContentLanguageCode, IsPublished = model.IsPublished, Tags = tagList, CategoryIds = model.SelectedCategoryIds, RequestIp = HttpContext.Connection.RemoteIpAddress.ToString() }; var tzDate = _dateTimeResolver.GetNowWithUserTZone(); if (model.ChangePublishDate && model.PublishDate.HasValue && model.PublishDate <= tzDate && model.PublishDate.GetValueOrDefault().Year >= 1975) { request.PublishDate = model.PublishDate; } var response = model.PostId == Guid.Empty ? await _postService.CreateNewPost(request) : await _postService.EditPost(request); if (response.IsSuccess) { if (model.IsPublished) { Logger.LogInformation($"Trying to Ping URL for post: {response.Item.Id}"); var pubDate = response.Item.PostPublish.PubDateUtc.GetValueOrDefault(); var link = GetPostUrl(linkGenerator, pubDate, response.Item.Slug); if (_blogConfig.AdvancedSettings.EnablePingBackSend) { _ = Task.Run(async() => { await pingbackSender.TrySendPingAsync(link, response.Item.PostContent); }); } } return(Json(new { PostId = response.Item.Id })); } Response.StatusCode = (int)HttpStatusCode.InternalServerError; return(Json(new FailedResponse(response.Message))); } Response.StatusCode = (int)HttpStatusCode.BadRequest; return(Json(new FailedResponse("Invalid ModelState"))); } catch (Exception ex) { Logger.LogError(ex, "Error Creating New Post."); Response.StatusCode = (int)HttpStatusCode.InternalServerError; return(Json(new FailedResponse(ex.Message))); } }