Files
Hushian/Presentation/HushianWebApp/Service/ConversationService.cs
mmrbnjd 067607d98a ...
2025-08-18 14:18:08 +03:30

120 lines
4.9 KiB
C#

using Common.Dtos.Conversation;
using Common.Dtos;
using Common.Enums;
using System.ComponentModel.Design;
using System.Net.Http.Json;
namespace HushianWebApp.Service
{
public class ConversationService
{
private readonly BaseController _baseController;
const string BaseRoute = "v1/Conversation/";
public ConversationService(BaseController baseController)
{
_baseController = baseController;
}
public async Task <List<Read_ConversationDto>> MyConversationIsFinished()
{
var response = await _baseController.Post($"{BaseRoute}MyConversation", ConversationStatus.Finished);
if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<List<Read_ConversationDto>>();
return new() ;
}
public async Task<List<Read_ConversationDto>> MyConversationIsInProgress()
{
var response = await _baseController.Post($"{BaseRoute}MyConversation", ConversationStatus.InProgress);
if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<List<Read_ConversationDto>>();
return new();
}
public async Task<List<Read_ConversationDto>> ConversationAwaitingOurResponse()
{
var response = await _baseController.Get($"{BaseRoute}ConversationAwaitingOurResponse");
if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<List<Read_ConversationDto>>();
return new();
}
public async Task<bool> MarkAsReadConversationItemAsync(int ID)
{
var response = await _baseController.Put($"{BaseRoute}MarkAsReadConversationItem/{ID}");
return response.IsSuccessStatusCode;
}
public async Task<List<Read_ConversationResponseDto>> GetConversationItems(int ConversationID)
{
var response = await _baseController.Get($"{BaseRoute}ConversationItems/{ConversationID}");
if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<List<Read_ConversationResponseDto>>();
return new();
}
public async Task<Read_ConversationResponseDto?> ADDConversationItem(int ConversationID,string text, ConversationType type)
{
var response = await _baseController.Post($"{BaseRoute}ADDConversationResponse",new ADD_ConversationResponseDto()
{
ConversationID = ConversationID,
Text=text,
Type=type
});
if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<Read_ConversationResponseDto>();
return null;
}
public async Task<bool> ConversationIsFinish(int ConversationID)
{
var response = await _baseController.Put($"{BaseRoute}ConversationIsFinish/{ConversationID}");
return response.IsSuccessStatusCode;
}
public async Task<int> GetCountQueueCompany(int CompanyID,int GroupID=0)
{
var response = await _baseController.Get($"{BaseRoute}CountQueueCompany/{CompanyID}?GroupID={GroupID}");
if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<int>();
return -1;
}
public async Task<List<Read_ConversationDto>> MyConversationUserSide(int CompanyID)
{
var response = await _baseController.Get($"{BaseRoute}ConversationFromUserSide/{CompanyID}");
if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<List<Read_ConversationDto>>();
return new();
}
public async Task<Read_ConversationDto> NewConversationFromCurrentUser(ADD_ConversationDto conversation)
{
var response = await _baseController.Post($"{BaseRoute}NewConversationFromCurrentUser", conversation);
if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<Read_ConversationDto>();
return null;
}
// AI conversation endpoints
public async Task<List<aiResponseDto>> GetAiCurrentResponses(int companyId,string aiKeyUser)
{
var response = await _baseController.Get($"{BaseRoute}ai/CurrentResponse/{companyId}/{aiKeyUser}");
if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<List<aiResponseDto>>();
return new();
}
public async Task<aiResponseDto?> AiNewResponse(aiNewResponseDto dto)
{
var response = await _baseController.Post($"{BaseRoute}ai/NewResponse", dto);
if (response.IsSuccessStatusCode)
return await response.Content.ReadFromJsonAsync<aiResponseDto>();
return null;
}
}
}