diff --git a/admin/TwoWeeksReady.Admin/Data/FunctionsRepository.cs b/admin/TwoWeeksReady.Admin/Data/FunctionsRepository.cs index 3507f5c..8fe6732 100644 --- a/admin/TwoWeeksReady.Admin/Data/FunctionsRepository.cs +++ b/admin/TwoWeeksReady.Admin/Data/FunctionsRepository.cs @@ -25,9 +25,9 @@ public Task> GetAllBaseKits() throw new NotImplementedException(); } - public Task> GetAllHazardHunts() + public async Task> GetAllHazardHunts() { - throw new NotImplementedException(); + return await _httpClient.GetFromJsonAsync>("hazardhunt-list"); } public async Task> GetAllHazardInfos() @@ -40,9 +40,9 @@ public Task GetBaseKitById(string id) throw new NotImplementedException(); } - public Task GetHazardHuntById(string id) + public async Task GetHazardHuntById(string id) { - throw new NotImplementedException(); + return await _httpClient.GetFromJsonAsync($"hazardhunt-by-id/{id}"); } public async Task GetHazardInfoById(string id) @@ -55,9 +55,17 @@ public Task SaveBaseKitItem(BaseKitItem kit) throw new NotImplementedException(); } - public Task SaveHazardHunt(HazardHunt hazardHunt) + public async Task SaveHazardHunt(HazardHunt hazardHunt) { - throw new NotImplementedException(); + var response = await _httpClient.PutAsJsonAsync("hazardhunt-update", hazardHunt); + if (response.IsSuccessStatusCode) + { + return await response.Content.ReadFromJsonAsync(); + } + else + { + throw new Exception("Error saving hazard hunt"); + } } public async Task SaveHazardInfo(HazardInfo hazardInfo) @@ -73,6 +81,7 @@ public async Task SaveHazardInfo(HazardInfo hazardInfo) } } + public async Task CreateHazardInfo(HazardInfo hazardInfo) { var response = await _httpClient.PostAsJsonAsync("hazardinfo-create", hazardInfo); @@ -85,5 +94,18 @@ public async Task CreateHazardInfo(HazardInfo hazardInfo) throw new Exception("Error saving hazard info"); } } + + public async Task CreateHazardHunt(HazardHunt hazardHunt) + { + var response = await _httpClient.PostAsJsonAsync("hazardhunt-create", hazardHunt); + if (response.IsSuccessStatusCode) + { + return await response.Content.ReadFromJsonAsync(); + } + else + { + throw new Exception("Error saving hazard hunt"); + } + } } } diff --git a/admin/TwoWeeksReady.Admin/Data/IRepository.cs b/admin/TwoWeeksReady.Admin/Data/IRepository.cs index 210f445..63cce13 100644 --- a/admin/TwoWeeksReady.Admin/Data/IRepository.cs +++ b/admin/TwoWeeksReady.Admin/Data/IRepository.cs @@ -26,6 +26,8 @@ public interface IRepository Task SaveHazardInfo(HazardInfo hazardInfo); Task CreateHazardInfo(HazardInfo hazardInfo); + + Task CreateHazardHunt(HazardHunt hazardHunt); } } diff --git a/admin/TwoWeeksReady.Admin/Data/StubRepository.cs b/admin/TwoWeeksReady.Admin/Data/StubRepository.cs index ecd131e..683c6ba 100644 --- a/admin/TwoWeeksReady.Admin/Data/StubRepository.cs +++ b/admin/TwoWeeksReady.Admin/Data/StubRepository.cs @@ -109,6 +109,10 @@ public Task CreateHazardInfo(HazardInfo hazardInfo) return Task.FromResult(hazardInfo); } + public Task CreateHazardHunt(HazardHunt hazardHunt) + { + return Task.FromResult(hazardHunt); + } } diff --git a/admin/TwoWeeksReady.Admin/Pages/HazardHunts/Details.razor b/admin/TwoWeeksReady.Admin/Pages/HazardHunts/Details.razor index fed19f0..2fbaaeb 100644 --- a/admin/TwoWeeksReady.Admin/Pages/HazardHunts/Details.razor +++ b/admin/TwoWeeksReady.Admin/Pages/HazardHunts/Details.razor @@ -1,18 +1,90 @@ @page "/HazardHunts/{id}" +@page "/HazardHunts/new" @attribute [Authorize(Roles = "admin")] +@using TinyMCE.Blazor +@using System.IO; +@using System.Linq; + @inject IRepository repository @inject IJSRuntime JS +@inject Microsoft.Extensions.Configuration.IConfiguration configuration +@inject ClientImageService clientImages + +@{ + var tinyMCEApiKey = configuration["TinyMCEApiKey"]; +} + +@if(Hazard == null) +{ +

Loading...

+} +else +{ +

Details

+ +
+ + +
+
+ + +
+
+ + + + @foreach(var image in clientImages.Images) + { + + } + + + +
+
+ + + @foreach(var image in clientImages.Images) + { + + } + + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
-

Details

-Hazard Name: - -
-Short Description: - -Save + +
+ + +
+ + +
+} @code { + public Dictionary EditorConfig = new Dictionary + { + { "plugins", "image" }, + { "toolbar", "image" }, + }; [Parameter] public string Id { get; set; } @@ -22,19 +94,47 @@ Short Description: private HazardHunt Hazard { get; set; } + private string ExternalLinks + { + get + { + return string.Join(Environment.NewLine, Hazard?.ExternalLinks ?? new string[0]); + } + set + { + var links = value.Split(new string[] { "\n", Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).Where(s => !string.IsNullOrEmpty(s)); + Hazard.ExternalLinks = links.ToArray(); + } + } + protected override async Task OnInitializedAsync() { - Hazard = await repository.GetHazardHuntById(Id); + if (string.IsNullOrEmpty(Id)) + { + Hazard = new HazardHunt(); + } + else + { + Hazard = await repository.GetHazardHuntById(Id); + } + EditorConfig["image_list"] = clientImages.Images.Select(i => new { title = i.RelativePath, value = i.AbsolutePath }).ToArray(); } - - + public async Task Save() { - await repository.SaveHazardHunt(Hazard); - await OnSave.InvokeAsync(Hazard); + if (string.IsNullOrEmpty(Hazard.Id)) + { + Hazard = await repository.CreateHazardHunt(Hazard); + } + else + { + Hazard = await repository.SaveHazardHunt(Hazard); + } + + //await OnSave.InvokeAsync(Hazard); - await JS.InvokeVoidAsync("alert", new object[] { "Hazard Hunt Saved" }); + await JS.InvokeVoidAsync("alert", new object[] { "Hazard Info Saved" }); } } diff --git a/admin/TwoWeeksReady.Admin/Pages/HazardHunts/List.razor b/admin/TwoWeeksReady.Admin/Pages/HazardHunts/List.razor index 753ece8..25ed074 100644 --- a/admin/TwoWeeksReady.Admin/Pages/HazardHunts/List.razor +++ b/admin/TwoWeeksReady.Admin/Pages/HazardHunts/List.razor @@ -4,8 +4,6 @@ @inject IRepository Repository

Administer Hazard Hunt for Two Weeks Ready

-

Current Hazards Defined:

- @if (_HazardHunts != null && _HazardHunts.Any()) { @@ -35,6 +33,7 @@ else {

No Hazards defined.

+ Add New Hazard } @code { diff --git a/admin/TwoWeeksReady.Admin/Pages/HazardInfos/Details.razor b/admin/TwoWeeksReady.Admin/Pages/HazardInfos/Details.razor index f049b92..f01ed0d 100644 --- a/admin/TwoWeeksReady.Admin/Pages/HazardInfos/Details.razor +++ b/admin/TwoWeeksReady.Admin/Pages/HazardInfos/Details.razor @@ -61,12 +61,12 @@ else
- +
- +