This commit is contained in:
mmrbnjd
2025-07-26 16:52:59 +03:30
parent 258df5b360
commit 71f06b8ee8
7 changed files with 52 additions and 31 deletions

View File

@@ -61,7 +61,8 @@ namespace Hushian.Application.Services
GroupID = dto.GroupID,
ConversationResponses = new List<ConversationResponse>() { new() { Text = dto.Question, Type = type } }
};
Response.Value = (await _ConversationRepository.ADD(conversation)).ID;
var mi = await _ConversationRepository.ADD(conversation);
Response.Value = mi.ID;
Response.Success = Response.Value > 0;
}
else Response.Errors.Add("شناسه گروه صحیح نمی باشد");
@@ -139,7 +140,7 @@ namespace Hushian.Application.Services
NoReadCount = s.ConversationResponses.Count(c => !c.IsRead),
status = s.Status,
UserID = s.UserID,
UserFullName = s.User.FullName
UserFullName = string.IsNullOrEmpty(s.User.FullName) ? s.User.Mobile : s.User.FullName
}).ToListAsync();
public async Task<List<Read_ConversationResponseDto>> GetConversationItems(int ConversationID)
@@ -170,6 +171,7 @@ namespace Hushian.Application.Services
.Where(w => w.ConversationResponses.Any(a => a.ExperID == ExperID) && w.Status == status)
.Select(s => new Read_ConversationDto()
{
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,
@@ -181,7 +183,7 @@ namespace Hushian.Application.Services
NoReadCount = s.ConversationResponses.Count(c => !c.IsRead),
status = s.Status,
UserID = s.UserID,
UserFullName = s.User.FullName
UserFullName = string.IsNullOrEmpty(s.User.FullName) ? s.User.Mobile : s.User.FullName
}).ToListAsync();
public async Task<List<Read_ConversationDto>> GetConversationByCompanyID(int CompanyID, ConversationStatus status)
@@ -191,6 +193,7 @@ namespace Hushian.Application.Services
.Where(w => w.CompanyID==CompanyID && w.Status ==status)
.Select(s => new Read_ConversationDto()
{
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,
@@ -202,7 +205,7 @@ namespace Hushian.Application.Services
NoReadCount = s.ConversationResponses.Count(c => !c.IsRead),
status = s.Status,
UserID = s.UserID,
UserFullName = s.User.FullName
UserFullName = string.IsNullOrEmpty(s.User.FullName) ? s.User.Mobile : s.User.FullName
}).ToListAsync();
public async Task<List<Read_ConversationDto>> ConversationAwaitingOurResponse(int CompanyID)
@@ -212,6 +215,7 @@ namespace Hushian.Application.Services
.Where(w => w.Status== ConversationStatus.Recorded && w.CompanyID == CompanyID)
.Select(s => new Read_ConversationDto()
{
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,
@@ -223,7 +227,7 @@ namespace Hushian.Application.Services
NoReadCount = s.ConversationResponses.Count(c => !c.IsRead),
status = s.Status,
UserID = s.UserID,
UserFullName = s.User.FullName
UserFullName = string.IsNullOrEmpty(s.User.FullName) ? s.User.Mobile : s.User.FullName
}).ToListAsync();
public async Task<bool> FinishConversation(int ConversationID)

View File

@@ -24,7 +24,7 @@ namespace Hushian.Persistence.Repositories
try
{
await _context.AddAsync(entity);
if ((await _context.SaveChangesAsync() == 1))
if ((await _context.SaveChangesAsync() >= 1))
return entity;
return null;

View File

@@ -25,7 +25,7 @@ namespace Hushian.WebApi.Controllers.v1
[HttpPost("MyConversation")]
[Authorize(Roles = "Company,Exper")]
public async Task<ActionResult> MyConversation(ConversationStatus status)
public async Task<ActionResult> MyConversation([FromBody]ConversationStatus status)
{
if (User.IsInRole("Exper"))
{
@@ -76,7 +76,7 @@ namespace Hushian.WebApi.Controllers.v1
[HttpPost("NewConversationFromCurrentUser")]
public async Task<ActionResult> NewConversationFromCurrentUser(ADD_ConversationDto conversation)
{
string UserID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
conversation.UserID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => Convert.ToInt32( s.Value)).First();
var response = await _conversationService.NewConversation(conversation);
return response.Success ? Ok(response.Value)
: BadRequest(response.Errors);
@@ -156,7 +156,7 @@ namespace Hushian.WebApi.Controllers.v1
{
string strUserID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First();
int UserID = Convert.ToInt32(strUserID);
var response = await _conversationService.GEtConversation(CompanyID, UserID);
var response = await _conversationService.GEtConversation(UserID,CompanyID );
return Ok(response) ;
}
}

View File

@@ -22,7 +22,7 @@
VisuallyHiddenText="unread messages">@item.NoReadCount </Badge>
}
}
</Card>
</div>

View File

@@ -239,11 +239,11 @@
@functions{
protected override async Task OnInitializedAsync()
{
Role = await localStorageService.GetItem<string>("Role");
Role = await localStorageService.GetItem<string>("C/Role");
UserID= await localStorageService.GetItem<int>("UserID");
UserID= await localStorageService.GetItem<int>("C/UserID");
convloading = true;
await LoadSessionB();
Inbox1Items =await conversationService.ConversationAwaitingOurResponse();

View File

@@ -20,10 +20,10 @@
<span>
<strong>@CompanyName / @groups.FirstOrDefault(f => f.ID == SelectedGroup)?.Name / @SelectedConversation?.ExperFullName</strong><br />
<Badge Color="BadgeColor.Danger"
Position="Position.Absolute"
Placement="BadgePlacement.TopRight"
IndicatorType="BadgeIndicatorType.RoundedPill"
VisuallyHiddenText="status"></Badge>
Position="Position.Absolute"
Placement="BadgePlacement.TopRight"
IndicatorType="BadgeIndicatorType.RoundedPill"
VisuallyHiddenText="status"></Badge>
<small>پاسخگویی سوالات شما هستیم</small>
</span>
<button class="btn-close btn-close-white" @onclick="CloseChat"></button>
@@ -39,7 +39,7 @@
@if (SelectedConversation == null)
{
<button class="btn btn-outline-secondary btn-sm mt-2"
@onclick="()=> {SelectedGroup=0; StateHasChanged();}" style="margin-left:5px;margin-bottom:5px">
@onclick="()=> {SelectedGroup=0; StateHasChanged();}" style="margin-left:5px;margin-bottom:5px">
شرکت @CompanyName (@CountQueueCompany)
</button>
@GCContent
@@ -75,14 +75,14 @@
</div>
<style>
.chat-box-expanded {
position: fixed;
bottom: 50%;
right: 50%;
transform: translate(50%, 50%);
width: 90vw;
height: 80%;
z-index: 1051;
transition: all 0.3s ease;
position: fixed;
bottom: 50%;
right: 50%;
transform: translate(50%, 50%);
width: 90vw;
height: 80%;
z-index: 1051;
transition: all 0.3s ease;
}
</style>
@@ -180,17 +180,17 @@
CompanyID=CompanyID
OnMultipleOfThree="EventCallback.Factory.Create<int>(this, CallBackSelectedGroup)" />
;
Conversations = await conversationService.MyConversationUserSide(CompanyID);
if (Conversations.Count > 0)
ConversationsContent =@<ConversionHistoryComponent Conversations="Conversations"
OnMultipleOfThree="EventCallback.Factory.Create<int>(this, SelectedConv)" />
;
}
else
{
// ex Groups Company
}
Conversations = await conversationService.MyConversationUserSide(CompanyID);
if (Conversations.Count > 0)
ConversationsContent =@<ConversionHistoryComponent Conversations="Conversations"
OnMultipleOfThree="EventCallback.Factory.Create<int>(this, SelectedConv)" />
;
}
}
@@ -235,7 +235,15 @@
GroupID = SelectedGroup,
Question = InputMessage
};
var convID= await conversationService.NewConversationFromCurrentUser(Item);
if (convID >0)
{
ConversationID = convID;
await SelectedConv(ConversationID.Value);
}
}
InputMessage = string.Empty;
Sending = false;
}
}

View File

@@ -1,5 +1,6 @@
using Common.Dtos.Conversation;
using Common.Enums;
using System.ComponentModel.Design;
using System.Net.Http.Json;
namespace HushianWebApp.Service
@@ -82,5 +83,13 @@ namespace HushianWebApp.Service
return new();
}
public async Task<int> NewConversationFromCurrentUser(ADD_ConversationDto conversation)
{
var response = await _baseController.Post($"{BaseRoute}NewConversationFromCurrentUser", conversation);
if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<int>();
return -1;
}
}
}