From c535cb078e63471b83883c4e34c3d3b6bf13f205 Mon Sep 17 00:00:00 2001 From: mmrbnjd Date: Wed, 20 Aug 2025 14:15:10 +0330 Subject: [PATCH] ... --- .../Contracts/IMessageSender.cs | 2 +- Hushian.Application/Models/Message/Message.cs | 6 ++++ Hushian.Application/Services/ChatService.cs | 33 ++++++++++--------- Hushian.Application/Services/ExMethod.cs | 5 ++- .../Services/VerificationService.cs | 24 +++----------- .../Infrastructure/MessageSender.cs | 9 +++-- .../Pages/FromUserSide/UserCP.razor | 20 ++++++----- 7 files changed, 50 insertions(+), 49 deletions(-) diff --git a/Hushian.Application/Contracts/IMessageSender.cs b/Hushian.Application/Contracts/IMessageSender.cs index 289d8d2..6bc4eab 100644 --- a/Hushian.Application/Contracts/IMessageSender.cs +++ b/Hushian.Application/Contracts/IMessageSender.cs @@ -5,6 +5,6 @@ namespace Common.Contracts.Infrastructure { public interface IMessageSender { - Task SendMassage(Message message); + Task SendMessageVerification(string To, string Code); } } diff --git a/Hushian.Application/Models/Message/Message.cs b/Hushian.Application/Models/Message/Message.cs index 6a37494..9dac4b8 100644 --- a/Hushian.Application/Models/Message/Message.cs +++ b/Hushian.Application/Models/Message/Message.cs @@ -6,6 +6,12 @@ namespace Hushian.Application.Models.Message { public class Message { + public Message(string to, string msg) + { + To = to; + this.msg = msg; + } + public string To { get; set; } public string msg { get; set; } } diff --git a/Hushian.Application/Services/ChatService.cs b/Hushian.Application/Services/ChatService.cs index f09c5db..cf15524 100644 --- a/Hushian.Application/Services/ChatService.cs +++ b/Hushian.Application/Services/ChatService.cs @@ -4,6 +4,7 @@ using Hushian.Application.Contracts.Persistence; using Hushian.Application.Models; using Hushian.Domain.Entites; using Hushian.WebApi; +using Microsoft.AspNetCore.Components.Routing; using Microsoft.AspNetCore.Routing.Constraints; using Microsoft.AspNetCore.SignalR; using Microsoft.EntityFrameworkCore; @@ -280,20 +281,20 @@ namespace Hushian.Application.Services await _ConversationRepository.UPDATE(convModel); } if (dto.Type != ConversationType.UE) - await WriteInHubFromCompany(Response.Value, convModel.UserID); + await WriteInHubFromCompany(Response.Value, "U"+convModel.UserID); else { var modelA = convModel.ConversationResponses.OrderBy(o => o.ID) .LastOrDefault(l => l.Type == ConversationType.EU || l.Type == ConversationType.CU); if (modelA != null) { - int userid = 0; + string user =""; - if (modelA.Type == ConversationType.EU) userid = modelA.ExperID.Value; + if (modelA.Type == ConversationType.EU) user = modelA.ExperID.Value.ToString(); - else if (modelA.Type == ConversationType.CU) userid = modelA.conversation.CompanyID; + else if (modelA.Type == ConversationType.CU) user = "C"+modelA.conversation.CompanyID; - await WriteInHubFromUser(Response.Value, userid); + await WriteInHubFromUser(Response.Value, user); } @@ -386,14 +387,14 @@ namespace Hushian.Application.Services if( (await _ConversationResponseRepository.UPDATE(item)) != null) { - int userID = 0; - if (item.Type == ConversationType.EU) userID = item.ExperID.Value; + string user = ""; + if (item.Type == ConversationType.EU) user = item.ExperID.Value.ToString(); - else if (item.Type == ConversationType.CU) userID = item.conversation.CompanyID; + else if (item.Type == ConversationType.CU) user = "C" + item.conversation.CompanyID; - else if (item.Type == ConversationType.UE) userID = item.conversation.UserID; + else if (item.Type == ConversationType.UE) user = "U"+ item.conversation.UserID; - await CheckMarkAsReadInHub(item.ID, userID); + await CheckMarkAsReadInHub(item.ID, user); return true; } @@ -486,9 +487,9 @@ namespace Hushian.Application.Services if (Response.Value != null) Response.Success = true; return Response; } - public async Task WriteInHubFromCompany(ChatItemResponseDto item, int UserID) + public async Task WriteInHubFromCompany(ChatItemResponseDto item, string ToUser) { - await _hubContext.Clients.User(UserID.ToString()) + await _hubContext.Clients.User(ToUser) .SendAsync("ReceiveNewChatItemFromCompany", item); //// فرض: لیستی از کاربرانی که به گفتگو دسترسی دارند @@ -500,14 +501,14 @@ namespace Hushian.Application.Services // // .SendAsync("ReceiveNewConversation", conv.Id, conv.Title); //} } - public async Task WriteInHubFromUser(ChatItemResponseDto item, int UserID) + public async Task WriteInHubFromUser(ChatItemResponseDto item, string ToUser) { - await _hubContext.Clients.User(UserID.ToString()) + await _hubContext.Clients.User(ToUser) .SendAsync("ReceiveNewChatItemFromUser", item); } - public async Task CheckMarkAsReadInHub(int item, int UserID) + public async Task CheckMarkAsReadInHub(int item, string ToUser) { - await _hubContext.Clients.User(UserID.ToString()) + await _hubContext.Clients.User(ToUser) .SendAsync("CheckMarkAsRead", item); } public async Task NewChatInHub(int CompanyID) diff --git a/Hushian.Application/Services/ExMethod.cs b/Hushian.Application/Services/ExMethod.cs index 73b4b66..656e081 100644 --- a/Hushian.Application/Services/ExMethod.cs +++ b/Hushian.Application/Services/ExMethod.cs @@ -27,7 +27,10 @@ namespace Hushian.Application.Services { var claims = new[] { - new Claim(JwtRegisteredClaimNames.Sub,userId.ToString()), + new Claim(JwtRegisteredClaimNames.Sub, + Role=="User" ? "U"+userId.ToString() + :Role=="Company" ? "C"+userId.ToString() + :userId.ToString()), new Claim(ClaimTypes.NameIdentifier, UserName), new Claim(CustomClaimTypes.Uid,userId.ToString()), new Claim(ClaimTypes.Role, Role) diff --git a/Hushian.Application/Services/VerificationService.cs b/Hushian.Application/Services/VerificationService.cs index e4ac47b..8917451 100644 --- a/Hushian.Application/Services/VerificationService.cs +++ b/Hushian.Application/Services/VerificationService.cs @@ -45,11 +45,7 @@ namespace Hushian.Application.Services string Code = await GenerateCode(); var response= await _VerificationCodeRepository.ADD (new Identity.Models.VerificationCode(VerificationCodeType.Login, Code, Mobile)); - await _messageSender.SendMassage(new Models.Message.Message() - { - msg = Code, - To = Mobile - }); + await _messageSender.SendMessageVerification(Mobile, Code); return response.ID; } public async Task GenerateCodeByPhoneNumberConfirmed(string Mobile) @@ -57,11 +53,7 @@ namespace Hushian.Application.Services string Code = await GenerateCode(); var response = await _VerificationCodeRepository.ADD (new Identity.Models.VerificationCode(VerificationCodeType.PhoneNumberConfirmed, Code, Mobile)); - await _messageSender.SendMassage(new Models.Message.Message() - { - msg = Code, - To = Mobile - }); + await _messageSender.SendMessageVerification(Mobile, Code); return response.ID; } public async Task GenerateCodeByForgetPassword(string Mobile) @@ -69,11 +61,7 @@ namespace Hushian.Application.Services string Code = await GenerateCode(); var response = await _VerificationCodeRepository.ADD (new Identity.Models.VerificationCode(VerificationCodeType.ForgetPassword, Code, Mobile)); - await _messageSender.SendMassage(new Models.Message.Message() - { - msg = Code, - To = Mobile - }); + await _messageSender.SendMessageVerification(Mobile, Code); return response.ID; } public async Task> VerificationCode(ConfirmedCodeDto model) @@ -193,11 +181,7 @@ namespace Hushian.Application.Services } else { - return await _messageSender.SendMassage(new Models.Message.Message() - { - msg = model.Code, - To = model.Mobile - }); + return await _messageSender.SendMessageVerification(model.Mobile, model.Code); } } private async Task GenerateCode() diff --git a/Infrastructure/Infrastructure/MessageSender.cs b/Infrastructure/Infrastructure/MessageSender.cs index d44deca..61d32a9 100644 --- a/Infrastructure/Infrastructure/MessageSender.cs +++ b/Infrastructure/Infrastructure/MessageSender.cs @@ -14,11 +14,14 @@ namespace Hushian.Infrastructure _restClient = restClient; _msgSettings = msgSettings.Value; } - - public Task SendMassage(Message message) + public async Task SendMessageVerification(string To,string Code) + { + return await SendMassage(new Message(To,$"برای ادامه از کد {Code} استفاده کنید")); + } + private Task SendMassage(Message message) { string From = _msgSettings.From; - // _restClient.Send(message.To, From, message.msg, false); + _restClient.Send(message.To, From, message.msg, false); return Task.Run(()=>true); } } diff --git a/Presentation/HushianWebApp/Pages/FromUserSide/UserCP.razor b/Presentation/HushianWebApp/Pages/FromUserSide/UserCP.razor index 35d9e3d..8ffec98 100644 --- a/Presentation/HushianWebApp/Pages/FromUserSide/UserCP.razor +++ b/Presentation/HushianWebApp/Pages/FromUserSide/UserCP.razor @@ -7,7 +7,10 @@ @using HushianWebApp.Services @using Microsoft.AspNetCore.SignalR.Client; @using System.Threading; -گفتگو با @CompanyInfo.FullName +@if(CompanyInfo!=null) +{ +گفتگو با @CompanyInfo?.FullName +} @inject NavigationManager NavigationManager @inject ChatService ChatService @inject ILocalStorageService localStorageService; @@ -131,12 +134,12 @@ هوشیان

- @if (CompanyGroups != null && CompanyGroups.Any()) + @if (CompanyGroups != null && CompanyGroups.Any(w => w.Available)) {
انتخاب گروه:
- @foreach (var group in CompanyGroups) + @foreach (var group in CompanyGroups.Where(w=>w.Available)) {
@@ -162,7 +165,7 @@
- @if (LastOpenChat == null || (LastOpenChat != null && LastOpenChat.status != Common.Enums.ConversationStatus.Finished && LastOpenChat.Responses != null)) + @if (CompanyInfo != null && (LastOpenChat == null || (LastOpenChat != null && LastOpenChat.status != Common.Enums.ConversationStatus.Finished && LastOpenChat.Responses != null))) {
@@ -270,7 +273,7 @@ ReadANDUpdate_CompanyDto? CompanyInfo = new(); Common.Dtos.CurrentUserInfo CurrentUser = new(); List CompanyGroups = new(); - ChatItemDto? LastOpenChat = new(); + ChatItemDto? LastOpenChat = null; string MsgInput = string.Empty; IBrowserFile? SelectedImageFile = null; byte[]? SelectedImageBytes = null; @@ -367,7 +370,7 @@ IsRecording = false; recordingTimer?.Dispose(); recordingTimer = null; - await ClearSelectedImage(); + await ClearSelectedImage(); StateHasChanged(); } } @@ -566,8 +569,8 @@ { CompanyInfo = await companyService.GetCompany(CompanyID); if (CompanyInfo != null) - CompanyGroups = await groupService.GetGroupsCompany(CompanyID); - await IsLastChat(); + { CompanyGroups = await groupService.GetGroupsCompany(CompanyID); + await IsLastChat();} } async Task IsLastChat() { @@ -594,6 +597,7 @@ [JSInvokable] public async Task MarkAsRead(int id) { + if (LastOpenChat == null) return; var msg = LastOpenChat.Responses.FirstOrDefault(m => m.ID == id); if (msg != null && !msg.IsRead && msg.Type != Common.Enums.ConversationType.UE) {