@attribute [Authorize]
@using BLAIzor.Components.Layout
@using BLAIzor.Models
@using BLAIzor.Services
@using Microsoft.AspNetCore.Components.Authorization
@layout AdminLayout
@inject ContentEditorService _contentEditorService
@inject AuthenticationStateProvider AuthenticationStateProvider
@inject CustomAuthenticationStateProvider CustomAuthProvider
@inject NotificationService notificationService
@inject DialogService dialogService
Forms linked to this site
@if (siteInfo.FormDefinitions?.Count > 0)
{
@foreach (var form in siteInfo.FormDefinitions)
{
-
@form.Title
@form.CreatedAt.ToString("yyyy-MM-dd HH:mm")
Edit
}
}
else
{
No forms added yet.
}
Add New Form
@code {
[Parameter]
public int SiteId { get; set; }
[Parameter] public Func OnSiteInfoSaveClicked { get; set; }
[Parameter] public Func OnSiteNameChanged { get; set; }
[Parameter] public Func OnCancelItemClicked { get; set; }
private EditContext EditContext;
private SiteInfo siteInfo = new();
private string? userId;
private string? userName;
private AuthenticationState? authState;
protected override Task OnInitializedAsync()
{
EditContext = new EditContext(siteInfo);
EditContext.OnFieldChanged += EditContext_OnFieldChanged;
return base.OnInitializedAsync();
}
protected override async Task OnParametersSetAsync()
{
authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
if (authState.User.Identity?.IsAuthenticated == true)
{
userId = CustomAuthProvider.GetUserId();
userName = CustomAuthProvider.GetUserName();
}
siteInfo = await _contentEditorService.GetSiteInfoWithFormsByIdAsync(SiteId) ?? new SiteInfo();
}
private async Task SaveSiteInfo()
{
await _contentEditorService.UpdateSiteInfoAsync(siteInfo);
if (OnSiteInfoSaveClicked != null)
await OnSiteInfoSaveClicked.Invoke(siteInfo);
}
private async void EditContext_OnFieldChanged(object sender, FieldChangedEventArgs e)
{
if (e.FieldIdentifier.FieldName == "SiteName")
{
//invoke SiteNameChanged
if (OnSiteNameChanged != null)
await OnSiteNameChanged.Invoke(siteInfo.SiteName);
}
}
private async Task Rechunk(SiteInfo site)
{
var confirmationResult = await dialogService.Confirm("Are you sure?", "Rechunk site", new ConfirmOptions() { OkButtonText = "Rechunk", CancelButtonText = "Oops, no" });
if (confirmationResult == true)
{
await ReallyRechunk(site);
}
else
{
//do nothing?
}
}
private async Task ReallyRechunk(SiteInfo site)
{
await _contentEditorService.ForceRecreateQdrantCollectionAsync(site.Id);
}
}