diff --git a/MadWorld/MadWorld.Frontend.Application/Blogs/DeleteBlogUseCase.cs b/MadWorld/MadWorld.Frontend.Application/Blogs/DeleteBlogUseCase.cs new file mode 100644 index 0000000..2febce8 --- /dev/null +++ b/MadWorld/MadWorld.Frontend.Application/Blogs/DeleteBlogUseCase.cs @@ -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 DeleteBlog(string id) + { + var response = await _service.DeleteBlog(id); + return response.IsSuccess; + } +} \ No newline at end of file diff --git a/MadWorld/MadWorld.Frontend.Application/Dependencies/ServiceCollectionExtensions.cs b/MadWorld/MadWorld.Frontend.Application/Dependencies/ServiceCollectionExtensions.cs index 353119b..7c1178a 100644 --- a/MadWorld/MadWorld.Frontend.Application/Dependencies/ServiceCollectionExtensions.cs +++ b/MadWorld/MadWorld.Frontend.Application/Dependencies/ServiceCollectionExtensions.cs @@ -13,6 +13,7 @@ public static class ServiceCollectionExtensions public static IServiceCollection AddApplication(this IServiceCollection services) { services.AddScoped(); + services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); diff --git a/MadWorld/MadWorld.Frontend.Domain/Blogs/IDeleteBlogUseCase.cs b/MadWorld/MadWorld.Frontend.Domain/Blogs/IDeleteBlogUseCase.cs new file mode 100644 index 0000000..128e2f8 --- /dev/null +++ b/MadWorld/MadWorld.Frontend.Domain/Blogs/IDeleteBlogUseCase.cs @@ -0,0 +1,6 @@ +namespace MadWorld.Frontend.Domain.Blogs; + +public interface IDeleteBlogUseCase +{ + Task DeleteBlog(string id); +} \ No newline at end of file diff --git a/MadWorld/MadWorld.Frontend.UI.Admin/Pages/Blogs/BlogDetails.razor b/MadWorld/MadWorld.Frontend.UI.Admin/Pages/Blogs/BlogDetails.razor index a699c1a..7420b49 100644 --- a/MadWorld/MadWorld.Frontend.UI.Admin/Pages/Blogs/BlogDetails.razor +++ b/MadWorld/MadWorld.Frontend.UI.Admin/Pages/Blogs/BlogDetails.razor @@ -20,55 +20,56 @@ } - - - - - - @if (!IsNewBlog) - { + + + + + + @if (!IsNewBlog) + { + + + + + + + + + } - + - + - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + } else { diff --git a/MadWorld/MadWorld.Frontend.UI.Admin/Pages/Blogs/BlogDetails.razor.cs b/MadWorld/MadWorld.Frontend.UI.Admin/Pages/Blogs/BlogDetails.razor.cs index 61f287b..b746522 100644 --- a/MadWorld/MadWorld.Frontend.UI.Admin/Pages/Blogs/BlogDetails.razor.cs +++ b/MadWorld/MadWorld.Frontend.UI.Admin/Pages/Blogs/BlogDetails.razor.cs @@ -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; @@ -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!; @@ -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); diff --git a/MadWorld/MadWorld.Frontend.UI.Admin/Program.cs b/MadWorld/MadWorld.Frontend.UI.Admin/Program.cs index 38da62c..51eb1ca 100644 --- a/MadWorld/MadWorld.Frontend.UI.Admin/Program.cs +++ b/MadWorld/MadWorld.Frontend.UI.Admin/Program.cs @@ -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"); builder.RootComponents.Add("head::after"); builder.Services.AddSuiteApp(builder.Configuration, builder.HostEnvironment); +builder.Services.AddRadzenComponents(); await builder.Build().RunAsync(); \ No newline at end of file diff --git a/MadWorld/MadWorld.Frontend.UI.Admin/Shared/MainLayout.razor b/MadWorld/MadWorld.Frontend.UI.Admin/Shared/MainLayout.razor index 3a0c23d..26b054c 100644 --- a/MadWorld/MadWorld.Frontend.UI.Admin/Shared/MainLayout.razor +++ b/MadWorld/MadWorld.Frontend.UI.Admin/Shared/MainLayout.razor @@ -1,5 +1,7 @@ @inherits LayoutComponentBase + +