From 96d6f5c0045a9e9dc3d8375729e1caeb7e9f5f17 Mon Sep 17 00:00:00 2001 From: mmrbnjd Date: Wed, 30 Jul 2025 23:49:51 +0330 Subject: [PATCH] ... --- Hushian.Application/Services/ChatService.cs | 40 +++++++++++++++++++ .../Controllers/v1/ChatController.cs | 11 +++++ .../Pages/FromUserSide/UserCP.razor | 2 +- .../HushianWebApp/Service/ChatService.cs | 8 +++- 4 files changed, 58 insertions(+), 3 deletions(-) diff --git a/Hushian.Application/Services/ChatService.cs b/Hushian.Application/Services/ChatService.cs index e8d0952..9c90b4d 100644 --- a/Hushian.Application/Services/ChatService.cs +++ b/Hushian.Application/Services/ChatService.cs @@ -299,5 +299,45 @@ namespace Hushian.Application.Services } return false; } + public async Task> GetLastOpenChatInCompany(int CompanyID,int UserID) + { + ResponseBase Response = new(); + Response.Value= await _ConversationRepository.Get() + .Include(inc => inc.Group) + .Include(inc => inc.ConversationResponses).ThenInclude(tinc => tinc.Exper) + .Where(w => w.UserID== UserID && w.Status != ConversationStatus.Finished) + .Select(s => new ChatItemDto() + { + ID = s.ID, + ExperID = s.ConversationResponses.OrderBy(o => o.ID).Last().ExperID, + ExperFullName = s.ConversationResponses.OrderBy(o => o.ID).Last().Exper.FullName, + GroupID = s.GroupID, + GroupName = s.Group.Name, + LastText = s.ConversationResponses.OrderBy(o => o.ID).Last().Text, + LastMsgdate = s.Cdatetime.GetDatePersian(), + LastMsgtime = s.Cdatetime.GetTime(), + LastMsgType = s.ConversationResponses.OrderBy(o => o.ID).Last().Type, + status = s.Status, + UserID = s.UserID, + UserFullName = string.IsNullOrEmpty(s.User.FullName) ? s.User.Mobile : s.User.FullName, + Responses = s.ConversationResponses.Select(ss => new ChatItemResponseDto() + { + ChatItemID = ss.ConversationID, + ExperID = ss.ExperID, + ExperName = ss.Exper.FullName, + FileContent = ss.FileContent, + FileName = ss.FileName, + FileType = ss.FileType, + ID = ss.ID, + IsRead = ss.IsRead, + text = ss.Text, + Type = ss.Type + }).ToList() + + }).FirstOrDefaultAsync(); + + if (Response.Value != null) Response.Success = true; + return Response; + } } } diff --git a/Presentation/Hushian.WebApi/Controllers/v1/ChatController.cs b/Presentation/Hushian.WebApi/Controllers/v1/ChatController.cs index c9e969f..df41909 100644 --- a/Presentation/Hushian.WebApi/Controllers/v1/ChatController.cs +++ b/Presentation/Hushian.WebApi/Controllers/v1/ChatController.cs @@ -41,6 +41,17 @@ namespace Hushian.WebApi.Controllers.v1 } return Forbid(); + } + [HttpGet("User/LastOpenChatInCompany/{CompanyID}")] + [Authorize(Roles = "User")] + public async Task GetLastOpenChatInCompany(int CompanyID) + { + string strUserID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int UserID = Convert.ToInt32(strUserID); + var response = await _chatService.GetLastOpenChatInCompany(CompanyID,UserID); + + return response.Success ? Ok(response.Value) : Accepted() ; + } [HttpGet("ChatsAwaitingOurResponse")] [Authorize(Roles = "Company,Exper")] diff --git a/Presentation/HushianWebApp/Pages/FromUserSide/UserCP.razor b/Presentation/HushianWebApp/Pages/FromUserSide/UserCP.razor index 24d5918..ec8927b 100644 --- a/Presentation/HushianWebApp/Pages/FromUserSide/UserCP.razor +++ b/Presentation/HushianWebApp/Pages/FromUserSide/UserCP.razor @@ -205,7 +205,7 @@ async Task IsLastChat() { if (CompanyInfo != null) - LastOpenChat =await ChatService.GetLastChatInCompany(CompanyID); + LastOpenChat = await ChatService.GetLastOpenChatInCompany(CompanyID); StateHasChanged(); } } diff --git a/Presentation/HushianWebApp/Service/ChatService.cs b/Presentation/HushianWebApp/Service/ChatService.cs index 3cf5b64..a3b4f16 100644 --- a/Presentation/HushianWebApp/Service/ChatService.cs +++ b/Presentation/HushianWebApp/Service/ChatService.cs @@ -73,9 +73,13 @@ namespace HushianWebApp.Service return response.IsSuccessStatusCode; } - public async Task GetLastChatInCompany(int CompanyID) + public async Task GetLastOpenChatInCompany(int CompanyID) { - return new(); + var response = await _baseController.Get($"{BaseRoute}User/LastOpenChatInCompany/{CompanyID}"); + if (response.StatusCode==System.Net.HttpStatusCode.OK) + return await response.Content.ReadFromJsonAsync(); + + return null; } } }