using Insight.Infrastructure; using Insight.Infrastructure.Entities; using Insight.Web.Constants; using Microsoft.AspNetCore.Components; using MongoDB.Driver; using MudBlazor; namespace Insight.Web.Pages.Management.Customers; public partial class CustomerDeleteDialog { [CascadingParameter(Name = "Customer")] public CustomerEntity? Customer { get; set; } [Parameter] public EventCallback OnChanges { get; set; } [Inject] private IMongoDatabase Database { get; init; } = default!; [Inject] private ISnackbar Snackbar { get; init; } = default!; [Inject] private ILogger Logger { get; init; } = default!; private async Task SubmitAsync() { if (Customer is null) return; try { await Database.Customer() .DeleteOneAsync(Builders .Filter.Eq(p => p.Id, Customer.Id), cancellationToken: default).ConfigureAwait(false); Notification.Success(Snackbar); if (OnChanges.HasDelegate) { await InvokeAsync(async () => { await OnChanges.InvokeAsync(this); }); } } catch (Exception ex) { Notification.Error(Snackbar); Logger.LogError(ex.ToString()); } finally { _visible = false; } } }