using Grpc.Core;
using HotelPms.Data;
using HotelPms.Data.UseInfo;
using HotelPms.GrpcService.Util;
using HotelPms.Share.Data;
using HotelPms.Share.IO;
using HotelPms.Share.Util;
namespace HotelPms.GrpcService
{
///
/// ■攻略
/// 1.Use.proto(message:Use、UseTable;Service:UseCore) ⇒ projectファイルのInclude
/// 2.Use.cs(両方)
/// 3.UseTable.cs(両方)
/// 4.UseService.cs(サーバー側) ⇒ StartupでMapGrpcServiceの処理が必要
/// 5.UseAccess.cs(クライアント側)
///
public class UseService : UseCore.UseCoreBase
{
#region ★★★★★ Declartions ★★★★★
private static string TableName = "D_Use";
private readonly ILogger _logger;
private IConfiguration m_Configuration;
#endregion
#region ★★★★★ Property ★★★★★
#endregion
#region ★★★★★ Class Event ★★★★★
public UseService(ILogger logger, IConfiguration configuration)
{
_logger = logger;
m_Configuration = configuration;
}
#endregion
#region ★★★★★ Private Function ★★★★★
///
/// 利用情報取得
///
///
///
private Use? Get(DataRequest request)
{
try
{
OperationLog.Instance.WriteLog($"データ請求:{request.ToString()}");
using MsSqlNet msSqlNet = new(Setting.HotelPmsDB);
Use? item = Use.Get(CConvert.ToInt(request.Data), msSqlNet);
OperationLog.Instance.WriteLog("データ読込完了");
return item;
}
catch(Exception ex)
{
OperationLog.Instance.WriteLog($"UseService.Get({request.Data}):{ex.Message}");
return null;
}
}
///
/// 利用データ更新
///
///
///
private DataResult Set(Use use)
{
DataResult result = new() { ErrNo = 0, ErrData = string.Empty };
try
{
OperationLog.Instance.WriteLog($"■利用情報保存開始:{use.ID}");
string sql = use.ToSql();
OperationLog.Instance.WriteLog($"利用情報保存Sql生成:{sql}");
using MsSqlNet msSqlNet = new(Setting.HotelPmsDB);
if (!msSqlNet.ExecuteNonQueryWithTran(sql))
{
result.ErrNo = msSqlNet.ErrNo;
result.ErrData = msSqlNet.ErrInfo;
}
OperationLog.Instance.WriteLog($"利用情報保存結果:{result.ErrNo}.{result.ErrData}");
//非同期実行
if (result.ErrNo == 0)
{
Task.Run(() =>
{
OperationLog.Instance.WriteLog($"非同期更新:{use.ID}");
using MsSqlNet msSqlNet = new(Setting.HotelPmsDB);
int cnt = msSqlNet.ExecuteNonQuery($"EXECUTE SaveUseAfterAsync {use.ID}");
OperationLog.Instance.WriteLog($"非同期更新結果:{cnt},ErrNo:{msSqlNet.ErrNo},ErrInfo:{msSqlNet.ErrInfo}");
});
}
}
catch(Exception ex)
{
OperationLog.Instance.WriteLog($"UseService.Set():{ex.Message}");
result.ErrNo = 999999;
result.ErrData = ex.Message;
}
return result;
}
#endregion
#region ★★★★★ Public Function ★★★★★
///
/// 同期実行
///
///
///
///
public override Task