From 81e0d4af1173a5b36c464722a4287648d2c7bc24 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Thu, 28 May 2020 02:39:51 +0100 Subject: [PATCH] Add instruction set extension creation in admin view. --- .../Details/InstructionSetExtension.razor | 1 + .../Details/InstructionSetExtension.razor.cs | 37 ++++++++++++++----- .../Admin/InstructionSetExtensions.razor | 4 +- .../InstructionSetExtensionsService.cs | 13 +++++++ 4 files changed, 43 insertions(+), 12 deletions(-) diff --git a/Marechai/Pages/Admin/Details/InstructionSetExtension.razor b/Marechai/Pages/Admin/Details/InstructionSetExtension.razor index 420417f0..90017a5a 100644 --- a/Marechai/Pages/Admin/Details/InstructionSetExtension.razor +++ b/Marechai/Pages/Admin/Details/InstructionSetExtension.razor @@ -32,6 +32,7 @@ @page "/admin/instruction_set_extensions/details/{Id:int}" @page "/admin/instruction_set_extensions/edit/{Id:int}" +@page "/admin/instruction_set_extensions/create" @inherits OwningComponentBase @inject IStringLocalizer L @attribute [Authorize(Roles = "UberAdmin, Admin")] diff --git a/Marechai/Pages/Admin/Details/InstructionSetExtension.razor.cs b/Marechai/Pages/Admin/Details/InstructionSetExtension.razor.cs index 09fc8ee5..0e0aef81 100644 --- a/Marechai/Pages/Admin/Details/InstructionSetExtension.razor.cs +++ b/Marechai/Pages/Admin/Details/InstructionSetExtension.razor.cs @@ -8,6 +8,7 @@ namespace Marechai.Pages.Admin.Details { public partial class InstructionSetExtension { + bool _creating; bool _editing; bool _loaded; Database.Models.InstructionSetExtension _model; @@ -21,14 +22,19 @@ namespace Marechai.Pages.Admin.Details _loaded = true; - if(Id <= 0) + _creating = NavigationManager.ToBaseRelativePath(NavigationManager.Uri).ToLowerInvariant(). + StartsWith("admin/instruction_set_extensions/create", + StringComparison.InvariantCulture); + + if(Id <= 0 && + !_creating) return; - _model = await Service.GetAsync(Id); + _model = _creating ? new Database.Models.InstructionSetExtension() : await Service.GetAsync(Id); - _editing = NavigationManager.ToBaseRelativePath(NavigationManager.Uri).ToLowerInvariant(). - StartsWith("admin/instruction_set_extensions/edit/", - StringComparison.InvariantCulture); + _editing = _creating || NavigationManager.ToBaseRelativePath(NavigationManager.Uri).ToLowerInvariant(). + StartsWith("admin/instruction_set_extensions/edit/", + StringComparison.InvariantCulture); StateHasChanged(); } @@ -42,7 +48,15 @@ namespace Marechai.Pages.Admin.Details async void OnCancelClicked() { _editing = false; - _model = await Service.GetAsync(Id); + + if(_creating) + { + NavigationManager.ToBaseRelativePath("admin/instruction_set_extensions"); + + return; + } + + _model = await Service.GetAsync(Id); StateHasChanged(); } @@ -53,9 +67,14 @@ namespace Marechai.Pages.Admin.Details !Service.VerifyUnique(_model.Extension)) return; - _editing = false; - await Service.UpdateAsync(_model); - _model = await Service.GetAsync(Id); + if(_creating) + Id = await Service.CreateAsync(_model); + else + await Service.UpdateAsync(_model); + + _editing = false; + _creating = false; + _model = await Service.GetAsync(Id); StateHasChanged(); } diff --git a/Marechai/Pages/Admin/InstructionSetExtensions.razor b/Marechai/Pages/Admin/InstructionSetExtensions.razor index fc41607d..7e550e0d 100644 --- a/Marechai/Pages/Admin/InstructionSetExtensions.razor +++ b/Marechai/Pages/Admin/InstructionSetExtensions.razor @@ -42,9 +42,7 @@ return; }

- - @L["Create new"] - + @L["Create new"]

diff --git a/Marechai/Services/InstructionSetExtensionsService.cs b/Marechai/Services/InstructionSetExtensionsService.cs index 15710426..11b17dd5 100644 --- a/Marechai/Services/InstructionSetExtensionsService.cs +++ b/Marechai/Services/InstructionSetExtensionsService.cs @@ -37,6 +37,19 @@ namespace Marechai.Services await _context.SaveChangesAsync(); } + public async Task CreateAsync(InstructionSetExtension viewModel) + { + var model = new InstructionSetExtension + { + Extension = viewModel.Extension + }; + + await _context.InstructionSetExtensions.AddAsync(model); + await _context.SaveChangesAsync(); + + return model.Id; + } + public async Task DeleteAsync(int id) { InstructionSetExtension item = await _context.InstructionSetExtensions.FindAsync(id);