public override async Task <Option <BlogEntryTextModel> > BlogAsync(string uriKey) { using (SqlDeserializerComponent <BlogEntryTextModel> component = new SqlDeserializerComponent <BlogEntryTextModel>( _connectionString, _cmdTxtCustomer, new SqlParameter[] { new SqlParameter("@uriKey", System.Data.SqlDbType.VarChar) { Value = uriKey } })) { try { BlogEntryTextModel model = await component.ExecuteStoreProcedureAndDeserialize(); if (model == null) { return(Option <BlogEntryTextModel> .None()); } return(Option <BlogEntryTextModel> .Some(model)); } catch (InvalidOperationException) { return(Option <BlogEntryTextModel> .None()); } } }
public async Task <ActionResult> OnPostAsync([FromServices] BlogEntryComponentFactory blogEntryComponentFactory) { if (blogEntryComponentFactory == null) { throw new ArgumentNullException(nameof(blogEntryComponentFactory)); } if (!ModelState.IsValid) { return(Page()); } Option <BlogEntryTextModel> blogEntryOption = await _queryComponent.BlogAsync(Id); if (!blogEntryOption.Any()) { return(RedirectToPage("/NotFound")); } BlogEntryTextModel Blog = blogEntryOption.Single(); Option <BlogEntryComponent> componentResult = await blogEntryComponentFactory.LoadComponentAsynd(Blog.BlogEntryId); if (!componentResult.Any()) { return(RedirectToPage("/NotFound")); } BlogEntryComponent component = componentResult.Single(); WorkflowResult result = await component.Update( BlogEntryUpdateRequest.UriKey, BlogEntryUpdateRequest.Title, BlogEntryUpdateRequest.MinutesToRead, BlogEntryUpdateRequest.TextIntro, BlogEntryUpdateRequest.TextEntry, BlogEntryUpdateRequest.KeyWordId ); if (!result.Success) { for (int i = 0; i < result.Errors.Length; i++) { ModelState.AddModelError("", result.Errors[i]); } } else { Id = BlogEntryUpdateRequest.UriKey; } return(await BindPageModelAndRedirect(true, !result.Success)); }
private async Task <ActionResult> BindPageModelAndRedirect(bool isPost = false, bool isError = false) { Option <BlogEntryTextModel> blogEntryOption = await _queryComponent.BlogAsync(Id); if (!blogEntryOption.Any()) { return(RedirectToPage("/NotFound")); } BlogEntryTextModel Blog = blogEntryOption.Single(); BlogEntryUpdateRequest = Blog.MapToAddUpdateBlogEntryRequest(); if (isPost && !isError) { return(RedirectToPage("/Blog/Index")); } return(Page()); }