insight/src/Web/Insight.Web/Pages/Management/Agents/AgentDeleteDialog.razor.cs
2023-09-21 18:58:32 +02:00

59 lines
No EOL
1.7 KiB
C#

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<AgentDeleteDialog> Logger { get; init; } = default!;
private async Task SubmitAsync()
{
if (Agent is null) return;
try
{
await Database.Agent()
.DeleteOneAsync(Builders<AgentEntity>
.Filter.Eq(p => p.Id, Agent.Id),
cancellationToken: default).ConfigureAwait(false);
await Database.Host()
.UpdateOneAsync(Builders<HostEntity>
.Filter
.Eq(p => p.Agent, Agent.Id), Builders<HostEntity>
.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;
}
}
}