2020-07-02 19:39:14 +02:00
|
|
|
|
using Blazored.Modal;
|
|
|
|
|
using Blazored.Modal.Services;
|
|
|
|
|
using Blazorise;
|
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; }
|
|
|
|
|
[Inject] public IFileManager FileService { get; set; }
|
|
|
|
|
[Inject] 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-02 19:39:14 +02:00
|
|
|
|
public async Task ShowAddFileModal()
|
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-02 19:39:14 +02:00
|
|
|
|
var validationResult = await NginxService.ValidateNewConfigurationAsync((NewFileForm)result.Data);
|
|
|
|
|
|
|
|
|
|
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 01:00:48 +02:00
|
|
|
|
public async Task SaveFileAsync()
|
2020-04-16 18:50:05 +02:00
|
|
|
|
{
|
2020-07-06 01:00:48 +02:00
|
|
|
|
var saveUpdateResult = await FileService.SaveFileAsync(SelectedFile);
|
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-06 01:00:48 +02:00
|
|
|
|
var saveUpdateDraftResult = await FileService.SaveDraftFileAsync(SelectedFile);
|
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-02 19:39:14 +02:00
|
|
|
|
|
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
|
|
|
|
}
|
|
|
|
|
}
|