Seenginx/Seenginx/Pages/Nginx.razor.cs

180 lines
5.9 KiB
C#
Raw Normal View History

2020-07-02 19:39:14 +02:00
using Blazored.Modal;
using Blazored.Modal.Services;
2020-04-24 00:18:16 +02:00
using Microsoft.AspNetCore.Components;
2020-07-06 01:00:48 +02:00
using Microsoft.JSInterop;
2020-04-13 23:58:26 +02:00
using Seenginx.Models;
using Seenginx.Services;
2020-07-02 19:39:14 +02:00
using Seenginx.Shared;
using Seenginx.Utility;
2020-04-13 23:58:26 +02:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Seenginx.Pages
{
public class NginxBase : ComponentBase
{
2020-07-02 19:39:14 +02:00
[Inject] public INginxService NginxService { get; set; }
2020-07-27 21:31:23 +02:00
[CascadingParameter] public IModalService Modal { get; set; }
2020-04-13 23:58:26 +02:00
public string InputSearch { get; set; }
public List<ConfigFile> ConfigFiles { get; set; } = new List<ConfigFile>();
2020-04-16 18:50:05 +02:00
public ConfigFile SelectedFile { get; set; }
public List<int> FilteredOutFiles { get; set; } = new List<int>();
2020-07-02 09:15:33 +02:00
public NotificationSettings GeneralNotificationSettings { get; set; } = null;
2020-07-02 19:39:14 +02:00
public List<Template> Templates { get; set; } = new List<Template>();
2020-04-16 18:50:05 +02:00
2020-07-01 19:36:22 +02:00
protected override async Task OnParametersSetAsync()
2020-04-13 23:58:26 +02:00
{
2020-07-01 19:36:22 +02:00
try
{
ConfigFiles.AddRange(await NginxService.GetFilesAsync());
2020-07-02 19:39:14 +02:00
Templates.AddRange(await NginxService.GetTemplates());
2020-07-01 19:36:22 +02:00
}
catch (Exception ex)
{
throw ex;
}
await base.OnParametersSetAsync();
2020-04-13 23:58:26 +02:00
}
2020-07-01 19:36:22 +02:00
public void SelectedFileChanged(ConfigFile configFile)
2020-04-16 18:50:05 +02:00
{
SelectedFile = configFile;
2020-04-13 23:58:26 +02:00
}
2020-07-06 18:01:01 +02:00
public async Task AddFileModal()
2020-04-24 00:18:16 +02:00
{
2020-07-02 19:39:14 +02:00
var parameters = new ModalParameters();
parameters.Add(nameof(Templates), Templates);
var resultAwait = Modal.Show<NginxConfigForm>(string.Empty, parameters);
var result = await resultAwait.Result;
if (result.Cancelled) return;
2020-07-01 19:36:22 +02:00
2020-07-06 18:01:01 +02:00
var validationResult = await NginxService.ValidateForAddFileAsync((NewFileForm)result.Data);
2020-07-02 19:39:14 +02:00
if (!validationResult.AllOk)
{
var validationPopupParameters = new ModalParameters().Setup(PopupType.Ok, validationResult.ErrorMessage);
var validationPopup = Modal.Show<GenericPopup>(string.Empty, validationPopupParameters);
await validationPopup.Result;
validationPopup.Close();
return;
}
2020-07-01 19:36:22 +02:00
2020-07-02 19:39:14 +02:00
var addFileResult = await NginxService.AddFileAsync((NewFileForm)result.Data);
if (SelectedFile != null)
SelectedFile.Deselect();
2020-07-01 19:36:22 +02:00
ConfigFiles.Add(addFileResult.Data);
ConfigFiles = ConfigFiles.OrderBy(cf => cf.Name).ToList();
2020-07-02 19:39:14 +02:00
SelectedFile = ConfigFiles.Find(cf => cf.Name == addFileResult.Data.Name);
SelectedFile.Select();
2020-04-24 00:18:16 +02:00
}
2020-07-06 18:01:01 +02:00
public async Task RenameFileModal()
{
var parameters = new ModalParameters();
parameters.Add(nameof(RenameForm.Name), SelectedFile.Name);
var resultAwait = Modal.Show<RenameForm>(string.Empty, parameters);
var result = await resultAwait.Result;
if (result.Cancelled) return;
var validationResult = await NginxService.ValidateForRenameFileAsync(ConfigFiles, SelectedFile, result.Data.ToString());
if (!validationResult.AllOk)
{
2020-07-29 01:31:32 +02:00
var popupAwait = Modal.Show<GenericPopup>(string.Empty, new ModalParameters().Setup(PopupType.Ok, validationResult.ErrorMessage));
2020-07-06 18:01:01 +02:00
await popupAwait.Result;
return;
}
var renameResult = await NginxService.RenameFileAsync(SelectedFile, $"{result.Data}.conf");
if (!renameResult.AllOk)
{
2020-07-29 01:31:32 +02:00
var popupAwait = Modal.Show<GenericPopup>(string.Empty, new ModalParameters().Setup(PopupType.Ok, renameResult.ErrorMessage));
2020-07-06 18:01:01 +02:00
await popupAwait.Result;
return;
}
SelectedFile.Name = result.Data.ToString();
SelectedFile.FullPath = renameResult.Data.FullPath;
2020-07-06 18:01:01 +02:00
}
2020-07-06 01:00:48 +02:00
public async Task SaveFileAsync()
2020-04-16 18:50:05 +02:00
{
2020-07-06 18:01:01 +02:00
var validationResult = await NginxService.ValidateForSaveFileAsync(SelectedFile);
if (!validationResult.AllOk)
{
await Modal.Show<GenericPopup>(string.Empty, new ModalParameters().Setup(PopupType.Ok, validationResult.ErrorMessage)).Result;
return;
}
var saveResult = await NginxService.SaveFileAsync(SelectedFile);
if (!saveResult.AllOk)
{
await Modal.Show<GenericPopup>(string.Empty, new ModalParameters().Setup(PopupType.Ok, saveResult.ErrorMessage)).Result;
return;
}
2020-04-16 18:50:05 +02:00
}
2020-05-02 18:57:42 +02:00
2020-07-06 01:00:48 +02:00
public async Task SaveDraftFileAsync()
2020-05-03 02:10:32 +02:00
{
2020-07-29 01:31:32 +02:00
//var validationResult = await NginxService.ValidateForSaveDraftFileAsync(SelectedFile);
2020-07-06 18:01:01 +02:00
2020-07-29 01:31:32 +02:00
//if (!validationResult.AllOk)
//{
// await Modal.Show<GenericPopup>(string.Empty, new ModalParameters().Setup(PopupType.Ok, validationResult.ErrorMessage)).Result;
// return;
//}
2020-07-06 18:01:01 +02:00
var saveDraftResult = await NginxService.SaveDraftFileAsync(SelectedFile);
if (!saveDraftResult.AllOk)
{
await Modal.Show<GenericPopup>(string.Empty, new ModalParameters().Setup(PopupType.Ok, saveDraftResult.ErrorMessage)).Result;
return;
}
2020-05-03 02:10:32 +02:00
}
2020-05-02 18:57:42 +02:00
2020-05-03 02:10:32 +02:00
public async Task TestConfiguration()
{
2020-07-29 01:31:32 +02:00
var testResult = await NginxService.TestFileAsync(SelectedFile);
2020-07-02 19:39:14 +02:00
2020-07-29 01:31:32 +02:00
if (!testResult.AllOk)
{
await Modal.Show<GenericPopup>(string.Empty, new ModalParameters().Setup(PopupType.Ok, $"{testResult.ErrorMessage}, ex [{testResult.Exception.Message}]")).Result;
return;
}
await Modal.Show<GenericPopup>(string.Empty, new ModalParameters().Setup(PopupType.Ok, testResult.Data)).Result;
2020-05-03 02:10:32 +02:00
}
2020-05-02 18:57:42 +02:00
2020-07-02 19:39:14 +02:00
public async Task DeleteFile()
2020-04-16 18:50:05 +02:00
{
2020-07-02 19:39:14 +02:00
var parameters = new ModalParameters().Setup(PopupType.YesNo, $"Are you sure you want to delete '{SelectedFile.Name}'?");
var resultAwait = Modal.Show<GenericPopup>(string.Empty, parameters);
var result = await resultAwait.Result;
if ((PopupAnswer)result.Data == PopupAnswer.No) return;
2020-07-06 01:00:48 +02:00
var deleteFileResult = await NginxService.DeleteFileAsync(SelectedFile);
2020-07-02 19:39:14 +02:00
if (!deleteFileResult.AllOk)
2020-07-02 09:15:33 +02:00
{
2020-07-02 19:39:14 +02:00
var errorParameters = new ModalParameters().Setup(PopupType.Ok, $"Something went wrong, here's the error message: '{deleteFileResult.ErrorMessage}'?");
var errorReportModalAwait = Modal.Show<GenericPopup>(string.Empty, errorParameters);
await errorReportModalAwait.Result;
return;
2020-07-02 09:15:33 +02:00
}
2020-05-02 18:57:42 +02:00
2020-07-02 19:39:14 +02:00
ConfigFiles.Remove(SelectedFile);
SelectedFile = null;
2020-05-03 02:10:32 +02:00
}
2020-04-13 23:58:26 +02:00
}
}