Files
Hushian/Presentation/HushianWebApp/Components/GroupUsersComponent.razor

75 lines
2.6 KiB
Plaintext
Raw Normal View History

2025-07-12 21:33:44 +03:30
@using Common.Dtos.Exper
2025-07-11 20:37:28 +03:30
@using HushianWebApp.Service
@inject GroupService groupService;
@inject UserService userService;
@if (!Spinnervisible)
{
<div class="row">
<div class="col-md-12 col-sm-12" style="margin-bottom:15px">
<AutoComplete @bind-Value="ExperName"
2025-07-12 21:33:44 +03:30
TItem="Read_ExperDto"
2025-07-11 20:37:28 +03:30
DataProvider="DataProvider"
PropertyName="FullName"
Placeholder="جستجو در کاربران..."
2025-07-12 21:33:44 +03:30
OnChanged="(Read_ExperDto exper) => OnAutoCompleteChanged(exper)" />
2025-07-11 20:37:28 +03:30
</div>
</div>
2025-07-12 21:33:44 +03:30
<SortableList TItem="Read_ExperDto"
2025-07-11 20:37:28 +03:30
Data="Expers"
Context="item"
AllowSorting="false">
<ItemTemplate>
@item.FullName
<Tooltip Title="گرفتن دسترسی" role="button">
<Icon Name="IconName.Trash3" @onclick="async()=>{await UnJoin(item);}"></Icon>
</Tooltip>
</ItemTemplate>
</SortableList>
}
<div class="d-flex justify-content-center">
<Spinner Type="SpinnerType.Dots" Class="me-3" Color="SpinnerColor.Success" Visible="@Spinnervisible" />
</div>
@code {
private string? ExperName;
private bool Spinnervisible = false;
[Parameter] public int GroupID { get; set; }
2025-07-12 21:33:44 +03:30
public List<Read_ExperDto> Expers { get; set; }
2025-07-11 20:37:28 +03:30
= new();
2025-07-12 21:33:44 +03:30
public List<Read_ExperDto> CoExpers { get; set; }
2025-07-11 20:37:28 +03:30
= new();
protected override async Task OnParametersSetAsync()
{
Spinnervisible = true;
Expers = await groupService.GetExpersFromGroupID(GroupID);
Spinnervisible = false;
await base.OnParametersSetAsync();
}
}
@functions {
2025-07-12 21:33:44 +03:30
private async Task<AutoCompleteDataProviderResult<Read_ExperDto>> DataProvider(AutoCompleteDataProviderRequest<Read_ExperDto> request)
2025-07-11 20:37:28 +03:30
{
2025-07-12 21:33:44 +03:30
CoExpers = await userService.GetExpersCompany(0, 0, 0);
return await Task.FromResult(new AutoCompleteDataProviderResult<Read_ExperDto> { Data = CoExpers.Where(w => w.FullName.Contains(request.Filter.Value)), TotalCount = CoExpers.Count() });
2025-07-11 20:37:28 +03:30
}
2025-07-12 21:33:44 +03:30
private async Task OnAutoCompleteChanged(Read_ExperDto exper)
2025-07-11 20:37:28 +03:30
{
Spinnervisible = true;
if (exper != null
2025-07-12 21:33:44 +03:30
&& !Expers.Any(a => a.ID == exper.ID)
&& await groupService.JoinExperToGroup(GroupID, exper.ID) )
2025-07-11 20:37:28 +03:30
Expers.Add(exper);
Spinnervisible = false;
}
2025-07-12 21:33:44 +03:30
async Task UnJoin(Read_ExperDto exper)
2025-07-11 20:37:28 +03:30
{
Spinnervisible = true;
2025-07-12 21:33:44 +03:30
if (exper != null && await groupService.UnJoinExperToGroup(GroupID, exper.ID))
2025-07-11 20:37:28 +03:30
Expers.Remove(exper);
Spinnervisible = false;
}
}