Skip to content

Commit

Permalink
Add delete to Blog
Browse files Browse the repository at this point in the history
  • Loading branch information
oveldman committed Oct 20, 2023
1 parent 48e5ea4 commit ea2997d
Show file tree
Hide file tree
Showing 9 changed files with 117 additions and 43 deletions.
19 changes: 19 additions & 0 deletions MadWorld/MadWorld.Frontend.Application/Blogs/DeleteBlogUseCase.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using MadWorld.Frontend.Domain.Blogs;

namespace MadWorld.Frontend.Application.Blogs;

public class DeleteBlogUseCase : IDeleteBlogUseCase
{
private readonly IBlogService _service;

public DeleteBlogUseCase(IBlogService service)
{
_service = service;
}

public async Task<bool> DeleteBlog(string id)
{
var response = await _service.DeleteBlog(id);
return response.IsSuccess;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public static class ServiceCollectionExtensions
public static IServiceCollection AddApplication(this IServiceCollection services)
{
services.AddScoped<IAddBlogUseCase, AddBlogUseCase>();
services.AddScoped<IDeleteBlogUseCase, DeleteBlogUseCase>();
services.AddScoped<IGetAccountUseCase, GetAccountUseCase>();
services.AddScoped<IGetAccountsUseCase, GetAccountsUseCase>();
services.AddScoped<IGetBlogsUseCase, GetBlogsUseCase>();
Expand Down
6 changes: 6 additions & 0 deletions MadWorld/MadWorld.Frontend.Domain/Blogs/IDeleteBlogUseCase.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace MadWorld.Frontend.Domain.Blogs;

public interface IDeleteBlogUseCase
{
Task<bool> DeleteBlog(string id);
}
87 changes: 44 additions & 43 deletions MadWorld/MadWorld.Frontend.UI.Admin/Pages/Blogs/BlogDetails.razor
Original file line number Diff line number Diff line change
Expand Up @@ -20,55 +20,56 @@
}

<RadzenTemplateForm Data="@Blog" Submit="@(async (BlogDetailContract blog) => { await SaveChanges(blog); })">
<RadzenRow>
<RadzenColumn Size="12">
<RadzenStack>
<RadzenFieldset Text="Blog Details">
<RadzenStack Gap="1rem">
@if (!IsNewBlog)
{
<RadzenRow>
<RadzenColumn Size="12">
<RadzenStack>
<RadzenFieldset Text="Blog Details">
<RadzenStack Gap="1rem">
@if (!IsNewBlog)
{
<RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="12" SizeMD="4">
<RadzenLabel Text="Id"/>
</RadzenColumn>
<RadzenColumn Size="12" SizeMD="8">
<RadzenTextBox Name="blog-id" @bind-Value="Blog.Id" Disabled="true" class="col-width-100"></RadzenTextBox>
</RadzenColumn>
</RadzenRow>
}
<RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="12" SizeMD="4">
<RadzenLabel Text="Id"/>
<RadzenLabel Text="Title"/>
</RadzenColumn>
<RadzenColumn Size="12" SizeMD="8">
<RadzenTextBox Name="blog-id" @bind-Value="Blog.Id" Disabled="true" class="col-width-100"></RadzenTextBox>
<RadzenTextBox Name="blog-title" @bind-Value="Blog.Title" class="col-width-100"></RadzenTextBox>
</RadzenColumn>
</RadzenRow>
}
<RadzenRow AlignItems="AlignItems.Center">
<RadzenColumn Size="12" SizeMD="4">
<RadzenLabel Text="Title"/>
</RadzenColumn>
<RadzenColumn Size="12" SizeMD="8">
<RadzenTextBox Name="blog-title" @bind-Value="Blog.Title" class="col-width-100"></RadzenTextBox>
</RadzenColumn>
</RadzenRow>
<RadzenRow AlignItems="AlignItems.Center">
<RadzenHtmlEditor @bind-Value="@BodyUtf8" style="height: 500px; width: 100%">
<RadzenHtmlEditorUndo/>
<RadzenHtmlEditorRedo/>
<RadzenHtmlEditorSeparator/>
<RadzenHtmlEditorBold/>
<RadzenHtmlEditorItalic/>
<RadzenHtmlEditorUnderline/>
<RadzenHtmlEditorStrikeThrough/>
<RadzenHtmlEditorSeparator/>
<RadzenHtmlEditorColor/>
<RadzenHtmlEditorBackground/>
<RadzenHtmlEditorRemoveFormat/>
</RadzenHtmlEditor>
</RadzenRow>
</RadzenStack>
</RadzenFieldset>
</RadzenStack>
</RadzenColumn>
</RadzenRow>
<RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.Center" Gap="1rem" Class="rz-mt-8 rz-mb-4">
<RadzenButton ButtonType="ButtonType.Submit" Size="ButtonSize.Large" Icon="save" Text="Save" />
<RadzenButton ButtonStyle="ButtonStyle.Light" Variant="Variant.Flat" Size="ButtonSize.Large" Icon="cancel" Text="Cancel" Click="@CancelChanges" />
</RadzenStack>
</RadzenTemplateForm>
<RadzenRow AlignItems="AlignItems.Center">
<RadzenHtmlEditor @bind-Value="@BodyUtf8" style="height: 500px; width: 100%">
<RadzenHtmlEditorUndo/>
<RadzenHtmlEditorRedo/>
<RadzenHtmlEditorSeparator/>
<RadzenHtmlEditorBold/>
<RadzenHtmlEditorItalic/>
<RadzenHtmlEditorUnderline/>
<RadzenHtmlEditorStrikeThrough/>
<RadzenHtmlEditorSeparator/>
<RadzenHtmlEditorColor/>
<RadzenHtmlEditorBackground/>
<RadzenHtmlEditorRemoveFormat/>
</RadzenHtmlEditor>
</RadzenRow>
</RadzenStack>
</RadzenFieldset>
</RadzenStack>
</RadzenColumn>
</RadzenRow>
<RadzenStack Orientation="Orientation.Horizontal" JustifyContent="JustifyContent.Center" Gap="1rem" Class="rz-mt-8 rz-mb-4">
<RadzenButton ButtonType="ButtonType.Submit" Size="ButtonSize.Large" Icon="save" Text="Save" />
<RadzenButton ButtonStyle="ButtonStyle.Light" Variant="Variant.Flat" Size="ButtonSize.Large" Icon="cancel" Text="Cancel" Click="@CancelChanges" />
<RadzenButton ButtonStyle="ButtonStyle.Danger" Icon="delete" Text="Delete" Click="@(args => ConfirmDelete(Id))" @onclick:stopPropagation="true"></RadzenButton>
</RadzenStack>
</RadzenTemplateForm>
}
else
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using MadWorld.Shared.Contracts.Anonymous.Blog;
using MadWorld.Shared.Contracts.Shared.Functions;
using Microsoft.AspNetCore.Components;
using Radzen;

namespace MadWorld.Frontend.UI.Admin.Pages.Blogs;

Expand All @@ -20,9 +21,15 @@ public partial class BlogDetails
private bool IsReady { get; set; }
private bool IsSaved { get; set; }

[Inject]
private DialogService DialogService { get; set; } = null!;

[Inject]
private IAddBlogUseCase AddBlogUseCase { get; set; } = null!;

[Inject]
private IDeleteBlogUseCase DeleteBlogUseCase { get; set; } = null!;

[Inject]
private IGetBlogUseCase GetBlogUseCase { get; set; } = null!;

Expand Down Expand Up @@ -64,6 +71,38 @@ private async Task AddBlog(BlogDetailContract blog)
SetMessages(response);
}

public async Task ConfirmDelete(string id)
{
ResetMessages();

var confirmationResult = await DialogService.Confirm($"Are you sure to delete blog {id}?", "Delete Blog", new ConfirmOptions
{
OkButtonText = "Yes",
CancelButtonText = "Cancel",
CloseDialogOnEsc = true,
CloseDialogOnOverlayClick = true
});

if (confirmationResult ?? false)
{
await DeleteBlog(id);
}
}

private async Task DeleteBlog(string id)
{
var succeed = await DeleteBlogUseCase.DeleteBlog(id);

if (succeed)
{
NavigationManager.NavigateTo($"/Blogs");
}
else
{
HasError = true;
}
}

private async Task UpdateBlog(BlogDetailContract blog)
{
var response = await UpdateBlogUseCase.UpdateBlog(blog, BodyUtf8);
Expand Down
2 changes: 2 additions & 0 deletions MadWorld/MadWorld.Frontend.UI.Admin/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using MadWorld.Frontend.UI.Admin;
using MadWorld.Frontend.UI.Shared.Dependencies;
using Radzen;

var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.RootComponents.Add<HeadOutlet>("head::after");

builder.Services.AddSuiteApp(builder.Configuration, builder.HostEnvironment);
builder.Services.AddRadzenComponents();

await builder.Build().RunAsync();
2 changes: 2 additions & 0 deletions MadWorld/MadWorld.Frontend.UI.Admin/Shared/MainLayout.razor
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
@inherits LayoutComponentBase

<RadzenDialog/>

<div class="page">
<div class="sidebar">
<NavMenu/>
Expand Down
2 changes: 2 additions & 0 deletions MadWorld/MadWorld.Frontend.UI.Suite/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using MadWorld.Frontend.UI.Suite;
using Radzen;

var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.RootComponents.Add<HeadOutlet>("head::after");

builder.Services.AddMonaco();
builder.Services.AddSuiteApp(builder.Configuration, builder.HostEnvironment);
builder.Services.AddRadzenComponents();

await builder.Build().RunAsync();
2 changes: 2 additions & 0 deletions MadWorld/MadWorld.Frontend.UI.Suite/Shared/MainLayout.razor
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
@inherits LayoutComponentBase

<RadzenDialog/>

<div class="page">
<div class="sidebar">
<NavMenu/>
Expand Down

0 comments on commit ea2997d

Please sign in to comment.