insight/src/Web/Insight.Web/Pages/Management/Scheduler/Tasks/TaskEditDialog.razor.cs

70 lines
1.8 KiB
C#
Raw Normal View History

using Insight.Infrastructure.Entities;
using Insight.Web.Constants;
using Microsoft.AspNetCore.Components;
using MongoDB.Driver;
using MudBlazor;
namespace Insight.Web.Pages.Management.Scheduler.Tasks;
public partial class TaskEditDialog
{
[Parameter] public EventCallback OnChanges { get; set; }
[Inject] private IMongoDatabase Database { get; init; } = default!;
[Inject] private ISnackbar Snackbar { get; init; } = default!;
[Inject] private ILogger<TaskEditDialog> Logger { get; init; } = default!;
private TaskEntity? _model;
public async void ToggleAsync(string? id)
{
if (id is null) return;
try
{
_model = await Database.Task().Find(p => p.Id == id).FirstAsync();
_visible = !_visible;
}
catch (Exception)
{
Notification.Error(Snackbar);
}
await InvokeAsync(StateHasChanged);
}
private async Task SubmitAsync()
{
if (_model is null) return;
try
{
await Database.Task()
.UpdateOneAsync(Builders<TaskEntity>
.Filter
.Eq(p => p.Id, _model.Id), Builders<TaskEntity>
.Update
.Set(p => p.Update, DateTime.Now)
.Set(p => p.Name, _model.Name), default);
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;
}
}
}