using Microsoft.AspNetCore.Components; using Microsoft.EntityFrameworkCore.Metadata.Internal; using Microsoft.JSInterop; using Portfolio.Domain.Features.Pokemon; namespace Portfolio.WebUI.Server.Components.Component { public partial class PokemonTable { [Parameter] public List AllPokemon { get; set; } private List pokemons = new List(); private Dictionary isShiny = new Dictionary(); protected override void OnParametersSet() { if (AllPokemon != null) { pokemons = AllPokemon.ToList(); foreach (var pokemon in pokemons) { isShiny[pokemon.Id] = false; } } } private void ToggleImage(int Id) { if (isShiny.ContainsKey(Id)) { isShiny[Id] = !isShiny[Id]; } } private async Task ConfirmDelete(int Id) { bool confirm = await JS.InvokeAsync("confirm", "Are you sure you want to delete this Pokémon?"); if (confirm) { await DeletePokemon(Id); } } private async Task DeletePokemon(int Id) { await PokemonService.DeletePokemonAsync(Id); pokemons.RemoveAll(p => p.Id == Id); // Remove from the list locally StateHasChanged(); // Refresh the UI } private void EditPokemon(int id) { Navigation.NavigateTo($"/pokemonsleep/edit/{id}"); } private string GetTypeImageUrl(string pokemonType) { if (string.IsNullOrEmpty(pokemonType)) { return "https://www.serebii.net/pokemonsleep/pokemon/type/normal.png"; // Fallback image } return $"https://www.serebii.net/pokemonsleep/pokemon/type/{pokemonType.ToLower()}.png"; } } }