added BuildOverview and BuildEdit
This commit is contained in:
parent
a3062165e1
commit
9ffaf908f3
5 changed files with 226 additions and 8 deletions
69
Lieb/Data/GuildWars2BuildService.cs
Normal file
69
Lieb/Data/GuildWars2BuildService.cs
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
using Lieb.Models.GuildWars2;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace Lieb.Data
|
||||||
|
{
|
||||||
|
public class GuildWars2BuildService
|
||||||
|
{
|
||||||
|
private readonly IDbContextFactory<LiebContext> _contextFactory;
|
||||||
|
|
||||||
|
public GuildWars2BuildService(IDbContextFactory<LiebContext> contextFactory)
|
||||||
|
{
|
||||||
|
_contextFactory = contextFactory;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task AddOrEditBuild(GuildWars2Build build)
|
||||||
|
{
|
||||||
|
if (build != null)
|
||||||
|
{
|
||||||
|
using var context = _contextFactory.CreateDbContext();
|
||||||
|
if (build.GuildWars2BuildId == 0)
|
||||||
|
{
|
||||||
|
context.GuildWars2Builds.Add(build);
|
||||||
|
await context.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GuildWars2Build? buildToChange = await context.GuildWars2Builds
|
||||||
|
.FirstOrDefaultAsync(r => r.GuildWars2BuildId == build.GuildWars2BuildId);
|
||||||
|
|
||||||
|
if (buildToChange != null)
|
||||||
|
{
|
||||||
|
buildToChange.BuildName = build.BuildName;
|
||||||
|
buildToChange.Might = build.Might;
|
||||||
|
buildToChange.Quickness = build.Quickness;
|
||||||
|
buildToChange.Alacrity = build.Alacrity;
|
||||||
|
buildToChange.Heal = build.Heal;
|
||||||
|
buildToChange.Class = build.Class;
|
||||||
|
buildToChange.EliteSpecialization = build.EliteSpecialization;
|
||||||
|
|
||||||
|
await context.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task DeleteBuild(int buildId)
|
||||||
|
{
|
||||||
|
using var context = _contextFactory.CreateDbContext();
|
||||||
|
GuildWars2Build? build = await context.GuildWars2Builds.FirstOrDefaultAsync(b => b.GuildWars2BuildId == buildId);
|
||||||
|
if (build != null)
|
||||||
|
{
|
||||||
|
context.GuildWars2Builds.Remove(build);
|
||||||
|
await context.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<GuildWars2Build> GetBuilds()
|
||||||
|
{
|
||||||
|
using var context = _contextFactory.CreateDbContext();
|
||||||
|
return context.GuildWars2Builds.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public GuildWars2Build GetBuild(int buildId)
|
||||||
|
{
|
||||||
|
using var context = _contextFactory.CreateDbContext();
|
||||||
|
return context.GuildWars2Builds.FirstOrDefault(b => b.GuildWars2BuildId == buildId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
114
Lieb/Pages/GuildWars2/BuildEdit.razor
Normal file
114
Lieb/Pages/GuildWars2/BuildEdit.razor
Normal file
|
@ -0,0 +1,114 @@
|
||||||
|
@page "/buildedit"
|
||||||
|
@page "/buildedit/{buildId}"
|
||||||
|
@using Lieb.Data
|
||||||
|
@using Lieb.Models.GuildWars2
|
||||||
|
@using System.ComponentModel.DataAnnotations
|
||||||
|
@inject GuildWars2BuildService GuildWars2BuildService
|
||||||
|
@inject NavigationManager NavigationManager
|
||||||
|
@inject IJSRuntime JsRuntime
|
||||||
|
|
||||||
|
|
||||||
|
<h3>BuildEdit</h3>
|
||||||
|
|
||||||
|
<AuthorizeView Policy="Admin" Context="authorizationContext">
|
||||||
|
<EditForm Model="@_build" OnValidSubmit="@HandleValidSubmit">
|
||||||
|
<DataAnnotationsValidator />
|
||||||
|
<ValidationSummary />
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<label>
|
||||||
|
Build name:
|
||||||
|
<InputText @bind-Value="_build.BuildName" />
|
||||||
|
</label>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<label>
|
||||||
|
Might:
|
||||||
|
<InputNumber @bind-Value="_build.Might" />
|
||||||
|
</label>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<label>
|
||||||
|
Quickness:
|
||||||
|
<InputNumber @bind-Value="_build.Quickness" />
|
||||||
|
</label>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<label>
|
||||||
|
Alacrity:
|
||||||
|
<InputNumber @bind-Value="_build.Alacrity" />
|
||||||
|
</label>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<label>
|
||||||
|
Heal:
|
||||||
|
<InputNumber @bind-Value="_build.Heal" />
|
||||||
|
</label>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<label>
|
||||||
|
Class:
|
||||||
|
<InputSelect @bind-Value="_build.Class">
|
||||||
|
@foreach(GuildWars2Class gw2Class in Enum.GetValues(typeof(GuildWars2Class)))
|
||||||
|
{
|
||||||
|
<option value="@gw2Class">@gw2Class.ToString()</option>
|
||||||
|
}
|
||||||
|
</InputSelect>
|
||||||
|
</label>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<label>
|
||||||
|
Elite specialization:
|
||||||
|
<InputSelect @bind-Value="_build.EliteSpecialization">
|
||||||
|
@foreach(EliteSpecialization gw2EliteSpec in Enum.GetValues(typeof(EliteSpecialization)))
|
||||||
|
{
|
||||||
|
<option value="@gw2EliteSpec">@gw2EliteSpec.ToString()</option>
|
||||||
|
}
|
||||||
|
</InputSelect>
|
||||||
|
</label>
|
||||||
|
</p>
|
||||||
|
<button type="submit">Submit</button>
|
||||||
|
|
||||||
|
</EditForm>
|
||||||
|
<br/>
|
||||||
|
<button type=button @onclick="() => DeleteBuildClicked()">Delete Build</button>
|
||||||
|
</AuthorizeView>
|
||||||
|
|
||||||
|
|
||||||
|
@code {
|
||||||
|
|
||||||
|
[Parameter]
|
||||||
|
public string buildId { get; set; }
|
||||||
|
|
||||||
|
public GuildWars2Build _build;
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
if(!string.IsNullOrEmpty(buildId) && int.TryParse(buildId, out int parsedId))
|
||||||
|
{
|
||||||
|
_build = GuildWars2BuildService.GetBuild(parsedId);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_build = new GuildWars2Build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async Task DeleteBuildClicked()
|
||||||
|
{
|
||||||
|
bool confirmed = await JsRuntime.InvokeAsync<bool>("confirm", "Are you sure?");
|
||||||
|
if (confirmed)
|
||||||
|
{
|
||||||
|
await GuildWars2BuildService.DeleteBuild(_build.GuildWars2BuildId);
|
||||||
|
NavigationManager.NavigateTo("buildoverview");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task HandleValidSubmit()
|
||||||
|
{
|
||||||
|
await GuildWars2BuildService.AddOrEditBuild(_build);
|
||||||
|
NavigationManager.NavigateTo("buildoverview");
|
||||||
|
}
|
||||||
|
}
|
40
Lieb/Pages/GuildWars2/BuildOverview.razor
Normal file
40
Lieb/Pages/GuildWars2/BuildOverview.razor
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
@page "/buildoverview"
|
||||||
|
@using Lieb.Data
|
||||||
|
@using Lieb.Models.GuildWars2
|
||||||
|
@inject GuildWars2BuildService GuildWars2BuildService
|
||||||
|
|
||||||
|
|
||||||
|
<h3>BuildOverview</h3>
|
||||||
|
|
||||||
|
|
||||||
|
<AuthorizeView Policy="Admin">
|
||||||
|
<Authorized>
|
||||||
|
<div class="nav-item px-3">
|
||||||
|
<NavLink class="nav-link" href="buildedit">
|
||||||
|
<span class="oi oi-plus" aria-hidden="true"></span> Add Build
|
||||||
|
</NavLink>
|
||||||
|
</div>
|
||||||
|
@foreach (var build in _builds) {
|
||||||
|
<div class="nav-item px-3">
|
||||||
|
@{string navLink = $"buildedit/{@build.GuildWars2BuildId}";}
|
||||||
|
<NavLink class="nav-link" href="@navLink">@build.BuildName</NavLink>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</Authorized>
|
||||||
|
<NotAuthorized>
|
||||||
|
@foreach (var build in _builds) {
|
||||||
|
<div>@build.BuildName</div>
|
||||||
|
}
|
||||||
|
</NotAuthorized>
|
||||||
|
</AuthorizeView>
|
||||||
|
|
||||||
|
|
||||||
|
@code
|
||||||
|
{
|
||||||
|
private List<GuildWars2Build> _builds;
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
_builds = GuildWars2BuildService.GetBuilds();
|
||||||
|
}
|
||||||
|
}
|
|
@ -23,14 +23,9 @@ builder.Services.AddServerSideBlazor();
|
||||||
builder.Services.AddScoped<RaidService>();
|
builder.Services.AddScoped<RaidService>();
|
||||||
builder.Services.AddScoped<UserService>();
|
builder.Services.AddScoped<UserService>();
|
||||||
builder.Services.AddScoped<GuildWars2AccountService>();
|
builder.Services.AddScoped<GuildWars2AccountService>();
|
||||||
|
builder.Services.AddScoped<GuildWars2BuildService>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//builder.Services.AddTransient<RaidService>();
|
|
||||||
//builder.Services.AddTransient<UserService>();
|
|
||||||
//builder.Services.AddTransient<GuildWars2AccountService>();
|
|
||||||
|
|
||||||
builder.Services.AddAuthentication(opt =>
|
builder.Services.AddAuthentication(opt =>
|
||||||
{
|
{
|
||||||
opt.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
|
opt.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
|
||||||
|
|
|
@ -20,8 +20,8 @@
|
||||||
</NavLink>
|
</NavLink>
|
||||||
</div>
|
</div>
|
||||||
<div class="nav-item px-3">
|
<div class="nav-item px-3">
|
||||||
<NavLink class="nav-link" href="fetchdata">
|
<NavLink class="nav-link" href="buildoverview">
|
||||||
<span class="oi oi-list-rich" aria-hidden="true"></span> Fetch data
|
<span class="oi oi-list-rich" aria-hidden="true"></span> Build Overview
|
||||||
</NavLink>
|
</NavLink>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue