EchoTex_Payroll/HRM.DA/DA/OpenAIDA/OpenAIDA.cs
2026-07-12 18:07:59 +06:00

123 lines
4.0 KiB
C#

using Ease.Core.DataAccess;
using HRM.BO;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.DirectoryServices.Protocols;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HRM.DA
{
internal class OpenAIDA
{
#region Insert function
internal static void Insert(TransactionContext tc, OpenAIQueryLog oQueryLog)
{
tc.ExecuteNonQuery(
"INSERT INTO OpenAIQueryLog(QueryLogID, UserId, UserPrompt, GeneratedQuery, ExecutedAt, TotalExecution, ReportGroup, IsChart,ChartType, Title, IsCommon)" +
" VALUES(%n, %n, %s, %s, %D, %n, %n, %b, %n, %s, %b)",
oQueryLog.ID, oQueryLog.UserId, oQueryLog.UserPrompt, oQueryLog.GeneratedQuery, oQueryLog.ExecutedAt, oQueryLog.TotalExecution,
(int)oQueryLog.ReportGroup, oQueryLog.IsChart, (int)oQueryLog.ChartType, oQueryLog.Title, oQueryLog.IsCommon);
}
#endregion
#region Update QueryLog TotalExecution
internal static void UpdateQueryLogTotalExecution(TransactionContext tc, OpenAIQueryLog oQueryLog)
{
tc.ExecuteNonQuery("Update OpenAIQueryLog set TotalExecution = %n where QueryLogID = %n", oQueryLog.TotalExecution, oQueryLog.ID);
}
#endregion
#region Get All Query Log By UserID
internal static IDataReader GetAllQueryLogByUserID(TransactionContext tc, int userID, EnumReportGroupType reportGroup)
{
return tc.ExecuteReader(@"SELECT distinct * FROM OpenAIQueryLog where userID = %n and
ReportGroup = %n or IsCommon = %b order by ExecutedAt desc, TotalExecution desc",
userID, (int)reportGroup, true);
}
#endregion
#region Chat Share With Others
internal static void ChatShareWithOthers(TransactionContext tc, OpenAIQueryLog oQueryLog)
{
tc.ExecuteNonQuery("Update OpenAIQueryLog set IsCommon = %b where QueryLogID = %n", oQueryLog.IsCommon, oQueryLog.ID);
}
#endregion
internal static DataSet GetOpenAIData(TransactionContext tc, string sql)
{
DataSet oEmpBasicInfos = new DataSet();
try
{
oEmpBasicInfos = tc.ExecuteDataSet(sql);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return oEmpBasicInfos;
}
internal static DataTable GetColumnDefinitions(TransactionContext tc, EnumReportGroupType reportGroupType)
{
DataTable oColumnDefinition = new DataTable();
string sql = "";
try
{
sql = SQLParser.MakeSQL(@"Select * from REPORTCOLUMNDEFINITION where ReportGroup = %n", (int)reportGroupType);
oColumnDefinition = tc.ExecuteDataTable(sql);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return oColumnDefinition;
}
internal static DataTable GetAllType(TransactionContext tc, EnumReportGroupType reportGroupType)
{
DataTable oColumnDefinition = new DataTable();
string sql = "";
try
{
if (reportGroupType == EnumReportGroupType.Salary)
{
//sql = SQLParser.MakeSQL("select distinct(Head) as Head from vwEmployeeSalary");
sql = SQLParser.MakeSQL("SELECT DISTINCT DESCRIPTION AS Head FROM SALARYMONTHLYDETAIL WHERE ITEMGROUP IN (1,2,3,5,8)");
}
else if(reportGroupType == EnumReportGroupType.Leave)
{
sql = SQLParser.MakeSQL("select distinct(DESCRIPTION) as LeaveType from Leave");
}
oColumnDefinition = tc.ExecuteDataTable(sql);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return oColumnDefinition;
}
internal static DataTable GetColumnRelations(TransactionContext tc, EnumReportGroupType reportGroupType)
{
DataTable oColumnRelations = new DataTable();
string sql = "";
try
{
sql = SQLParser.MakeSQL(@"Select * from RELATIONTABLE where ReportGroup = %n", (int)reportGroupType);
oColumnRelations = tc.ExecuteDataTable(sql);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return oColumnRelations;
}
internal static IDataReader TotalOpenAICall(TransactionContext tc)
{
return tc.ExecuteReader("SELECT COUNT(*) FROM OpenAIQueryLog");
}
}
}