Files
BackOffice/src/BackOffice/Pages/AutoComplete/UserAutoComplete.razor.cs
T
masoodafar-web 8d9942ddc2
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 3m9s
Refactor: Update Protobuf references to CMSMicroservice across User, UserAddress, UserOrder, UserRole, and related services
- Changed Protobuf imports from BackOffice.BFF to CMSMicroservice for User, UserAddress, UserOrder, UserRole components and services.
- Updated appsettings for direct connection to CMS, removing BFF references.
- Adjusted logic in services to accommodate new Protobuf structure and fields.
- Moved documentation to totalDoc directory.
2026-02-10 22:05:13 +03:30

90 lines
2.7 KiB
C#

using CMSMicroservice.Protobuf.Protos.User;
using Grpc.Core;
using Microsoft.AspNetCore.Components;
namespace BackOffice.Pages.AutoComplete;
public partial class UserAutoComplete
{
[Inject] public UserContract.UserContractClient UserContract { get; set; }
[Parameter] public string Label { get; set; } = "انتخاب کاربر";
[Parameter] public long? SelectedUserId { get; set; }
[Parameter] public EventCallback<long?> SelectedUserIdChanged { get; set; }
private GetAllUserByFilterResponseModel _item;
protected override async Task OnParametersSetAsync()
{
if (SelectedUserId.HasValue && SelectedUserId.Value > 0 && _item?.Id != SelectedUserId.Value)
{
await LoadUser(SelectedUserId.Value);
}
}
private async Task<IEnumerable<GetAllUserByFilterResponseModel>> Search(string value, CancellationToken cancellationToken)
{
if (string.IsNullOrWhiteSpace(value) || value.Length < 2)
return new List<GetAllUserByFilterResponseModel>();
try
{
var request = new GetAllUserByFilterRequest
{
PaginationState = new() { PageNumber = 1, PageSize = 100 },
Filter = new()
{
SearchText = value,
}
};
var response = await UserContract.GetAllUserByFilterAsync(request, cancellationToken: cancellationToken);
return response.Models?.ToList() ?? new List<GetAllUserByFilterResponseModel>();
}
catch (RpcException ex) when (ex.StatusCode == StatusCode.Cancelled)
{
return new List<GetAllUserByFilterResponseModel>();
}
catch
{
return new List<GetAllUserByFilterResponseModel>();
}
}
private async Task OnSelected(GetAllUserByFilterResponseModel selected)
{
_item = selected;
var userId = selected?.Id;
SelectedUserId = userId;
await SelectedUserIdChanged.InvokeAsync(userId);
}
private async Task LoadUser(long userId)
{
try
{
var request = new GetAllUserByFilterRequest
{
PaginationState = new() { PageNumber = 1, PageSize = 1 },
Filter = new()
{
Id = userId
}
};
var response = await UserContract.GetAllUserByFilterAsync(request);
if (response.Models != null && response.Models.Count > 0)
{
_item = response.Models[0];
}
}
catch
{
// Silent fail
}
}
}