@using Common.Dtos.Company @using Common.Dtos.Conversation @using Common.Dtos.Group @using HushianWebApp.Components.UserPanel @using HushianWebApp.Service @using HushianWebApp.Services @inject IJSRuntime JSRuntime @inject CompanyService companyService @inject GroupService groupService @inject ILocalStorageService localStorageService; @inject AuthService authService; @inject BaseController baseController; @inject ConversationService conversationService @layout UserPanelLayout @page "/UserPanel/{CompanyID:int}" @page "/UserPanel/{CompanyID:int}/{ConversationID:int?}"
@CompanyName / @groups.FirstOrDefault(f => f.ID == SelectedGroup)?.Name / @SelectedConversation?.ExperFullName
پاسخگویی سوالات شما هستیم
@if (!IsLogin) { } @if (IsLogin) { @if (SelectedConversation == null) { @GCContent @if (Conversations.Count > 0) { @ConversationsContent } } else { } }
@if (IsLogin && (Conversations.Count == 0 && SelectedConversation == null) || (Conversations.Count > 0 && SelectedConversation != null && SelectedConversation.status == Common.Enums.ConversationStatus.InProgress)) {
}
@code { #region Parameter [Parameter] public int CompanyID { get; set; } [Parameter] public int? ConversationID { get; set; } #endregion #region Fild public Read_ConversationDto? SelectedConversation { get; set; } = null; public List Conversations { get; set; } = new(); public List? SelectedConversationItems { get; set; } = null; public RenderFragment GCContent { get; set; } public RenderFragment ConversationsContent { get; set; } List groups = new List(); public ReadANDUpdate_CompanyDto company { get; set; } = new(); int CountQueueCompany = 0; public string CompanyName { get; set; } = "هوشیان"; public bool IsLogin { get; set; } = false; public int? SelectedGroup { get; set; } public string InputMessage { get; set; } public bool Sending { get; set; } = false; #endregion } @functions { protected override async Task OnParametersSetAsync() { if (ConversationID.HasValue && ConversationID > 0 && Conversations.Count > 0) await SelectedConv(ConversationID.Value); await base.OnParametersSetAsync(); } protected override async Task OnInitializedAsync() { await CheckOnline(); await base.OnInitializedAsync(); } async Task CheckOnline() { var token = await localStorageService.GetItem("U/key"); if (string.IsNullOrEmpty(token)) { IsLogin = false; } else { await baseController.RemoveToken(); await baseController.SetToken(token); if (!await authService.IsOnline()) { await baseController.RemoveToken(); IsLogin = false; } else { IsLogin = true; await Login(); } } } async Task CallBackSelectedGroup(int ID) { SelectedGroup = ID; StateHasChanged(); } async Task Login() { // اینجا منطق ورود کاربر را پیاده‌سازی کنید IsLogin = true; var _company = await companyService.GetCompany(CompanyID); if (_company == null) { // not Founf Company } else { if (!_company.Available) { // not Available Company } else { CompanyName = _company.FullName; company = _company; var _groups = await groupService.GetGroupsCompany(CompanyID); if (_groups != null) { CountQueueCompany = await conversationService.GetCountQueueCompany(CompanyID); groups = _groups; GCContent =@ ; Conversations = await conversationService.MyConversationUserSide(CompanyID); if (Conversations.Count > 0) ConversationsContent =@ ; } else { // ex Groups Company } } } StateHasChanged(); } async Task SelectedConv(int ID) { if (Conversations.Any(f => f.ID == ID)) { SelectedConversation = Conversations.FirstOrDefault(f => f.ID == ID); SelectedConversationItems = await conversationService.GetConversationItems(ID); SelectedGroup = SelectedConversation.GroupID; StateHasChanged(); } } private void CloseChat() { // می‌توان اینجا حالت مخفی‌سازی کامپوننت را تنظیم کرد } private void GoBack() { // برگشت به منوی قبلی یا وضعیت قبلی } async Task OnClickSendMssage() { Sending = true; if (SelectedConversation != null) { var item = new ADD_ConversationResponseDto() { ConversationID = SelectedConversation.ID, Text = InputMessage }; } else { var Item = new ADD_ConversationDto() { CompanyID = CompanyID, GroupID = SelectedGroup, Question = InputMessage }; } Sending = false; } }