This commit is contained in:
mmrbnjd
2025-08-18 17:30:02 +03:30
parent 067607d98a
commit 561f58784c
15 changed files with 588 additions and 282 deletions

View File

@@ -1,5 +1,6 @@
using AutoMapper;
using Common.Dtos;
using Hushian.Application.Contracts;
using Hushian.Application.Contracts.Persistence;
using Hushian.Application.Models;
using Hushian.Domain.Entites;
@@ -8,65 +9,79 @@ using System.Linq;
namespace Hushian.Application.Services
{
public class AIService
{
private readonly IGenericRepository<AIA> _aiaRepository;
private readonly IMapper _mapper;
public class AIService
{
private readonly IGenericRepository<AIA> _aiaRepository;
private readonly IGenericRepository<Prompt> _promprtRepository;
private readonly Iaiass _aiass;
public AIService(IGenericRepository<AIA> aiaRepository, IMapper mapper)
{
_aiaRepository = aiaRepository;
_mapper = mapper;
}
public async Task<ResponseBase<aiResponseDto>> NewRequest
(aiNewResponseDto dto)
{
ResponseBase<aiResponseDto> response = new();
try
{
string responeai="همین جوری";
bool sucessresponseai =!false;
public AIService(IGenericRepository<AIA> aiaRepository, Iaiass aiass, IGenericRepository<Prompt> promprtRepository)
{
_aiaRepository = aiaRepository;
_aiass = aiass;
_promprtRepository = promprtRepository;
}
public async Task<ResponseBase<aiResponseDto>> NewRequest
(aiNewResponseDto dto)
{
ResponseBase<aiResponseDto> response = new();
try
{
string responeai = "";
bool sucessresponseai = false;
var prompts = await _promprtRepository.Get()
.Where(w => w.CompanyID == dto.companyId).Select(s => s.Test).ToArrayAsync();
var requsetai= await _aiass.SendQuestion(new aiRequestModel(dto.requestText,prompts));
if(requsetai.Success)
{
sucessresponseai = true;
responeai = requsetai.Value;
}
else
{
response.Errors = requsetai.Errors;
}
var entity = new AIA
{
CompanyID = dto.companyId,
aiKeyUser = dto.aiKeyUser,
Request = dto.requestText,
Response = responeai,
Cdatetime = DateTime.Now
};
var added = await _aiaRepository.ADD(entity);
{
CompanyID = dto.companyId,
aiKeyUser = dto.aiKeyUser,
Request = dto.requestText,
Response = responeai,
Cdatetime = DateTime.Now
};
var added = await _aiaRepository.ADD(entity);
if(sucessresponseai)
response.Value = new() { dateTime=added.Cdatetime,responseText=added.Response,requestText=added.Request};
response.Success = sucessresponseai;
}
catch (Exception)
{
response.Errors.Add("خطا در ذخیره سازی");
}
return response;
}
if (sucessresponseai)
response.Value = new() { dateTime = added.Cdatetime, responseText = added.Response, requestText = added.Request };
response.Success = sucessresponseai;
}
catch (Exception)
{
response.Errors.Add("خطا در ذخیره سازی");
}
return response;
}
public async Task<List<aiResponseDto>> GetCurrent(int companyId, string aiKeyUser)
{
return await _aiaRepository
.Get()
.Where(w => w.CompanyID == companyId && w.aiKeyUser == aiKeyUser && w.Cdatetime.AddHours(3) >= DateTime.Now)
.OrderBy(o => o.ID)
.Select(s=>new aiResponseDto() { responseText = s.Response, requestText = s.Request,dateTime=s.Cdatetime})
.ToListAsync();
}
public async Task<List<aiResponseDto>> GetCurrent(int companyId, string aiKeyUser)
{
return await _aiaRepository
.Get()
.Where(w => w.CompanyID == companyId && w.aiKeyUser == aiKeyUser && w.Cdatetime.AddHours(3) >= DateTime.Now)
.OrderBy(o => o.ID)
.Select(s => new aiResponseDto() { responseText = s.Response, requestText = s.Request, dateTime = s.Cdatetime })
.ToListAsync();
}
//public async Task<bool> DeleteEntry(int id, int companyId)
//{
// var entity = await _aiaRepository.Get().FirstOrDefaultAsync(f => f.ID == id && f.CompanyID == companyId);
// if (entity == null) return false;
// return await _aiaRepository.DELETE(entity);
//}
}
//public async Task<bool> DeleteEntry(int id, int companyId)
//{
// var entity = await _aiaRepository.Get().FirstOrDefaultAsync(f => f.ID == id && f.CompanyID == companyId);
// if (entity == null) return false;
// return await _aiaRepository.DELETE(entity);
//}
}
}