using HotelPms.Client.Blazor.Util;
|
using HotelPms.Data;
|
using HotelPms.Data.Common;
|
using Grpc.Net.Client;
|
using System;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.Linq;
|
using System.Threading.Channels;
|
using System.Threading.Tasks;
|
using HotelPms.Data.Client;
|
|
namespace HotelPms.Client.Blazor.ViewModel
|
{
|
public class ColSettingData
|
{
|
/// <summary>
|
/// 帳票ID
|
/// </summary>
|
public int ReportID { get; set; } = 0;
|
|
/// <summary>
|
/// 帳票名
|
/// </summary>
|
public string ReportName { get; set; }
|
|
/// <summary>
|
/// 項目一覧(S_ReportCol)
|
/// </summary>
|
public List<string> OrgColList { get; set; }
|
|
/// <summary>
|
/// 出力パターンID
|
/// </summary>
|
public int OutputID { get; set; }
|
|
/// <summary>
|
/// 出力パターン名
|
/// </summary>
|
public string OutputName { get; set; }
|
|
/// <summary>
|
/// 出力パターン候補一覧
|
/// </summary>
|
internal List<HotelPms.Data.Master.Output> OutputList { get; set; }
|
|
/// <summary>
|
/// 第一ソート順
|
/// </summary>
|
public string Sort1 { get; set; }
|
|
/// <summary>
|
/// 第二ソート順
|
/// </summary>
|
public string Sort2 { get; set; }
|
|
public List<ColSettingRow> Rows { get; set; }
|
|
|
/// <summary>
|
/// 帳票設定データの作成
|
/// </summary>
|
/// <param name="reportID"></param>
|
/// <param name="channel"></param>
|
/// <returns></returns>
|
public static async Task<ColSettingData> Create(int reportID, GrpcChannel channel)
|
{
|
string name = string.Empty;
|
GrpcSet grpcSet = await GrpcClient.GetDataSet(channel, (int)ESetActionType.ColSetting, $"{Environment.MachineName},{EnvironmentSetting.UserName},{reportID}");
|
if (grpcSet.ErrNo != 0) { return null; }
|
|
using (DataTable dataTable = grpcSet.Tables[0].ToDataTable())
|
{
|
if (dataTable.Rows.Count > 0)
|
{
|
name = dataTable.Rows[0]["Name"].ToString();
|
}
|
}
|
|
List<string> list = new List<string>();
|
using (DataTable dataTable = grpcSet.Tables[3].ToDataTable())
|
{
|
foreach(DataColumn col in dataTable.Columns)
|
{
|
list.Add(col.ColumnName);
|
}
|
}
|
|
//取得する(列設定情報)
|
ColSettingData data = new ColSettingData
|
{
|
ReportID = reportID,
|
ReportName = name,
|
OutputList = grpcSet.Tables[1].Convert<HotelPms.Data.Master.Output>(),
|
OrgColList = list,
|
Rows = new List<ColSettingRow>(),
|
};
|
|
//Dict化
|
Dictionary<int, HotelPms.Data.Master.Output> dict = new Dictionary<int, HotelPms.Data.Master.Output>();
|
foreach (HotelPms.Data.Master.Output item in data.OutputList) { dict.Add(item.ID, item); }
|
|
//明細
|
using (DataTable detail = grpcSet.Tables[2].ToDataTable())
|
{
|
foreach (DataRow row in detail.Rows)
|
{
|
Data.Master.OutputItem outputItem = new Data.Master.OutputItem();
|
outputItem.ConvertDataRow(row);
|
Data.Master.Output parent = null;
|
if (!dict.TryGetValue(outputItem.OutputID, out parent)) { continue; }
|
parent.Items.Add(outputItem);
|
}
|
}
|
|
return data;
|
}
|
}
|
}
|