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.Agents; public partial class AgentDeleteDialog { [CascadingParameter(Name = "Agent")] public ViewModel? Agent { 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 (Agent is null) return; try { await Database.Agent() .DeleteOneAsync(Builders .Filter.Eq(p => p.Id, Agent.Id), cancellationToken: default).ConfigureAwait(false); await Database.Host() .UpdateOneAsync(Builders .Filter .Eq(p => p.Agent, Agent.Id), Builders .Update .Set(p => p.Agent, null)) .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; } } }