using HotelPms.Client.Blazor.Util; using HotelPms.Data.UseInfo; using HotelPms.Share.Util; using Microsoft.AspNetCore.Components.Forms; using Microsoft.JSInterop; using MudBlazor; using System.Text.Json.Serialization; using static HotelPms.Client.Blazor.Util.SystemEnum; namespace HotelPms.Client.Blazor.Models { /// /// 利用日毎 /// 空白行が必要のため、 /// 全部文字列にする /// public class RoomTypeInputRow : EditRow { public enum ColType : int { ID = 0, Name, Count, } public RoomTypeInputRow() { Cells.Add(new ViewModel.ValidField { Name = ColType.ID.ToString(), MaxLenth = 3, InputChar = EInputChar.Num }); Cells.Add(new ViewModel.ValidField { Name = ColType.Name.ToString() }); Cells.Add(new ViewModel.ValidField { Name = ColType.Count.ToString(), MaxLenth = 3, InputChar = EInputChar.Num }); } protected override void Dispose(bool disposing) { if (!disposing) { base.Dispose(false); } } /// /// 関連伝票情報 /// [JsonIgnore(Condition = JsonIgnoreCondition.Always)] public List DataList { get; set; } = new List(); /// /// 値変更あり /// /// /// public override bool IsValueChanged(int index, string inputText) { if (index == (int)ColType.ID) { if (DataList.Count == 0) { return true; } return CConvert.ToInt(inputText) != DataList[0].RoomTypeID; } else if (index == (int)ColType.Count) { return CConvert.ToInt(inputText) != DataList.Count; } else { return false; } } /// /// DOMの表示値 /// /// /// /// public async Task GetInputValue(int index, IJSRuntime JSRuntime) { return await Cells[index].Ref.GetInputValue(JSRuntime); } /// /// 表示の値の復元 /// /// public void RestoreText(ColType index) { SetCellText((int)index, GetDataField((int)index)); } /// /// データの値 /// /// /// public string GetDataField(int index) { if (index == (int)ColType.ID) { return DataList.Count == 0 ? string.Empty : DataList[0].RoomTypeID.ToString(); } else if (index == (int)ColType.Count) { return DataList.Count.ToString(); } else { return string.Empty; } } public void SetDataField(int index, string inputText) { if (index == (int)ColType.ID) { foreach(UseRoom item in DataList) { item.RoomTypeID = CConvert.ToInt(inputText); } } else if (index == (int)ColType.Count) { } } } }