1
0
mirror of https://github.com/akpaevj/onecmonitor.git synced 2024-12-14 10:12:52 +02:00
onecmonitor/onecmonitor-server/Controllers/LogTemplatesController.cs
2023-01-27 20:58:44 +03:00

102 lines
3.3 KiB
C#

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.DotNet.Scaffolding.Shared.Project;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using OnecMonitor.Server.Models;
using OnecMonitor.Server.ViewModels.Log;
using OnecMonitor.Server.ViewModels.Log.Index;
using System.Runtime.InteropServices;
using System.Threading;
namespace OnecMonitor.Server.Controllers
{
public class LogTemplatesController : Controller
{
private readonly AppDbContext _appDbContext;
public LogTemplatesController(AppDbContext appDbContext)
{
_appDbContext = appDbContext;
}
public async Task<IActionResult> Index(CancellationToken cancellationToken)
{
var logTemplates = await _appDbContext.LogTemplates.AsNoTracking().ToListAsync(cancellationToken);
var viewModel = new LogTemplatesIndexViewModel
{
Items = logTemplates.Select(c => new LogTemplatesListItemViewModel()
{
Id = c.Id,
Name = c.Name,
}).ToList()
};
return View(viewModel);
}
public async Task<IActionResult> Edit(Guid id, bool copy = false, CancellationToken cancellationToken = default)
{
var viewModel = new LogTemplateEditViewModel();
if (id != Guid.Empty)
{
var item = await _appDbContext.LogTemplates.AsNoTracking().SingleAsync(c => c.Id == id, cancellationToken);
viewModel.Id = copy ? Guid.Empty : item!.Id;
viewModel.Name = item.Name + (copy ? " (copy)" : "");
viewModel.Content = item!.Content;
if (copy)
HttpContext.Request.RouteValues.Remove("copy");
return View(viewModel);
}
else
return View(viewModel);
}
[HttpPost]
public async Task<IActionResult> Edit(Guid id, LogTemplateEditViewModel log, CancellationToken cancellationToken)
{
if (id == Guid.Empty)
{
var model = new LogTemplate()
{
Id = Guid.NewGuid(),
Name = log.Name,
Content = log.Content?.Trim() ?? ""
};
await _appDbContext.LogTemplates.AddAsync(model, cancellationToken);
}
else
{
var model = await _appDbContext.LogTemplates.FirstOrDefaultAsync(c => c.Id == id, cancellationToken)!;
if (model is not null)
{
model.Name = log.Name;
model.Content = log.Content?.Trim() ?? "";
}
}
await _appDbContext.SaveChangesAsync(cancellationToken);
return Redirect("/LogTemplates");
}
public async Task<IActionResult> Delete(Guid id)
{
var logTemplate = _appDbContext.LogTemplates.FirstOrDefault(c => c.Id == id);
_appDbContext.LogTemplates.Remove(logTemplate!);
await _appDbContext.SaveChangesAsync();
return Redirect("/LogTemplates");
}
}
}