using Google.Protobuf;
using Grpc.Core;
using Grpc.Net.Client;
using HotelPms.Data.Client;
using HotelPms.Data.Common;
using HotelPms.Data.Master;
using HotelPms.Share.Util;
using System;
using System.Data;
using System.Threading.Tasks;
using HotelPms.Data;
using System.Collections.Generic;
using HotelPms.Data.Common.Pagination;
using System.Text.Json;
using System.Threading;
namespace HotelPms.DataAccessGrpc.Client
{
public class OutputAccess : IDisposable
{
///
/// チャネル
///
public GrpcChannel Channel { get; private set; } = null;
public OutputCore.OutputCoreClient Client { get; private set; } = null;
public OutputAccess(GrpcChannel channel)
{
Channel = channel;
Client = new OutputCore.OutputCoreClient(Channel);
}
public void Dispose()
{
}
public bool Exists(string pMachineName,string pUserName,int pReportID,int pID)
{
return GrpcClient.ExecuteScalarSync(Channel, $"IF EXISTS(SELECT 1 FROM M_Output WHERE MachineName = N'{pMachineName}' AND UserName = N'{pUserName}' AND ReportID = {pReportID} AND ID = {pID}) SELECT 1 ELSE SELECT 0") == "1";
}
public async Task ExistsAsync(string pMachineName,string pUserName,int pReportID,int pID)
{
return await GrpcClient.ExecuteScalar(Channel, $"IF EXISTS(SELECT 1 FROM M_Output WHERE MachineName = N'{pMachineName}' AND UserName = N'{pUserName}' AND ReportID = {pReportID} AND ID = {pID}) SELECT 1 ELSE SELECT 0") == "1";
}
public async Task OutputStream(PagingRequest request)
{
FileGrpcData data = null;
request.Table = "M_Output";
string json = JsonSerializer.Serialize(request);
using (var call = Client.OutputStream(GrpcClient.CreateDataRequest(2, json)))
{
var reaponseStream = call.ResponseStream;
//データの取得
while (await reaponseStream.MoveNext(CancellationToken.None))
{
data = reaponseStream.Current;
}
}
return data;
}
public async Task GetPageData(PagingRequest request)
{
request.Table = "M_Output";
string json = JsonSerializer.Serialize(request);
return await Client.GetDataAsync(GrpcClient.CreateDataRequest(1, json));
}
public async Task