@using Microsoft.AspNetCore.Components.Sections @using Microsoft.EntityFrameworkCore @using CocktailWeb.Data @page "/settings/ingredients" @inject IDbContextFactory FlascheDataContextFactory; Zutaten Neue Zutat @if (IngredientsList != null && IngredientsList.Count > 0) {
@foreach (var fl in IngredientsList) { }
@fl.Name @if (fl.Alkoholisch) { } Bearbeiten @* Bearbeiten *@
} Löschen bestätigen Willst du die Zutat wirklich löschen?
Achtung, die Zutat wird auch aus den Maschineneinstellungen entfernt, falls sie dort verwendet worden sein sollte.
Löschen nicht möglich Die Zutat kann nicht gelöscht werden, da Sie noch in Cocktails verwendet wird:
@InfoText
@code { public List? IngredientsList { get; set; } private DbDataContext? _DataContext; private Flasche? SelectedIngredient; private ModalComponent dlgDelete = null!; private ModalComponent dlgInfo = null!; private string? InfoText; protected override async Task OnInitializedAsync() { await FillIngredientsList(); } public async Task FillIngredientsList() { _DataContext ??= await FlascheDataContextFactory.CreateDbContextAsync(); if (_DataContext != null) { IngredientsList = await _DataContext.Flaschen.OrderBy(f => f.Name).ToListAsync(); } } private async Task ConfirmDelete(Flasche fl) { _DataContext ??= await FlascheDataContextFactory.CreateDbContextAsync(); if (_DataContext == null) throw new Exception("Error creating DataContext"); var CocktailsWithIngredient = _DataContext.Cocktails.Include(c => c.Cocktailflaschen).Where(cf => cf.Cocktailflaschen.Any(cff => cff.Flasche == fl)).OrderBy(c => c.Name).ToList(); if (CocktailsWithIngredient.Count > 0) { InfoText = String.Join(", ", CocktailsWithIngredient.Select(c => c.Name).ToArray()); await dlgInfo.ShowAsync(); } else { SelectedIngredient = fl; await dlgDelete.ShowAsync(); } } public async Task DeleteIngredient() { _DataContext ??= await FlascheDataContextFactory.CreateDbContextAsync(); if (_DataContext != null && SelectedIngredient != null) { // Zutat aus Maschine rausnehmen (alle Filler, die die Flasche enthalten, auf null setzen) _DataContext.Fillers.Where(f => f.Flasche == SelectedIngredient)?.ForEachAsync(fil => fil.Flasche = null); _DataContext.Flaschen.Remove(SelectedIngredient); await _DataContext.SaveChangesAsync(); await FillIngredientsList(); } await CloseDialog(dlgDelete); } private async Task CloseDialog(ModalComponent dlg) { SelectedIngredient = null; await dlg.CloseAsync(); } }