59 lines
No EOL
1.7 KiB
C#
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;
|
|
}
|
|
}
|
|
} |