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 { /// /// 帳票ID /// public int ReportID { get; set; } = 0; /// /// 帳票名 /// public string ReportName { get; set; } /// /// 項目一覧(S_ReportCol) /// public List OrgColList { get; set; } /// /// 出力パターンID /// public int OutputID { get; set; } /// /// 出力パターン名 /// public string OutputName { get; set; } /// /// 出力パターン候補一覧 /// internal List OutputList { get; set; } /// /// 第一ソート順 /// public string Sort1 { get; set; } /// /// 第二ソート順 /// public string Sort2 { get; set; } public List Rows { get; set; } /// /// 帳票設定データの作成 /// /// /// /// public static async Task 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 list = new List(); 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(), OrgColList = list, Rows = new List(), }; //Dict化 Dictionary dict = new Dictionary(); 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; } } }