Files
Moonlight/Moonlight/Shared/Components/Modals/ManageServiceShareModal.razor
2023-10-23 13:27:49 +02:00

105 lines
3.7 KiB
Plaintext

@using Moonlight.App.Services.ServiceManage
@using Moonlight.App.Database.Entities.Store
@using BlazorTable
@using Moonlight.App.Models.Forms.Services
@inject ServiceService ServiceService
<SmartModal @ref="Modal" CssClasses="modal-dialog-centered modal-lg">
<div class="modal-header">
<h5 class="modal-title fs-3">Manage shared users</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<LazyLoader @ref="LazyLoader" Load="Load">
<div class="mb-3">
<SmartForm Model="Form" OnValidSubmit="Add">
<div class="input-group">
<input @bind="Form.Username" type="text" placeholder="Enter a username..." class="form-control"/>
<button type="submit" class="btn btn-primary">Add</button>
</div>
</SmartForm>
</div>
@if (Users.Any())
{
<Table TableItem="User"
Items="Users"
PageSize="50"
TableClass="table table-row-bordered table-row-gray-100 align-middle gs-0 gy-3 fs-6"
TableHeadClass="fw-bold text-muted">
<Column TableItem="User" Title="" Field="@(x => x.Id)" Sortable="false" Filterable="false">
<Template>
<div class="symbol symbol-50px me-5">
@if (context.Avatar == null)
{
<img src="/assets/img/avatar.png" alt="Avatar">
}
else
{
<img src="/api/bucket/avatars/@(context.Avatar)" alt="Avatar">
}
</div>
<span class="ms-3">@(context.Username)</span>
</Template>
</Column>
<Column TableItem="User" Title="" Field="@(x => x.Id)" Sortable="false" Filterable="false">
<Template>
<div class="text-end me-3">
<a @onclick="() => Remove(context)" @onclick:preventDefault href="#" class="text-danger">Remove</a>
</div>
</Template>
</Column>
</Table>
}
else
{
<div class="d-flex justify-content-center py-4">
<span class="mt-3 fs-5">No users found</span>
</div>
}
</LazyLoader>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
</div>
</SmartModal>
@code
{
[Parameter]
public Service Service { get; set; }
private SmartModal Modal;
private LazyLoader LazyLoader;
private User[] Users;
private AddUserToServiceForm Form = new();
private async Task Load(LazyLoader _)
{
Users = await ServiceService.GetSharedUsers(Service);
}
private async Task Add()
{
await ServiceService.AddSharedUser(Service, Form.Username);
Form = new();
await LazyLoader.Reload();
}
private async Task Remove(User user)
{
await ServiceService.RemoveSharedUser(Service, user);
await LazyLoader.Reload();
}
public async Task Show()
{
await Modal.Show();
}
public async Task Hide()
{
await Modal.Hide();
}
}