Update game
All checks were successful
Game Ideas build for PR / build_test (pull_request) Successful in 50s
All checks were successful
Game Ideas build for PR / build_test (pull_request) Successful in 50s
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
<div class="container">
|
||||
<div class="input-game">
|
||||
<div id="first-label" class="label">@ResourcesKey.Title :</div>
|
||||
<InputText class="title" @bind-Value=GameDto.Title/>
|
||||
<InputText class="title" @bind-Value=GameDto.Title/>
|
||||
</div>
|
||||
<div class="input-game">
|
||||
<div class="label">@ResourcesKey.ReleaseDate :</div>
|
||||
@@ -44,21 +44,21 @@
|
||||
<div class="input-game">
|
||||
<div class="label">@ResourcesKey.Properties :</div>
|
||||
<SelectSearch TItem="PropertyDto" Theme="Theme" GetLabel="@(i => i.Label)" QuickAdd=true
|
||||
Items="Categories?.Properties" @bind-Values=GameDto.Properties
|
||||
AddItem="@(str => new PropertyDto() { Label = str })" />
|
||||
Items="Categories?.Properties" @bind-Values=GameDto.Properties
|
||||
AddItem="@(str => new PropertyDto() { Label = str })" />
|
||||
</div>
|
||||
<div class="input-game">
|
||||
<div class="label">@ResourcesKey.Tags :</div>
|
||||
<SelectSearch TItem="TagDto" Theme="Theme" GetLabel="@(i => i.Label)" QuickAdd=true
|
||||
Items="Categories?.Tags" @bind-Values=GameDto.Tags
|
||||
AddItem="@(str => new TagDto() { Label = str })" />
|
||||
Items="Categories?.Tags" @bind-Values=GameDto.Tags
|
||||
AddItem="@(str => new TagDto() { Label = str })" />
|
||||
|
||||
</div>
|
||||
<div class="input-game">
|
||||
<div class="label">@ResourcesKey.Platforms :</div>
|
||||
<SelectSearch TItem="PlatformDto" Theme="Theme" GetLabel="@(i => i.Label)" QuickAdd=true
|
||||
Items="Categories?.Platforms" @bind-Values=GameDto.Platforms
|
||||
AddItem="@(str => new PlatformDto() { Label = str })" />
|
||||
Items="Categories?.Platforms" @bind-Values=GameDto.Platforms
|
||||
AddItem="@(str => new PlatformDto() { Label = str })" />
|
||||
</div>
|
||||
|
||||
@foreach (var platform in GameDto.Platforms ?? [])
|
||||
|
||||
@@ -3,6 +3,8 @@ using GameIdeas.BlazorApp.Pages.Games.Gateways;
|
||||
using GameIdeas.BlazorApp.Shared.Components.Popup;
|
||||
using GameIdeas.BlazorApp.Shared.Components.Select.Models;
|
||||
using GameIdeas.BlazorApp.Shared.Components.Slider;
|
||||
using GameIdeas.BlazorApp.Shared.Exceptions;
|
||||
using GameIdeas.Resources;
|
||||
using GameIdeas.Shared.Dto;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Components.Authorization;
|
||||
@@ -19,22 +21,25 @@ public partial class GameCreationForm
|
||||
[CascadingParameter] private Popup? Popup { get; set; }
|
||||
[Parameter] public CategoriesDto? Categories { get; set; }
|
||||
[Parameter] public EventCallback OnSubmit { get; set; }
|
||||
|
||||
private readonly GameDetailDto GameDto = new();
|
||||
[Parameter] public int? GameIdToUpdate { get; set; }
|
||||
|
||||
private GameDetailDto GameDto = new();
|
||||
private EditContext? EditContext;
|
||||
private readonly SelectTheme Theme = SelectTheme.Creation;
|
||||
private readonly SliderParams SliderParams = new() { Gap = 1, Min = 1, Max = 5 };
|
||||
private bool IsLoading = false;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
EditContext = new(GameDto);
|
||||
await base.OnInitializedAsync();
|
||||
IsLoading = GameIdToUpdate != null;
|
||||
base.OnInitialized();
|
||||
}
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
{
|
||||
await Js.InvokeVoidAsync("resizeGameForm");
|
||||
await SetGameToUpdate();
|
||||
}
|
||||
|
||||
private void HandleOnCancel()
|
||||
@@ -53,15 +58,22 @@ public partial class GameCreationForm
|
||||
{
|
||||
IsLoading = true;
|
||||
|
||||
int gameId;
|
||||
var authState = await AuthenticationState.GetAuthenticationStateAsync();
|
||||
GameHelper.WriteTrackingDto(GameDto, authState);
|
||||
|
||||
var gameId = await GameGateway.CreateGame(GameDto);
|
||||
|
||||
if (gameId != 0)
|
||||
if (GameDto.Id != null)
|
||||
{
|
||||
Popup?.Close();
|
||||
await OnSubmit.InvokeAsync();
|
||||
gameId = await GameGateway.UpdateGame(GameDto);
|
||||
}
|
||||
else
|
||||
{
|
||||
gameId = await GameGateway.CreateGame(GameDto);
|
||||
}
|
||||
|
||||
if (gameId == 0)
|
||||
{
|
||||
throw new GameCreationException(ResourcesKey.ErrorCreateGame);
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
@@ -73,13 +85,45 @@ public partial class GameCreationForm
|
||||
IsLoading = false;
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
Popup?.Close();
|
||||
|
||||
await OnSubmit.InvokeAsync();
|
||||
}
|
||||
|
||||
private void HandlePublisherChanged(List<PublisherDto> pubs)
|
||||
{
|
||||
GameDto.Publisher = pubs.FirstOrDefault();
|
||||
}
|
||||
|
||||
private void HandleDeveloperChanged(List<DeveloperDto> devs)
|
||||
{
|
||||
GameDto.Developer = devs.FirstOrDefault();
|
||||
}
|
||||
|
||||
private async Task SetGameToUpdate()
|
||||
{
|
||||
if (GameIdToUpdate == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
IsLoading = true;
|
||||
|
||||
GameDto = await GameGateway.GetGameById(GameIdToUpdate ?? 0);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
throw new FetchGameDetailException(ResourcesKey.ErrorFetchDetail);
|
||||
}
|
||||
finally
|
||||
{
|
||||
IsLoading = false;
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
EditContext = new(GameDto);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user