Ejemplo n.º 1
0
        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());
                }
            }
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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());
        }